基于TMS320VC5509定點的語音信號采集處理系統(tǒng)設計-語音采集和放送_第1頁
基于TMS320VC5509定點的語音信號采集處理系統(tǒng)設計-語音采集和放送_第2頁
基于TMS320VC5509定點的語音信號采集處理系統(tǒng)設計-語音采集和放送_第3頁
基于TMS320VC5509定點的語音信號采集處理系統(tǒng)設計-語音采集和放送_第4頁
基于TMS320VC5509定點的語音信號采集處理系統(tǒng)設計-語音采集和放送_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)字信號處理課程設計基于DSP5509的語音信號采集系統(tǒng)設計計算機系10級通信1班2013年5月24日2013年6月28日目錄摘要 21緒論 31.1DSP系統(tǒng)特點和設計基本原則 31.2國內外研究動態(tài) 32軟件設計 53實驗結果及分析 123.1實驗結果 123.2實驗分析 144總結與心得體會 15參考文獻 16致謝 17摘要基于DSP的語音信號處理系統(tǒng),該系統(tǒng)采用TMS320VC5509作為主處理器,TLV320AIC23B作為音頻芯片,在此基礎上完成系統(tǒng)硬件平臺的搭建和軟件設計,從而實現(xiàn)對語音信號的采集、濾波和回放功能,它可作為語音信號處理的通用平臺。語音是人類相互之間進行交流時使用最多、最自然、最基本也是最重要的信息載體。在高度信息化的今天,語音信號處理是信息高速公路、多媒體技術、辦公自動化、現(xiàn)代通信及智能系統(tǒng)等新興領域應用的核心技術之一。通常這些信號處理的過程要滿足實時且快速高效的要求,隨著DSP技術的發(fā)展,以DSP為內核的設備越來越多,為語音信號的處理提供了良好的平臺。本文設計了一個基于TMS320VC5509定點的語音信號處理系統(tǒng),實現(xiàn)對語音信號的采集、處理與回放等功能,為今后復雜的語音信號處理算法的研究和實時實現(xiàn)提供一個通用平臺。關鍵詞:語音處理;DSP;TMS320VC5509;TLV320AIC23B1緒論語音是人類相互間所進行的通信的最自然和最簡潔方便的形式,語音通信是一種理想的人機通信方式。語音通信的研究涉及到人工智能、數(shù)字信號處理、微型計算機技術、語言聲學、語言學等許多領域,所以說語音的通信是一個多學科的綜合研究領域,其研究成果具有重要的學術價值。另外通過語音來傳遞信息是人類最重要的、最有效、最常用的交換信息的形式。語言是人類特有的功能,聲音是人類常用的工具,是相互傳遞信息的主要手段。同時也是眾構成思想交流和感情溝通的最主要的途徑。1.1DSP系統(tǒng)特點和設計基本原則DSP(digitalsignalprocessor)是一種獨特的微處理器,是以數(shù)字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或1的數(shù)字信號。再對數(shù)字信號進行修改、刪除、強化,并在其他系統(tǒng)芯片中把數(shù)字數(shù)據(jù)解譯回模擬數(shù)據(jù)或實際環(huán)境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數(shù)以千萬條復雜指令程序,遠遠超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強大數(shù)據(jù)處理能力和高運行速度,是最值得稱道的兩大特色。1.2國內外研究動態(tài)語音信號處理作為一個重要的研究領域,已經有很長的研究歷史。但是它的快速發(fā)展可以說是從1940年前后Dudley的聲碼器和Potter等人的可見語音開始的;20世紀60年代中期形成的一系列數(shù)字信號處理的理念和技術基礎;到了80年代,由于矢量量化、隱馬爾可夫模型和人工神經網(wǎng)絡等相繼被應用于語音信號處理,并經過不斷改進與完善,使得語音信號處理技術產生了突破性的進展。一方面,對聲學語音學統(tǒng)計模型的研究逐漸深入,魯棒的語音識別、基于語音段的建模方法及隱馬爾可夫模型與人工神經網(wǎng)絡的結合成為研究的熱點。另一方面,為了語音識別實用化的需要,講者自適應、聽覺模型、快速搜索識別算法以及進一步的語言模型的研究等課題倍受關注。在通信越來越發(fā)達的當今世界,尤其最近幾十年,語音壓縮編碼技術在移動通信、IP電話通信、保密通信、衛(wèi)星通信以及語音存儲等很多方面得到了廣泛的應用。因此,語音編碼一直是通信和信號處理的研究熱點,并其取得了驚人的進展,目前在PC機上的語音編碼已經趨于成熟,而如何在嵌入式系統(tǒng)中實時實現(xiàn)語音壓縮編碼則是近些年來語音信號處理領域的研究熱點之一。2軟件設計要正確配置DSP的時鐘發(fā)生器,產生DSP工作的正常時鐘頻率,這一個步驟的關鍵就是數(shù)字瑣相環(huán)PLL的應用。I2C模塊是TMS320VC55xx新增的片內集成外設,通過I2C對TLV320AIC23進行編程控制,可以使DSP與I2C兼容設備通過該接口進行數(shù)據(jù)通信。通過硬件和軟件調試,最終成功采集到語音信號并播放出來,可以在CCS軟件中觀察到采集到的語音信號的波形。改變程序中的延遲參數(shù),可以明顯改變混響效果。aduio.pjt;CodeComposerProjectFile,Version2.0(donotmodifyorremovethisline)

