2023年語(yǔ)音壓縮存儲(chǔ)與回放實(shí)驗(yàn)報(bào)告_第1頁(yè)
2023年語(yǔ)音壓縮存儲(chǔ)與回放實(shí)驗(yàn)報(bào)告_第2頁(yè)
2023年語(yǔ)音壓縮存儲(chǔ)與回放實(shí)驗(yàn)報(bào)告_第3頁(yè)
2023年語(yǔ)音壓縮存儲(chǔ)與回放實(shí)驗(yàn)報(bào)告_第4頁(yè)
2023年語(yǔ)音壓縮存儲(chǔ)與回放實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

DSP課程設(shè)計(jì)

實(shí)驗(yàn)報(bào)告

語(yǔ)音壓縮、存儲(chǔ)和回放

院系:電子信息工程學(xué)院

小組成員:

通信0607王穎06282023

自動(dòng)化0601王燕06212023

目錄

一、設(shè)計(jì)任務(wù)書(shū)封面1

二、設(shè)計(jì)內(nèi)容與規(guī)定3

三、設(shè)計(jì)算法原理說(shuō)明4

四、程序設(shè)計(jì)、調(diào)試與結(jié)果分析7

CMD程序,C語(yǔ)言程序7

調(diào)試過(guò)程15

波形與數(shù)據(jù)顯示16

五、設(shè)計(jì)(安裝)與調(diào)試的體會(huì)17

六、參考文獻(xiàn)18

語(yǔ)音的壓縮、存儲(chǔ)與回放

一、設(shè)計(jì)規(guī)定與目的

(1)使用DSP實(shí)現(xiàn)語(yǔ)音壓縮和解壓縮的基本算法,算法類(lèi)型自定,例如可以采用G.711、

G.729等語(yǔ)音壓縮算法。

(2)采用A/D轉(zhuǎn)換器從MIC輸入口實(shí)時(shí)采集語(yǔ)音信號(hào),進(jìn)行壓縮后存儲(chǔ)到DSP的片內(nèi)和

片外RAM存儲(chǔ)器中,存儲(chǔ)時(shí)間不小于10秒。

(3)存儲(chǔ)器存滿(mǎn)之后,使用DSP進(jìn)行實(shí)時(shí)解壓縮,并從SPEAKER輸出口進(jìn)行回放輸出。

⑷使用指示燈對(duì)語(yǔ)音存儲(chǔ)和回放過(guò)程進(jìn)行指示。

發(fā)揮部分:

使用多種算法進(jìn)行語(yǔ)音的壓縮、存儲(chǔ)和解壓縮,比較它們之間的優(yōu)缺陷。

二、實(shí)驗(yàn)?zāi)康?/p>

1、通過(guò)本實(shí)驗(yàn)掌握5402DSP片上外設(shè)多通道緩沖串行口mcbspo

2、學(xué)習(xí)掌握tic320ad50CODEC編譯碼器的內(nèi)部結(jié)構(gòu)、工作原理。

3、學(xué)習(xí)A律語(yǔ)音壓縮以及C語(yǔ)言下的編程方法。

三、實(shí)驗(yàn)原理

1.語(yǔ)音采集與輸出模塊

語(yǔ)音采集與輸出模塊采用的是TI公司推出的一款高性能的立體聲音頻Codec芯片TLC

320AD50C,內(nèi)置耳機(jī)輸出放大器,支持MIC和UNEIN兩種輸入方式(二選一),且對(duì)輸入

和輸出都具有可編程增益調(diào)節(jié)。AD50的模數(shù)轉(zhuǎn)換(ADCs)和數(shù)模轉(zhuǎn)換(DACs)部件高度集成

在芯片內(nèi)部,采用了先進(jìn)的Sigma-delta過(guò)采樣技術(shù),可以在8K到96K的頻率范圍內(nèi)提供

16bit、2Obit、24bit和32bit的采樣,ADC和DAC的輸出信噪比分別可以達(dá)成90dB和

lOOdB。與此同時(shí),AD50還具有很低的能耗,回放模式下功率僅為23mW,省電模式下

