DSP男女声变换报告.doc_第1页
DSP男女声变换报告.doc_第2页
DSP男女声变换报告.doc_第3页
DSP男女声变换报告.doc_第4页
DSP男女声变换报告.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

DSP课程设计实验报告男女声变换学院:电子信息工程学院成员:指导教师:钱满义目录男女声变换实验3一、实验目的3二、设计要求及目标3三、实验内容3四、 设计方案、算法原理说明41、 频谱变换42、 男女声变换63、 本实验DMA使用情况8五、 程序设计8六、 参考文献11男女声变换实验一、实验目的1、掌握DSP集成开发环境CCS的使用和调试方法;2、掌握DSP片上资源和片外资源访问的基本方法;3、通过对DSP信号处理器及D/A和A/D转换器的编程,培养学生C语言编程能力以及使用DSP硬件平台实现数字信号处理算法的能力;4、掌握男女声音调变换系统的DSP设计可使学生将数字信号处理算法与工程实践相结合,提高学生系统地思考问题和解决实际问题的能力;二、设计要求及目标基本部分:(1) 利用DSP的DMA方式对外部信号进行实时采集、传输与处理。(2) 使用C语言编写并实现男女生声音的实时变换。发挥部分:(1) 能够智能识别男女声音。(2) 通过算法中参数值的选择,调整信号频率变化的程度,实现男女声音相互转化程度可变。三、实验内容 本实验以DMA与McBSP相结合的方式,实现实时的男女生声音变换。主要包括以下几方面:(1)对DMA进行初始化;(2)对McBSP进行初始化(3) 对A/D、D/A进行初始化;(4) 编写DMA中断服务程序; 编写快速傅里叶变换(FFT)算法程序,获得输入信号频谱,并对频谱的峰值频率 进行比较实现男女声自动识别; 频率变换算法程序,使用内插或抽取,实现男女生声音的实时变换;4、 设计方案、算法原理说明1、 频谱变换将gBufferRcvPing左声道的512个点(即偶数个点)抽出放在长度为1024的temp的偶数点中,看作复数的实部,在temp的奇数点插0值,看作复数的虚部,temp经过cfft后,得到相应频谱,所得的频谱中心对称,以实部,虚部交替存储。代码如下:for (i = 0; i length/2; i+) temp2*i = inbuf2*i; temp2*i+1=0;cbrev(temp,temp,512); cfft(temp,512,SCALE);2、 男女声自动识别经过多次的实验,我们发现男女声的时域图如下:男声:女声:可见女声在时域上的声波频率高于男声,每个峰值的x坐标的差值也更小,通过多次的测量取值,我们发现以73为分界线最佳:差值73以下的识别为女声,73以上的识别为男声。在这里说明一点,我们的峰值取值是在计算机音量调整到15时,取高于1000的点,并且为了不重复取到这同一个波峰的x坐标,我们规定每取到一个点之后,从此点之后的40个点才开始遍历(依照经验,就算是很尖的女声,两个波峰之间也不会小于40)。取得波峰的x坐标后,我们将其放入一个数组里,对其遍历并求出差值,并对差值求平均数,再将其与之前的73对比:for(i=0;iPEAKLINE) xlabelk=i;k+;i=i+40;for(i=0;ik-1;i+) /计算每个峰值间的横坐标差值 subvalue=xlabeli+1-xlabeli; if(subvalue200) xlabel_legalnum=subvalue; num+; for(i=0;i0) /判断音频是男声还是女声if(aver0) /为女声womanvoice+;times-;if(aver=SEPAPOINT) /为男声manvoice+;times-;同时,我们采取了对比3次1024个点的方法,当3次中有两次识别为同一个声音后,此声音相对应的标志+1,即:if(womanvoice=(TIMES/2+1)womanvoice=0;manvoice=0;times=TIMES;womanflag+; /当womanvoice占优势时,女声标志加一 if(manvoice=(TIMES/2+1)manvoice=0;womanvoice=0;times=TIMES;manflag+; /当manvoice占优势时,男声标志加一另外,为了防止这3次的判断也出现错误,我们还引入了男女声标志:womanflag和manflag,当womanflag大于manflag时,执行模式1(女声变男声),否则执行模式0(男声变女声)。为了能实现男女声切换后的自动识别功能,我们规定当womanflag或manflag到达15后,将其归0,并将先触及15的标志置3,这样既能保证现在的识别不出错,也能在输入男女声变换后快速的进行识别,使相应的语音标志大于之前的标志:if(womanflag15)womanflag=3;manflag=0; /为了复原男女声标志if(manflag15)womanflag=0;manflag=3;3、 男女声变换 将输入的语音信号进行抽样、量化、编码后进行傅里叶变换得到信号的频谱,然后将所得频谱进行适当搬移:男生的频谱往高频搬,女生向低频处搬,将所得到的频谱进行傅里叶反变换得到相应时域信号经滤波后送往D/A转换器输出,即可得到相应的语音变换。如图,男声基频分布为50,180Hz,女生基频分布为160,380Hz。在不断多次的测试中,得到男声变女生搬移30个点(共1024个点),搬移的频率约为30/10248k=234Hz,女声变男声搬移78个点,搬移的频率约为78/10248k=600Hz,对搬移后的频谱进行cifft,再经过滤波器进行滤波,将数据送入D/A转换后输出。代码如下:if(style29;i-) tempi = tempi-30; for(i=0;i30;i+) tempi=0; for (i=length/2;ilength-30;i+) tempi = tempi+30; for(i=length-30;i5)for (i=0;ilength/2-22;i+) tempi = tempi+22; for(i=length/2-22;ilength/2+21;i-) tempi = tempi-22; for(i=length/2;ilength/2+22;i+) tempi=0; cifft(temp,512,NOSCALE);cbrev(temp,temp,512); fir(temp, h, out_buffer, dbptr, 512, 16);其中,滤波器为MATLAB设计的低通滤波器,截频8000Hz正弦波,采样率设为32000Hz。其函数调用格式为:fir (DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx,ushort nh)xnx 表示含有nx个实数的实输入信号向量;hnh 表示含有nh个实数的系数向量,按自然顺序 排列,即滤波器的单位脉冲响应。rnx 表示含有nx个实数的输出向量; 允许原位运算,即r=x。dbuffernh+2 延迟缓冲区。nx 向量x中实数的个数;nh 向量h中系数的个数;男变女:女变男:4、 本实验DMA使用情况数据采集:A/D转换的数据按McBSP1的设置被送到DSP内部接收寄存器DRR11中,再由DMA通道4将DRR11中的数据读到指定数据存储区gBufferRcvPing和gBufferRcvPong中完成数据采集(然后写入寄存器DMACDSAL)。当DMA通道4采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,此时DMA通道4可以按照设定继续采集下一组数据,实现了数据采集与CPU处理的并行操作。数据发送: 数据经DSP计算完,存放在指定数据存储区gBufferXmtPing和gBufferXmtPong中,DSP将其中的数据存放到McBSP1的发送寄存器DXR11中,然后通过由DMA通道5将数据发送出去,完成发送。 当DMA通道5采集完一组数据后产生一个DMA中断事件中断CPU,来通知CPU对其进行相应的处理,此时DMA通道5可以按照设定继续发送下一组数据,实现了数据发送与CPU处理的并行操作。5、 程序设计及相关宏定义void change(Int16 *inbuf, Int16 *outbuf, Int16 length)Int16 i = 0; Int16 xlabel100=0; Int16 m=0; Int16 sum=0; Int16 aver=0;/Int16 xlabel100=0; Int16 k=0;Int16 num=0;Int16 xlabel_legal100=0;Int16 result=0;Int16 subvalue=0; DATA *dbptr = &db0; for (i = 0; i length/2; i+) temp2*i = inbuf2*i; temp2*i+1=0;/*音量15(计算机音量)*/for(i=0;iPEAKLINE) xlabelk=i;k+;i=i+40;for(i=0;ik-1;i+) /计算每个峰值间的横坐标差值 subvalue=xlabeli+1-xlabeli; if(subvalue200) xlabel_legalnum=subvalue; num+; for(i=0;i0) /判断音频是男声还是女声if(aver0) /为女声womanvoice+;times-;if(aver=SEPAPOINT) /为男声manvoice+;times-;if(womanvoice=(TIMES/2+1)womanvoice=0;manvoice=0;times=TIMES;womanflag+; /当womanvoice占优势时,女声标志加一 if(manvoice=(TIMES/2+1)manvoice=0;womanvoice=0;times=TIMES;manflag+; /当manvoice占优势时,男声标志加一if(manflag15)womanflag=3;manflag=0; /为了复原男女声标志if(manflag15)womanflag=0;manflag=3;/*音量15*/cfft(temp,512,SCALE);cbrev(temp,temp,512); if(style29;i-) tempi = tempi-30; for(i=0;i30;i+) tempi=0; for (i=length/2;ilength-30;i+) tempi = tempi+30; for(i=length-30;i5)for (i=0;ilength/2-22;i+) tempi = tempi+22; for(i=length/2-22;ilength/2+21;i-) tempi = tempi-22; for(i=length/2;ilength/2+22;i+) tempi=0; cifft(temp,512,NOSCALE);cbrev(temp,temp,512); fir(temp, h, out_buffer, dbptr, 512, 16); for (i = 0; i length/2; i+) inbuf2*i=temp2*i ;for (i = 0; i length; i+) outbufi = inbufi; #d

温馨提示

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

评论

0/150

提交评论