[ProjectSettings]

ProjectDir="C:\VC5509AeS61\Lab0701-Echo\"

ProjectType=Executable

CPUFamily=TMS320C55XX

Tool="Compiler"

Tool="CustomBuilder"

Tool="DspBiosBuilder"

Tool="Linker"

Config="Debug"

Config="Release"

[SourceFiles]

Source="aic23.c"

Source="audio.c"

Source="i2c.c"

Source="sdram_init.c"

Source="util.c"

Source="audio.cmd"

["Compiler"Settings:"Debug"]

Options=-g-q-fr"C:\VC5509AeS61\Lab0701-Echo\Debug"-d"_DEBUG"-ml-mn

["Compiler"Settings:"Release"]

Options=-q-o2-fr"C:\VC5509AeS61\Lab0701-Echo\Release"

["DspBiosBuilder"Settings:"Debug"]

Options=-v55

["DspBiosBuilder"Settings:"Release"]

Options=-v55

["Linker"Settings:"Debug"]

Options=-q-c-m".\Debug\audio.map"-o".\Debug\audio.out"-w-x

["Linker"Settings:"Release"]

Options=-q-c-m".\Release\audio.map"-o".\Release\audio.out"-w-x

aic23.c#include"5509.h"

#include"util.h"

#include"extaddr.h"

#include"math.h"

//AIC23ControlRegisteraddresses

#defineAIC23_LT_LINE_CTL0x00//0

#defineAIC23_RT_LINE_CTL0x02//1

#defineAIC23_LT_HP_CTL0x04//2

#defineAIC23_RT_HP_CTL0x06//3

#defineAIC23_ANALOG_AUDIO_CTL0x08//4

#defineAIC23_DIGITAL_AUDIO_CTL0x0A//5

#defineAIC23_POWER_DOWN_CTL0x0C//6

#defineAIC23_DIGITAL_IF_FORMAT0x0E//7

#defineAIC23_SAMPLE_RATE_CTL0x10//8

#defineAIC23_DIG_IF_ACTIVATE0x12//9

#defineAIC23_RESET_REG0x1E//F-Writing0tothisregtriggersreset

//AIC23ControlRegistersettings

#definelt_ch_vol_ctrl0x0017/*0*/

#definert_ch_vol_ctrl0x0017/*1*/

#definelt_ch_headph_ctrl0x0079/*2*/

#definert_ch_headph_ctrl0x0079/*3*/

#definealog_au_path_ctrl0x0000/*4*/

#definedigi_au_path_ctrl0x0000/*5*/

#definepow_mgt_ctrl_ctrl0x0002/*6*/

#definedigi_au_intf_ctrl0x000D/*7*/

#defineau_FS_TIM_ctrl0x0000/*8MCLK=12MHz,SampleRatesetting*/

#definedigi_intf1_ctrl0x0001/*9*/