更是小于15uWe由于具有上述優(yōu)點(diǎn),使得AD50是一款非常抱負(fù)的音頻模擬I/O器件,

可以很好的應(yīng)用在隨聲聽(tīng)(如CD,MP3……)、錄音機(jī)等數(shù)字音頻領(lǐng)域⑵。由TLC320AD5

0C組成的語(yǔ)音輸入與輸出模塊不僅采樣率高最高可達(dá)96K,且外圍電路簡(jiǎn)樸,性?xún)r(jià)比高。

2.語(yǔ)音編碼

(1)概念:

語(yǔ)音編碼一般分為兩類(lèi):一類(lèi)是波形編碼,一類(lèi)是被稱(chēng)為“聲碼器技術(shù)”的編碼。

PCM編碼即脈沖編碼調(diào)制。

波形編碼的最簡(jiǎn)樸形式就是脈沖編碼調(diào)制(PulsecodemoduIation),這種方式

將語(yǔ)音變換成與其幅度成正比的二進(jìn)制序列,而二進(jìn)制數(shù)值往往采用脈沖表達(dá),并用脈沖對(duì)

采樣幅度進(jìn)行編碼,所以叫做脈沖編碼調(diào)制。

脈沖編碼調(diào)制沒(méi)有考慮語(yǔ)音的性質(zhì),所以信號(hào)沒(méi)有得到壓縮。

(2)量化:

脈沖編碼調(diào)制用同等的量化級(jí)數(shù)進(jìn)行量化,即采用均勻量化,而均勻量化是基本的量化

方式。但是均勻量化有缺陷,在信號(hào)動(dòng)態(tài)范圍較大而方差較小的時(shí)候,其信噪比會(huì)下降。

國(guó)際上有兩種非均勻量化的方法:A律和u律,u律是最常用的一種。在美國(guó),7位u律是

長(zhǎng)途電話(huà)質(zhì)量的標(biāo)準(zhǔn)。而我國(guó)采用的是A律壓縮,并且有標(biāo)準(zhǔn)的A律PCM編碼芯片。

⑶DPCM&ADPCM:

減少傳輸比特率的方法之一是減少編碼的信息量,這要消除語(yǔ)音信號(hào)中的冗余度。相鄰

的語(yǔ)音樣本之間存在明顯的相關(guān)性,因此對(duì)相鄰樣本間的差信號(hào)進(jìn)行編碼,便可使信息量得

到壓縮。由于差分信號(hào)比原語(yǔ)音信號(hào)的動(dòng)態(tài)范圍和平均能量都小。這種編碼叫Differentia

1PCM,簡(jiǎn)稱(chēng)DPCM,即差分脈沖編碼調(diào)制。

ADPCM即自適應(yīng)差分脈沖編碼調(diào)制,是涉及短時(shí)預(yù)測(cè)的編碼系統(tǒng)。CCITT(國(guó)際電報(bào)

電話(huà)征詢(xún)委員會(huì))在1984年提出的32kbit/s的編碼器建議就是采用ADPCM作為長(zhǎng)途傳輸

中的國(guó)際通用語(yǔ)音編碼方案。這種ADPCM編碼方案達(dá)成64kbit/sPCM的語(yǔ)音傳輸質(zhì)

量,并具有很好的抗誤碼性能。

(4)a律壓縮

a律壓縮示意圖

A律壓縮編碼表

A律壓縮編碼表

線(xiàn)性輸入編碼壓縮編碼

0000000wxyza000wxyz

OOOOO0Iwxyza00Iwxyz

000001wxyzab0lOwxyz

000Olwxyzabc01Iwxyz

0001wxyzabed1OOwxyz

001wxyzabede101wxyz

01wxyzabcdef11Owxyz

1wxyzabcdefg111wxyz

采用DSP可以直接對(duì)PCM編碼后的語(yǔ)音信號(hào)進(jìn)行口律和A律壓縮。圖1是DSP硬

