基于TMS320VC5509定点的语音信号采集处理系统设计-语音采集和放送_第1页
基于TMS320VC5509定点的语音信号采集处理系统设计-语音采集和放送_第2页
基于TMS320VC5509定点的语音信号采集处理系统设计-语音采集和放送_第3页
基于TMS320VC5509定点的语音信号采集处理系统设计-语音采集和放送_第4页
基于TMS320VC5509定点的语音信号采集处理系统设计-语音采集和放送_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字信号处理课程设计基于DSP5509的语音信号采集系统设计计算机系10级通信1班2013年5月24日2013年6月28日目录摘要 21绪论 31.1DSP系统特点和设计基本原则 31.2国内外研究动态 32软件设计 53实验结果及分析 123.1实验结果 123.2实验分析 144总结与心得体会 15参考文献 16致谢 17摘要基于DSP的语音信号处理系统,该系统采用TMS320VC5509作为主处理器,TLV320AIC23B作为音频芯片,在此基础上完成系统硬件平台的搭建和软件设计,从而实现对语音信号的采集、滤波和回放功能,它可作为语音信号处理的通用平台。语音是人类相互之间进行交流时使用最多、最自然、最基本也是最重要的信息载体。在高度信息化的今天,语音信号处理是信息高速公路、多媒体技术、办公自动化、现代通信及智能系统等新兴领域应用的核心技术之一。通常这些信号处理的过程要满足实时且快速高效的要求,随着DSP技术的发展,以DSP为内核的设备越来越多,为语音信号的处理提供了良好的平台。本文设计了一个基于TMS320VC5509定点的语音信号处理系统,实现对语音信号的采集、处理与回放等功能,为今后复杂的语音信号处理算法的研究和实时实现提供一个通用平台。关键词:语音处理;DSP;TMS320VC5509;TLV320AIC23B1绪论语音是人类相互间所进行的通信的最自然和最简洁方便的形式,语音通信是一种理想的人机通信方式。语音通信的研究涉及到人工智能、数字信号处理、微型计算机技术、语言声学、语言学等许多领域,所以说语音的通信是一个多学科的综合研究领域,其研究成果具有重要的学术价值。另外通过语音来传递信息是人类最重要的、最有效、最常用的交换信息的形式。语言是人类特有的功能,声音是人类常用的工具,是相互传递信息的主要手段。同时也是众构成思想交流和感情沟通的最主要的途径。1.1DSP系统特点和设计基本原则DSP(digitalsignalprocessor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。1.2国内外研究动态语音信号处理作为一个重要的研究领域,已经有很长的研究历史。但是它的快速发展可以说是从1940年前后Dudley的声码器和Potter等人的可见语音开始的;20世纪60年代中期形成的一系列数字信号处理的理念和技术基础;到了80年代,由于矢量量化、隐马尔可夫模型和人工神经网络等相继被应用于语音信号处理,并经过不断改进与完善,使得语音信号处理技术产生了突破性的进展。一方面,对声学语音学统计模型的研究逐渐深入,鲁棒的语音识别、基于语音段的建模方法及隐马尔可夫模型与人工神经网络的结合成为研究的热点。另一方面,为了语音识别实用化的需要,讲者自适应、听觉模型、快速搜索识别算法以及进一步的语言模型的研究等课题倍受关注。在通信越来越发达的当今世界,尤其最近几十年,语音压缩编码技术在移动通信、IP电话通信、保密通信、卫星通信以及语音存储等很多方面得到了广泛的应用。因此,语音编码一直是通信和信号处理的研究热点,并其取得了惊人的进展,目前在PC机上的语音编码已经趋于成熟,而如何在嵌入式系统中实时实现语音压缩编码则是近些年来语音信号处理领域的研究热点之一。2软件设计要正确配置DSP的时钟发生器,产生DSP工作的正常时钟频率,这一个步骤的关键就是数字琐相环PLL的应用。I2C模块是TMS320VC55xx新增的片内集成外设,通过I2C对TLV320AIC23进行编程控制,可以使DSP与I2C兼容设备通过该接口进行数据通信。通过硬件和软件调试,最终成功采集到语音信号并播放出来,可以在CCS软件中观察到采集到的语音信号的波形。改变程序中的延迟参数,可以明显改变混响效果。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,表示数字回声功能没有激活。这时从耳机中能听到麦克风中的输入语音放送。将观察窗口中bEcho的取值改成非0值。这时可从耳机中听到带数字回声道语音放送。分别调整uDelay和uEffect的取值,使他们保持在0-1023范围内,同时听听耳机中的输出有何变化。当uDelay和uEffect的数值增大时,数字回声的效果就会越加的明显。图3.1修改前程序图图3.2修改前程序图图3.3频谱分析图3.4左声道及右声道波形3.2实验分析所以,从本实验可知当已知一个数字音源后,可以利用计算机的处理能力,用数字的方式通过计算模拟回声效应。简单的讲,可以在原声音流中叠加延迟一段时间后的声流,实现回声效果。当然通过复杂运算,可以计算各种效应的混响效果。声音放送可以加入数字回声,数字回声的强弱和与原声的延迟均可在程序中设定和调整。4总结与心得体会通过本次课程设计,我明白了细节决定成败这句话的道理,在实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论