#definedigi_intf2_ctrl0x00FF/*10*/

#defineDIGIF_FMT_MS0x40

#defineDIGIF_FMT_LRSWAP0x20

#defineDIGIF_FMT_LRP0x10

#defineDIGIF_FMT_IWL0x0c

#defineDIGIF_FMT_FOR0x03

#defineDIGIF_FMT_IWL_160x00

#defineDIGIF_FMT_IWL_200x04

#defineDIGIF_FMT_IWL_240x08

#defineDIGIF_FMT_IWL_320xc0

#defineDIGIF_FMT_FOR_MSBRIGHT0x00

#defineDIGIF_FMT_FOR_MSLEFT0x01

#defineDIGIF_FMT_FOR_I2S0x02

#defineDIGIF_FMT_FOR_DSP0x03

#definePOWER_DEV0x80

#definePOWER_CLK0x40

#definePOWER_OSC0x20

#definePOWER_OUT0x10

#definePOWER_DAC0x08

#definePOWER_ADC0x04

#definePOWER_MIC0x02

#definePOWER_LINE0x01

#defineSRC_CLKOUT0x80

#defineSRC_CLKIN0x40

#defineSRC_SR0x3c

#defineSRC_BOSR0x02

#defineSRC_MO0x01

#defineSRC_SR_440x20

#defineSRC_SR_320x18

#defineANAPCTL_STA0xc0

#defineANAPCTL_STE0x20

#defineANAPCTL_DAC0x10

#defineANAPCTL_BYP0x08

#defineANAPCTL_INSEL0x04

#defineANAPCTL_MICM0x02

#defineANAPCTL_MICB0x01

#defineDIGPCTL_DACM0x08

#defineDIGPCTL_DEEMP0x06

#defineDIGPCTL_ADCHP0x01

#defineDIGPCTL_DEEMP_DIS0x00

#defineDIGPCTL_DEEMP_320x02

#defineDIGPCTL_DEEMP_440x04

#defineDIGPCRL_DEEMP_480x06

#defineDIGIFACT_ACT0x01

#defineLT_HP_CTL_LZC0x80

#defineRT_HP_CTL_RZC0x80

voidAIC23_Write(unsignedshortregaddr,unsignedshortdata)

{

unsignedcharbuf[2];

buf[0]=regaddr;

buf[1]=data;

I2C_Write(I2C_AIC23,2,buf);

}

voidMcBSP0_InitSlave()

{

PC55XX_MCSPpMCBSP0=(PC55XX_MCSP)C55XX_MSP0_ADDR;

//PuttheMCBSPinreset

Write(pMCBSP0->spcr1,0);

Write(pMCBSP0->spcr2,0);

//Configframeparameters(32bit,singlephase,nodelay)

Write(pMCBSP0->xcr1,XWDLEN1_32);

Write(pMCBSP0->xcr2,XPHASE_SINGLE|XDATDLY_0);

Write(pMCBSP0->rcr1,RWDLEN1_32);

Write(pMCBSP0->rcr2,RPHASE_SINGLE|RDATDLY_0);

//Disableintframegenerationandenableslavew/extframesignalsonFSX

//Framesyncisactivehigh,dataclockedonrisingedgeofclkx

Write(pMCBSP0->pcr,PCR_CLKXP);

//Bringtransmitterandreceiveroutofreset

SetMask(pMCBSP0->spcr2,SPCR2_XRST);

SetMask(pMCBSP0->spcr1,SPCR1_RRST);

}

voidAIC23_Init()