件實(shí)現(xiàn)數(shù)據(jù)壓縮解壓的簡(jiǎn)樸流程,DSP將傳輸來(lái)的壓縮后的數(shù)據(jù)進(jìn)行解壓成16位或者3

2位,然后對(duì)解壓后的數(shù)據(jù)進(jìn)行分析、解決,最后將解決后的數(shù)據(jù)按照規(guī)定壓縮成8位的數(shù)

據(jù)格式輸出到相應(yīng)設(shè)備,供其他設(shè)備讀取。

圖1數(shù)據(jù)壓縮解壓流程

圖2是DSP將數(shù)據(jù)解壓的值,DSP將壓縮的8位數(shù)據(jù)解壓成16位的DSP通用數(shù)據(jù)格

式,其中高13位為解壓后的數(shù)據(jù),低3位補(bǔ)0。這是由于6.711的A律壓縮只能對(duì)13

位數(shù)據(jù)操作。DSP將解壓后的數(shù)據(jù)放在緩沖串口的發(fā)送寄存器中,只要運(yùn)營(yíng)發(fā)送指令,緩沖

串口就會(huì)將數(shù)據(jù)發(fā)送出去。緩沖串口對(duì)接受數(shù)據(jù)的解壓過(guò)程和壓縮過(guò)程完全相反。圖3是|J

律數(shù)據(jù)解壓的示意圖。

15320

發(fā)送緩沖器'S—I0_

A律一

圖2A律數(shù)據(jù)解壓

15210

發(fā)送緩沖器:值I0二

u律

圖3口律數(shù)據(jù)解壓

DSP內(nèi)部的緩沖串口(McBSPs)帶有硬件實(shí)現(xiàn)的p律/A律壓縮解壓,用戶(hù)只需要在相

應(yīng)寄存器中進(jìn)行設(shè)立就可以了。

在進(jìn)行A律壓縮時(shí),采樣后的12位數(shù)據(jù),默認(rèn)其最高位為符號(hào)位,壓縮時(shí)要保持最高位

即符號(hào)位不變,原數(shù)據(jù)的后11位要壓縮成7位。這7位碼由3位段落碼和4位段內(nèi)碼組

成。具體的壓縮變換后的數(shù)據(jù)根據(jù)后11位數(shù)據(jù)大小決定.

表2A律數(shù)據(jù)壓縮表

12位碼(十進(jìn)制)■階符號(hào)位段落碼(二進(jìn)制)段內(nèi)碼(二進(jìn)制)

01111

16-31100010000-1111

32?63200100000?1111

64~127400110000~1111

3?255801000000-1111

256-5111601010000-1111

51270233201100000~1111

1024~20476401110000-1111

除對(duì)串行口數(shù)據(jù)實(shí)現(xiàn)壓擴(kuò)解決外,這套硬件在McBSP不使用時(shí)還可以當(dāng)作一個(gè)特殊的

解決單元對(duì)內(nèi)部數(shù)據(jù)實(shí)現(xiàn)壓擴(kuò)解決,他有兩種實(shí)現(xiàn)方法。

法一:當(dāng)串行口的發(fā)送和接受部分都處在復(fù)位狀態(tài)時(shí),DRR1和DXR1內(nèi)部通過(guò)壓擴(kuò)邏輯

連接在一起,數(shù)據(jù)從DXR1寫(xiě)入并根據(jù)XCOMPAND解決,然后根據(jù)RCOMPAND再解決,在

4個(gè)CPU時(shí)鐘后從DRR1中讀出數(shù)據(jù)。該解決比軟件實(shí)現(xiàn)快,不利之處在于解決完后沒(méi)有同

步信息告知CPU和DMA。

法二:在數(shù)據(jù)環(huán)回模式下,McBSP也實(shí)現(xiàn)了一種內(nèi)連。數(shù)據(jù)解決與第一種方法相同,但它

可以提供中斷信號(hào)(或同步事件)給CPU(或DMA)。這里數(shù)據(jù)解決的時(shí)間是根據(jù)串行口的比

特律擬定的。

此外,在通常情況下McBSP先傳輸信號(hào)的高位后傳輸?shù)臀?,但是在字長(zhǎng)為8比特的數(shù)據(jù)傳

輸時(shí),McBSP提供了比特倒序的功能,即可以先傳輸?shù)臀缓髠鬏敻呶弧?/p>

在本實(shí)驗(yàn)中,我們通過(guò)軟件編程來(lái)完畢線(xiàn)性碼轉(zhuǎn)換成A律。

語(yǔ)音信號(hào)通常是小信號(hào)概率大,大信號(hào)出現(xiàn)的概率小,為提高小信號(hào)時(shí)的量化信躁比,

壓縮比特速率,可為非線(xiàn)性量化。語(yǔ)音壓縮是把16位的數(shù)據(jù)比特轉(zhuǎn)化為8位數(shù)據(jù)比特,從

而到達(dá)語(yǔ)音壓縮的目的。

在主程序中通過(guò)A/D抽樣量化,可以得到16位的線(xiàn)性編碼,再由編碼表通過(guò)軟件計(jì)算得

到8位A律編碼,其中最高位為符號(hào)位,第6位到第4位為段落碼,低4位為段內(nèi)碼。將8

位的壓縮結(jié)果存儲(chǔ)到系統(tǒng)RAM中進(jìn)行緩存,根據(jù)抽樣率、語(yǔ)音存儲(chǔ)時(shí)間以及系統(tǒng)RAM的容

量設(shè)立語(yǔ)音存儲(chǔ)緩沖區(qū)的大小,待緩沖區(qū)存滿(mǎn)后,將緩沖區(qū)內(nèi)的數(shù)據(jù)進(jìn)行解壓縮,然后輸出

到SPEAKER接口輸出端。

若使用A/D轉(zhuǎn)換器,必須一方面對(duì)A/D轉(zhuǎn)換器進(jìn)行初始化設(shè)立,即設(shè)立A/D轉(zhuǎn)換器的

工作模式、輸入增益以及抽樣頻率等。

3.程序設(shè)計(jì)

(1)、程序流程

存儲(chǔ)器的分派(5402.cmd)

MEMORY

PAGE0:VECS:origin=0080h,length=0080h/*Interna1

ProgramRAM*/

PRAM:origin=7600h,1ength=80OOh/*Internal

ProgramRAM*/

PAGE1:SCRATCH:origin=0060h,length=0020h/*ScratchPad

DataRAM*/

DMARAM:origin=OCOOh,length=0300h/*DMA

buffer*/

DATA:origin=1100h,1ength=0080h/*In

ternalDataRAM*/

STACK:origin=118Oh,1ength=0560h/*Stack

MemorySpace*/

INRAM:origin=19OOh,length=0100h/*Internal

DataRAM*/

HPRAM0:origin=1A00h,length=0002h/*HPImem

oryaccessiblebyIiostandDSP*/

HPRAMI:origin=1A02h,1ength=028Oh/*HPI

memoryaccessiblebyHostandDSP*/

HPRAM2:origin=1C82h,length=0280h/*HPImemory

accessib1ebyHostandDSP*/

EXRAM:origin=lFlOh,1ength=9000h/*External

DataRAM*/

)

SECTIONS

.cinit>PRAMPAGE0

.text>PRAMPAGE0

.vectors>VECSPAGE0

initvar>PRAMPAGE0

detect>PRAMPAGE0

vrcprg>PRAMPAGE0

matprg>PRAMPAGE0

,stack>STACKPAGE1

.trap>SCRATCHPAGE1

.cons>EXRAMPAGE1

.data>EXRAMPAGE1

bss>EXRAMPAGE1

,cio>EXRAMPAGE1

,switch>EXRAMPAGE1

tables>EXRAMPAGE1

var>EXRAMPAGE1

svctab>EXRAMPAGE1/*SS_VLSPtable*/

vctab>EXRAMPAGE1/*VLSPtable*/

uvctab>EXRAMPAGE1/*UVLSPtable*/

cuvtab>EXRAMPAGE1/*StochaSticcodebook*/