{

I2C_Init();

//ResettheAIC23andturnonallpower

AIC23_Write(AIC23_RESET_REG,0);

AIC23_Write(AIC23_POWER_DOWN_CTL,0);

AIC23_Write(AIC23_ANALOG_AUDIO_CTL,ANAPCTL_DAC|ANAPCTL_INSEL);

AIC23_Write(AIC23_DIGITAL_AUDIO_CTL,0);

//Turnonvolumeforlineinputs

AIC23_Write(AIC23_LT_LINE_CTL,0x000);

AIC23_Write(AIC23_RT_LINE_CTL,0x000);

//ConfiguretheAIC23formastermode,44.1KHzstereo,16bitsamples

//Use12MHzUSBclock

AIC23_Write(AIC23_DIGITAL_IF_FORMAT,DIGIF_FMT_MS|DIGIF_FMT_IWL_16|DIGIF_FMT_FOR_DSP);

AIC23_Write(AIC23_SAMPLE_RATE_CTL,SRC_SR_44|SRC_BOSR|SRC_MO);

//Turnonheadphonevolumeanddigitalinterface

AIC23_Write(AIC23_LT_HP_CTL,0x07f);//0x79forspeakers

AIC23_Write(AIC23_RT_HP_CTL,0x07f);

AIC23_Write(AIC23_DIG_IF_ACTIVATE,DIGIFACT_ACT);

//SetMcBSP0tobetransmitslave

McBSP0_InitSlave();

}

voidAIC23_Disable()

{

PC55XX_MCSPpMCBSP0=(PC55XX_MCSP)C55XX_MSP0_ADDR;

I2C_Disable();

//PuttheMCBSPinreset

Write(pMCBSP0->spcr1,0);

Write(pMCBSP0->spcr2,0);

}

#defineAUDIOBUFFER0x200000

FARPTRlpAudio;

unsignedintbEcho=0,uDelay=64,uEffect=256;

voidAIC23_Mixer()

{

PC55XX_MCSPpMCBSP0=(PC55XX_MCSP)C55XX_MSP0_ADDR;

intnWork,nWork1;

FARPTRlpWork,lpWork1;

longintluWork,luWork1;

floatfWork,fWork1;

lpWork=lpAudio=AUDIOBUFFER;luWork=0;

for(luWork1=0;luWork1<0x48000;luWork1++)

far_poke(lpWork++,0);

lpWork=lpAudio;

while(1)

{

while(!ReadMask(pMCBSP0->spcr2,SPCR2_XRDY));

nWork=Read(pMCBSP0->ddr2); //

nWork=Read(pMCBSP0->ddr1); //

far_poke(lpWork++,nWork); //

if(bEcho) //

{

uEffect%=1024; // uDelay%=1024; //

fWork=uEffect/1024.0;

luWork1=100;

luWork1*=uDelay;

luWork1=luWork-luWork1;

if(luWork1<0) luWork1+=0x48000;

lpWork1=lpAudio;

lpWork1+=luWork1; //

nWork1=far_peek(lpWork1); //

fWork1=nWork1;

fWork1/=512.0;

fWork1*=uEffect;

fWork1+=nWork;

fWork+=1.0;

fWork1/=fWork;

nWork=fWork1; //}

Write(pMCBSP0->dxr2,nWork); //Write(pMCBSP0->dxr1,nWork); //luWork++; //if(luWork>=0x48000)

{

lpWork=lpAudio;luWork=0;

}

}

}

3實驗結果及分析3.1實驗結果按“F5”鍵運行,注意觀察窗口中的bEcho=0,表示數(shù)字回聲功能沒有激活。這時從耳機中能聽到麥克風中的輸入語音放送。將觀察窗口中bEcho的取值改成非0值。這時可從耳機中聽到帶數(shù)字回聲道語音放送。分別調整uDelay和uEffect的取值,使他們保持在0-1023范圍內,同時聽聽耳機中的輸出有何變化。當uDelay和uEffect的數(shù)值增大時,數(shù)字回聲的效果就會越加的明顯。圖3.1修改前程序圖圖3.2修改前程序圖圖3.3頻譜分析圖3.4左聲道及右聲道波形3.2實驗分析所以,從本實驗可知當已知一個數(shù)字音源后,可以利用計算機的處理能力,用數(shù)字的方式通過計算模擬回聲效應。簡單的講,可以在原聲音流中疊加延遲一段時間后的聲流,實現(xiàn)回聲效果。當然通過復雜運算,可以計算各種效應的混響效果。聲音放送可以加入數(shù)字回聲,數(shù)字回聲的強弱和與原聲的延遲均可在程序中設定和調整。4總結與心得體會通過本次課程設計,我明白了細節(jié)決定成敗這句話的道理,在實

溫馨提示

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

評論

0/150

提交評論