cdbktab>EXRAMPAGE1/*variouscodebooktabies

*/

logtab>EXRAMPAGE1/*tablefcrlog2*/

powtab>EXRAMPAGE1/*tableforp]ow2*/

hamtab>EXRAMPAGE1/*tableforhamming*/

1gwtab>EXRAMPAGE1/*tableforlagwindow*/

acostab>EXRAMPAGE1/*tab1efora;rccos*/

sqrtab>EXRAMPAGE1/*tableforsquareroot

*/

acbtab>EXRAMPAGE1/*tabieforthresho1dsina

cb*/

pm03tab>EXRAMPAGE1tableforx"(-0.3)

computation*/

costab>EXRAMPAGE1/*tableforcosine*/

V23>INRAMPAGE1

FSK>INRAMPAGE1

hpibuffO>HPRAMOPAGE1

hpibuff1>HPRAMlPAGE1

hpibuff2>HPRAM2PAGE1

dmabuff>DMARAMPAGE1

}

/*主程序設(shè)計(jì)*/

/*語(yǔ)音采集及回放程序*/

/*用A律進(jìn)行壓縮及解壓*/

/*采用AD50進(jìn)行A/D,D/A轉(zhuǎn)換*/

/火燈循環(huán)閃爍程序開(kāi)始*/

/*L0:錄音*/

/*L1:放音*/

#include<type.h>/*頭文獻(xiàn)*/

#include<board.h>

#inc1ude<codec.h>

#include<mcbsp54.h>

/*宏定義*/

#defineoSIGN_BIT(0x80)/*SignbitforaA-lawbyte.*/

#defineoQUANT_MASKO(oxf)?>/*Quantizationfieldmask.*/

#defineNSEGS*8)。/*NumberofA-lawsegments.*/

#define<>SEG_SHIFT(4)oo/*Leftshiftforsegmentnumber.

*/

#defineSEG_MASK(Ox70)“*Segmentfieldmask.*/

/*函數(shù)聲明

*/

voiddelay(sl6period);

voidled(sl6ent);

voidinitcodec(void);

voidflashenable(void);

unsignedchardata2a1aw(si6pcm_val);

intalaw2data(unsignedcharoa_va1);

staticintsearch(intval,short*?^table,intsize);

/*全局變量*/

HANDLEhHandset;

s16data;

sl6datal;

ul6i=0;

ul6temp1;

ul6j=0;

u16k,1=0;

u8temp2;

ul6buffer[20230];

staticshortseg_end[8]={OxlF,0x3F,0x7F,OxFF,0xlFF,0x3FF,0

x7FF,OxFFF);

/*主函數(shù)*/

voidmain()

if(brd_init(100))

return;

led(2);//閃燈兩次

initcodec();//初始化codec

f1ashenable();〃選擇片外FLASH為片外存儲(chǔ)器

/*

delay(100);

brdledtogg1e(BRD_LEDO):

for(i=0x9000;i<0xefff;i++)

(

REG_WRITE(i,*(volatileul6*)DRR1_ADDR(HANDSET_C0DEC));

delay(20);

)

brd_ledtoggle(BRDLED1);

delay(200);

for(i=0x9000;i<0xefff;i++)

(

*(volatileu16*)DXR1_ADDR(HANDSET_CODEC)-REG_READ(i);

delay(20);

}

brd_1ed_toggle(BRD_LED2);

*/

while(1)

(

while(!MCBSP_RRDY(HANDSET_CODEC)){};//等待接受h

andset處的采樣

brd1edtoggle(BRD_LEDO);

data=*(volatileul6*)DRR1_ADDR(HANDSET_CODEC);//從hands

et處讀取采樣

templ=data2alaw(data);〃對(duì)采樣進(jìn)行a律

壓縮

/*把低地址數(shù)據(jù)放在高八位高地址數(shù)據(jù)放在低八位*/

i=i+1;

oif(i%2==l)

00{

buffer[j]=(templ<<=8);

o/*奇數(shù)數(shù)據(jù)左移8位templ=abcdefghOOOOOOO0

g?>buffer[p1*/

oao)

else

3(

oobuffer[j]=(buffer[j]Itempi);

g/*偶數(shù)數(shù)據(jù)與temp1取或組成新的數(shù)據(jù)

buffer[j]=ab

cdefghiabcdefghi*/

gj++;〃j加1

0)

if(i>=40000)

8(

g}

oif(j>=20230)

6(

。j=0;

。wbrd_led_disab1e(BRD_LEDO);

。?>brd1ed_toggle(BRDLED1);

//點(diǎn)亮二極管1表達(dá)放

音開(kāi)始

/*放音部分

*/

for(k=0;k<40000;k++)

06(

。08if(k%2==0)

0b0(

。。temp2=(buffer[1]>>8)&OxOff;

08d}

。qelse

000{

。^temp2=buffer[l]&OxOff;

。。1++;

oo}

ooif(l>=20230)

。。1=0;

00data1=a1aw2data(temp2);//a律解壓

while(!MCBSP_XRDY(HANDSET_CODEC)){};

3"(volatileu16*)DXRIADDR(HANDSETCODEC)=datai;〃將

數(shù)據(jù)寫(xiě)入D/A轉(zhuǎn)換器

?)

/*放音結(jié)束

o。brdled_toggle(BRDLEDO);

brd_led_toggle(BRD_LED1);

00

000

)

)

)〃主程序結(jié)束

/*子函數(shù)*/

/*******延時(shí)******/

voiddelay(s16period)

inti,j;

for(i=0;i<period;i++)

for(j=0;j<period>>l;j++);

)

)

/*****大*閃燈****火*/

voidled(si6ent)

(

while(cnt—)

brd_led_toggle(BRD_LED0);//切換LED指示燈0的顯示狀

態(tài)

odelay(1000);

brd_1ed_toggle(BRD_LED1);

火lelay(1000);

obrd_led_toggle(BRD_LED2);

delay(1000);

)

)

/*****初始化codec**/

voidinitcodec(void)

/*OpenHandsetCodec獲取設(shè)立codec的句柄*/

hHandsetcodec_open(HANDSET_CODEC);/Acquirehandiet

ocodec

/*Setcodecparameters*/

codecdac_mode(hHandset,CODEC_DAC_15BIT);//DACin15-bi

tmode

codec_adc_mode(hHandset,C0DEC_ADC_15BIT);//ADCin15—

bitmode

codec_ain_gain(hHandset,CODEC_AIN6dB);//6dBgainona

na1oginputtoADC

codec_aout_gain(hHandset,C0DEC_A0UT_MINUS_6dB);

//-6dBgainonan

alogoutputfromDAC

codec_sample_rate(hllandset,SR_8000);//8KHzsa

mp1ingrate

)

/*****設(shè)立flash****/

voidflashenab1e(void)

I

CPLD_CTRL2_REGI=0x0010;

CPLD_DMCTRL_REG|=Ox0040;

}

/*****a律壓縮******/

unsignedchardata2alaw(s16pcmva1)。

tomask;

int。seg;

unsignedchareava1;

oif(pcm_va1>=0)

°(

。mask=0xD5;。//標(biāo)記(7th)bit=1

。}

oelse

°(

emask=0x55;抽//標(biāo)記bit=0

pcm_va1=-pcm_va1;

d

。//Convertthesealedmagnitudetosegmentnumber.

oseg=search(pcm_va1,seg_end,8);

//Combinethesign,segment,andquantizationbits.

if(seg>=8)o//outofran

ge,返回最大數(shù).

?>return(0x7F八mask);

?>else

aval=seg<<SEG_SHIFT;

if(seg<2)

oooavalI=(pcm_val?1)&QUANT_MASK;

oeIse

<?ava1(pcm_val>>seg)&QUANT_MASK;

oreturn(ava1mask);

。}

)

/****alaw的子程序**/

staticintsearch(intval,short沐tabie,intsize)

I

int;

ofor(i=0;i<size;i++)

°(

?if(va1<=*table++)

oreturn(i);

d

。return(size);

)

/*****a律解壓******/

intalaw2data(unsignedchar陽(yáng)_va1)

I

intt;

ointoseg;

a_val=0x55;

t=(a_val&QUANTJIASK)<<4;

?seg=((unsigned)a_val&SEG_MASK)>>SEG_SHIFT;

oif(seg==0)

。?t+=8;

?>t=(t>>3);

}

。if((seg<4)&&(seg>0))

°{

t+=0x108;

t=(t?(4-seg));

)

if(seg>3)

t+=0x108;

ot=(t<<=(seg-4));

return((a_val&SIGN_BIT)?t:—t);

)

/*結(jié)束*/

四.操作過(guò)程

1.將工程文獻(xiàn)夾放入C盤(pán)規(guī)定目錄下。

2.打開(kāi)CCS,Project-open,打開(kāi)工程文獻(xiàn)。

3.進(jìn)行編譯,連接。

4.根據(jù)錯(cuò)誤提醒,對(duì)buildoption進(jìn)行對(duì)的的設(shè)立,修改頭文獻(xiàn)途徑。

5.再編譯,連接,顯示沒(méi)有錯(cuò)誤。

6.loadprogram—run,此時(shí)三盞燈循環(huán)亮,之后程序開(kāi)始,第一盞燈亮

開(kāi)始錄音,一段時(shí)間后第二盞燈亮開(kāi)始放音,然后又開(kāi)始錄音。依次循環(huán).

五.調(diào)試過(guò)程與運(yùn)營(yíng)結(jié)果

1.觀(guān)測(cè)數(shù)據(jù)結(jié)果

Viewwatchwindow

我們輸入buffer,顯示此數(shù)組的值,如圖D所示。

2.觀(guān)測(cè)數(shù)據(jù)圖形

ViewGraphTimeFrequency

可以加入斷點(diǎn),然后按Animate動(dòng)態(tài)顯示。

分別觀(guān)測(cè)語(yǔ)音輸入(存放在變量data中)波形,壓縮后波形(tempi),解壓后輸出波形(da

ta1),圖形分別為A,B,Co

3.觀(guān)測(cè)存儲(chǔ)器中數(shù)據(jù)

ViewMemory

通過(guò)多次調(diào)試,使錄音時(shí)間在保持音質(zhì)的前提下達(dá)成5-6秒。

A.輸入波形(data)

用w□E3asE]E30?±

西

CJ

-stockoptiont。changethedefoultsize.-I

dComplete.

Errors,1Warnings,0Ramarks.

?.大回營(yíng)H

?/C54G2DSKZCFV.lDnct-Ntorosoft

B.壓縮后波形(temp1)

Z/C5402DSK/CPU_1-C54X-CodeCoaposexStudio-[GraphicalDisplay!RTj西岡

區(qū)E>1?NditYi?Eroj.ctp.bucFcefil.r<;ELOptionToolsDSF/BIOSNind。*K.lp

圖。7|>“-31。I??AW.,1iZIZI?(?-?=%.?-

inu.i>jtKiD.bo<3,掰蛆/"-*'?

用w|30醺回日回心

-stockoptiontochangethedefaultsize.

dComplete.

Errors,1Warnings,0Remarks.

],「「|\BMd廠(chǎng)1臼

陽(yáng)英。?.大通冷工|J

?c*o'X/C5402OSK/Crv_l.QBoel-Mtcrosoft々占二?叼。20。4

C.解壓縮后輸出波形(datal)

I^/CM07DSJt/CPIl_l-Cb4X-Coi!?C?i>ox?rStudio-[Crxphi<:M1n>xi>lxy]

B?回因

E>1?Kd>tY***Er?j?ct£?bucProf,1”柒LOptionX??l(D£P(guān)/BIOSn,nd”H?lp

I心第I匚工

i|D?bu(

國(guó)曲㈡國(guó)85回日畫(huà)d

國(guó)

dComplete.

Errors,1Warnings,0Remarks.

I-J"I*hBiMW/

發(fā)英,:?大陋I5工|

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論