ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:527.12KB ,
资源ID:4648030      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4648030.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(语音处理基础大作业.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

语音处理基础大作业.docx

1、语音处理基础大作业西安邮电大学语音处理基础大作业报告书学院名称: 学生姓名: 专业名称: 班 级: 一 双音多频信号的检测双音多频(Dual Tone Multi Frequency, DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于电话网络中。这种信号制式具有很高的拨号速度,且容易自动监测识别,很快就代替了原有的用脉冲计数方式的拨号制式。这种双音多频信号制式不仅用在电话网络中,还可以用于传输十进制数据的其它通信系统中,用于电子邮件和银行系统中。这些系统中用户可以用电话发送DTMF信号选择语音菜单进行操作。 DTMF信号系统是一个典型的小型信号处理系统,它要用数字

2、方法产生模拟信号并进行传输,其中还用到了D/A变换器;在接收端用A/D变换器将其转换成数字信号,并进行数字信号处理与识别。为了系统的检测速度并降低成本,还开发一种特殊的DFT算法,称为戈泽尔(Goertzel)算法,这种算法既可以用硬件(专用芯片)实现,也可以用软件实现。下面首先介绍双音多频信号的产生方法和检测方法,包括戈泽尔算法,最后进行模拟实验。一、实验内容:在电话中,数字09的中每一个都用两个不同的单音频传输,所用的8个频率分成高频带和低频带两组,低频带有四个频率:679Hz,770Hz,852Hz和941Hz;高频带也有四个频率:1209Hz,1336Hz,1477Hz和1633Hz.

3、。每一个数字均由高、低频带中各一个频率构成,DTMF信号的生成是通过将两个有限长数字序列相加而实现;而对DTMF信号的检测是通过计算DTMF信号的DFT;然后测量在给定8个频率上的能量而实现。已知采样频率为8KHZ,DTMF信号点数N=205,对DTMF信号进行205点的DFT。右表为DTMF数字。1209HZ1336HZ1447HZ1663HZ1697HZ123A2770HZ456B3852HZ789C4941HZ*0#D DTMF信号在电话中有两种作用,一个是用拨号信号去控制交换机接通被叫的用户电话机,另一个作用是控制电话机的各种动作,如播放留言、语音信箱等。要求:1,通过键盘任意输入16

4、个键之一,生成DTMF信号。2。试实现对该输入信号的检测,并在屏幕上显示。3。试从计算量角度考虑为什么采用DFT 进行DTMF 信号检测。4。判断出每个频率对应的DFT 的频率采样点。二、实验目的:对DTMF信号的生成及其检测有所了解,进一步对DFT的定义、物理意义及基本性质有深入了解。三、实验原理:DFT(离散傅立叶变换)的定义: X(K)=x(n)WknN , k=0,1,N-1 IDFT(离散傅立叶逆变换)的定义: x(n) =1/N (X(K) W-knN ,n=0,1,N-1 DFT变换具有周期性、线性、循环卷积等性质。其最重要性质共轭对称性 ,其性质如下: 设x(n)是长度为N的实

5、序列,且X(K)= DFT【x(n)】,则 (1.)X(K)共轭对称,即X(K)=X*(N-K),0kN-1 (2.)如果x(n) = x(N-n) ,则X(K)实偶对称,即X(K)=X(N-K) (3.)如果x(n) = -x(N-n) ,则X(K)纯虚奇对称,即X(K)=-X(N-K)利用共轭对称性可以减少运算量。四、实验步骤:(1)确定从键盘上输入的字母。方法通过其字母的ASCII值来判断(采用for循环嵌套)。(2)DTMF信号的产生。DTMF信号的生成是通过有限长数字序列的相加而实现,通过两个频率确定唯一的字母,用该两个信号相加实现DTMF信号。(3)DTMF信号得到DFT变化。先对

6、该信号进行205点上的DFT变换,然后进行固定点上DFT的提取,并输出该点上的DFT的幅值。(4)从输出幅值判断输入字母。制定一个判断标准,通过该判断标准得出相应的行与列,进而确定该点的ASCII值,输出对应的字母。五、程序框图: 六、源程序:close all;clear all;clc;f1=697;f2=770;f3=852;f4=941;f5=1209;f6=1336;f7=1447;f8=1663;fs=8000;n=1:205;while(1) while(1) clc flag=0;disp( 1209 1336 1447 1663 );disp( 697 1 2 3 A );d

7、isp( 770 4 5 6 B );disp( 852 7 8 9 C );disp( 941 * 0 # D );disp();disp(); in_key=input( 请输入按键 ,s);disp(); disp(); switch in_key case 1 x1=sin(2*pi*n*f1/fs); x2=sin(2*pi*n*f5/fs);case 2 x1=sin(2*pi*n*f1/fs); x2=sin(2*pi*n*f6/fs);case 3 x1=sin(2*pi*n*f1/fs); x2=sin(2*pi*n*f7/fs);case A x1=sin(2*pi*n*f

8、1/fs); x2=sin(2*pi*n*f8/fs);case 4 x1=sin(2*pi*n*f2/fs); x2=sin(2*pi*n*f5/fs);case 5 x1=sin(2*pi*n*f2/fs); x2=sin(2*pi*n*f6/fs);case 6 x1=sin(2*pi*n*f2/fs); x2=sin(2*pi*n*f7/fs);case B x1=sin(2*pi*n*f2/fs); x2=sin(2*pi*n*f8/fs); case 7 x1=sin(2*pi*n*f3/fs); x2=sin(2*pi*n*f5/fs);case 8 x1=sin(2*pi*n*

9、f3/fs); x2=sin(2*pi*n*f6/fs);case 9 x1=sin(2*pi*n*f3/fs); x2=sin(2*pi*n*f7/fs);case C x1=sin(2*pi*n*f3/fs); x2=sin(2*pi*n*f8/fs);case * x1=sin(2*pi*n*f4/fs); x2=sin(2*pi*n*f5/fs);case 0 x1=sin(2*pi*n*f4/fs); x2=sin(2*pi*n*f6/fs);case # x1=sin(2*pi*n*f4/fs); x2=sin(2*pi*n*f7/fs);case D x1=sin(2*pi*n*

10、f4/fs); x2=sin(2*pi*n*f8/fs);otherwise flag=1; clc;disp(); disp( 你输入按键错误 );disp(); disp(); temp=input(是否要继续 Y|y-是 N|n-否,s);disp(); if(temp=n|temp=N) flag=0; endend; if(flag=0) break; endend xn=x1+x2; xk=fft(xn,205);%对x(n)做采样点数为205点的fft变换% k=0:204;% figure(name,实验五);subplot(311);plot(n,xn);xlabel(n);

11、 ylabel(xn);grid; subplot(312); stem(k,xk(1:205);%绘制以k为x轴, xk(1:205)为y轴的离散序列图% xlabel(k); ylabel(xk); grid; xk=abs(xk);%作xk的绝对值% max1=1;xmax1=xk(1); max2=1;xmax2=xk(1); for m=1:60 if(xmax1xk(m) xmax1=xk(m); max1=m; end endfor m=1:60 if(xmax2max2) k=max1; max1=max2; max2=k; end disp(); disp(); disp(

12、- 经过传输后知道如下-); switch max1 case 18 switch max2 case 31 disp(你输入的是- 1); a=max1 max2; b=697 1209;subplot(313); stem(a,b); xlabel(k); ylabel(f); grid; case 34 disp(你输入的是- 2); a=max1 max2; b=697 1336;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 37 disp(你输入的是- 3); a=max1 max2; b=697 1447;subpl

13、ot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 43 disp(你输入的是- A); a=max1 max2; b=697 1663;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; endcase 20 switch max2 case 31 disp(你输入的是- 4); a=max1 max2; b=770 1209;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 34 disp(你输入的是- 5); a=max1 ma

14、x2; b=770 1336;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 37 disp(你输入的是- 6); a=max1 max2; b=770 1447;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 43 disp(你输入的是- B); a=max1 max2; b=770 1663;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; end case 22 switch max2 case 31 disp

15、(你输入的是- 7); a=max1 max2; b=852 1209;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 34 disp(你输入的是- 8); a=max1 max2; b=852 1336;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 37 disp(你输入的是- 9); a=max1 max2; b=852 1447;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 43 disp(你输

16、入的是- C); a=max1 max2; b=852 1663;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; end case 24 switch max2 case 31 disp(你输入的是- *); a=max1 max2; b=941 1209;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 34 disp(你输入的是- 0); a=max1 max2; b=941 1336;subplot(313); stem(a,b);xlabel(k); ylabel(f);

17、grid; case 37 disp(你输入的是- #); a=max1 max2; b=941 1447;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; case 43 disp(你输入的是- D); a=max1 max2; b=941 1663;subplot(313); stem(a,b);xlabel(k); ylabel(f);grid; end enddisp();;sh disp(); disp(); temp=input(是否要继续按键 Y|y-是 N|n-退出,s); if(temp=n|temp=N) break; e

18、nd disp();end七、程序结果及图表:a=input(输入数字 =,s);sm=abs(a);%输入数字的ASCII值pm=49 50 51 65;52 53 54 66;55 56 57 67;42 48 35 68;%给出图表字母的相应ASCII值矩阵for p=1:4; for q=1:4; if pm(p,q)= sm;break,endend if pm(p,q)=sm ; break,endend%通过两个for循环判断键盘输入字母的具体行和列fprintf(ASCII码值AM=%0.fn,pm(p,q)f1=697 770 852 941;f2=1209 1336 144

19、7 1663;n=0:204;x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000);%DTMF信号的生成figure(color,g);subplot(211);plot(x);xlabel(n);ylabel(x);title(DTMF信号);k=18 20 22 24 31 34 38 43;%给出8个频率点va=zeros(1,8);%生成一个1行8列的零矩阵for m=1:8; Fx(m)=gfft(x,205,k(m);%对信号x进行205点上DFT变换,再取和k对应的8点上DFT变化并相应的放入Fx(m)endva=abs(Fx);subp

20、lot(212);stem(k,va);xlabel(k);ylabel(|X(k)|);l1=80;l2=7.8;%判断标准for s=5:8; if va(s)l2;break,endendfor r=1:4; if va(r)l1;break,endend%通过判断标准判断出相应的行和列disp(拨号符号 =,setstr(pm(r,s-4)%输出判断出的相应行、列ASCII值矩阵对应的符号结果及图示如下: 输入数字=1,ASCII码值AM=,49拨号符号=1 图一 输入数字,=2ASCII码值AM=50拨号符号,=2 图二比较以上两图,每幅图的上面均为该字母所对应的两固定频率所产生的D

21、TMF信号,且它们只是205点上的离散信号,下图是对该字母DTMF信号x进行205点上DFT变换,再取和k对应的8点(18 20 22 24 31 34 38 43)上DFT变化的幅值,其中前4点决定该字母所在原矩阵中的行,后4点决定该 字母所在原矩阵中的列,该图也证明了前四点表示的意义。输入数字=4ASCII码值AM=52 图三拨号符号=4 比较图一、图三,可以看出后四点表示的是字母所在原矩阵中的列,该图也证明了后四点表示的意义。以上三幅图均证明了程序的正确。 因为采样频率是8000Hz,因此要求每125ms输出一个样本,得到的序列再送到D/A变换器和平滑滤波器,输出便是连续时间的DTMF信

22、号。DTMF信号通过电话线路送到交换机。基于Goertzel算法的双音多频信号检测在接收端,要对收到的双音多频信号进行检测,检测两个正弦波的频率是多少,以判断所对应的十进制数字或者符号。显然这里仍然要用数字方法进行检测,因此要将收到的时间连续 DTMF信号经过A/D变换,变成数字信号进行检测。检测的方法有两种,一种是用一组滤波器提取所关心的频率,根据有输出信号的2个滤波器判断相应的数字或符号。另一种是用DFT(FFT)对双音多频信号进行频谱分析,由信号的幅度谱,判断信号的两个频率,最后确定相应的数字或符号。当检测的音频数目较少时,用滤波器组实现更合适。FFT是DFT的快速算法,但当DFT的变换

23、区间较小时,FFT快速算法的效果并不明显,而且还要占用很多内存,因此不如直接用DFT合适。下面介绍Goertzel算法,这种算法的实质是直接计算DFT的一种线性滤波方法。这里略去Goertzel算法的介绍,可以直接调用MATLAB信号处理工具箱中戈泽尔算法的函数Goertzel,计算N点DFT的几个感兴趣的频点的值。二 语音合成与语音识别语音识别的发展历史早在计算机发明之前,自动语音识别的设想就已经被提上了议事日程,早期的声码器可被视作语音识别及合成的雏形。而1920年代生产的Radio Rex玩具狗可能是最早的语音识别器,当这只狗的名字被呼唤的时候,它能够从底座上弹出来。最早的基于电子计算机

24、的语音识别系统是由AT&T贝尔实验室开发的Audrey语音识别系统,它能够识别10个英文数字。其识别方法是跟踪语音中的共振峰。该系统得到了98%的正确率。到1950年代末,伦敦学院(Colledge of London)的Denes已经将语法概率加入语音识别中。1960年代,人工神经网络被引入了语音识别。这一时代的两大突破是线性预测编码Linear Predictive Coding (LPC), 及动态时间弯折Dynamic Time Warp技术。语音识别技术的最重大突破是隐含马尔科夫模型Hidden Markov Model的应用。从Baum提出相关数学推理,经过Labiner等人的研究

25、,卡内基梅隆大学的李开复最终实现了第一个基于隐马尔科夫模型的大词汇量语音识别系统Sphinx。1。此后严格来说语音识别技术并没有脱离HMM框架。 尽管多年来研究人员一直尝试将“听写机”推广,语音识别技术在目前还无法支持无限领域,无限说话人的听写机应用。 语音识别概述语音识别技术,也被称为自动语音识别Automatic Speech Recognition,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。与说话人识别及说话人确认不同,后者尝试识别或确认发出语音的说话人而非其中所包含的词汇内容。语音识别技术的应用包括语音拨号、语音导航、室内设备

26、控制、语音文档检索、简单的听写数据录入等。语音识别技术与其他自然语言处理技术如机器翻译及语音合成技术相结合,可以构建出更加复杂的应用,例如语音到语音的翻译。语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。语音合成语音是信息传播的一大媒介。近年来,提供语音服务的语音系统迅速发展起来。传统的语音系统一般采用预录音回放技术,由于这种方法必须对信息文本事先进行录音,并存为声音文件,因此,所占用的存储空间很大。另外,一个更大的缺点是不能实时反映信息的更新,应用范围有很大的局限性。现在的语音合成技术,无需对大量的信息进行录音,极大地减少了工作量和节省了存

27、储空间,尤其是在信息内容需要经常变动的动态查询场合,如股市行情查询、有声Email系统,都是传统的预录音技术无法代劳的。结合其他技术,语音合成技术可以广泛应用于金融、邮电、工商、 政府机关、交通、教育、游戏等领域。传统的语音系统输入语音语音信号的参数合成根据语音产生的数学模型,利用短时平稳性,提出每帧语音信号的参数,这些参数经编码后组成一个语音参数库。输出时,从语音参数库中取出相应的参数,利用语音产生的数学模型恢复语音。共振峰合成和线性预测合成是该类合成技术中的重要方法。直接录放流程 输入语音波形合成方法输入语音 合成语音语音信号的规则合成将任意文本转换成声音的系统。包括语言学和声学处理。合成

28、的词汇不是事先确定。常见的就是文语转换合成技术 。系统中存储的是音素的声学参数,以及由音素组成音节、由音节组成词、由词组成句子的规则;控制音调、轻重音等韵律的各种规则。 在波形合成法中,也可以使用波形编码技术略微压缩一些存储量。通常情况下,波形合成法可以合成的语音词汇量约在500以下,而参数合成法则可以达到数千左右。当然,在参数合成时,由于抽取参数或编码过程中,难免存在逼近误差,所以合成的语音质量(清晰度)也就比波形合成法要差一些了。在语音合成中,另一个重要问题就是合成基元的选择问题,也就是存储的语音基元的选择问题。显然,合成词汇量越大,必须采用越小的基元,否则存储量就太大了;反之,合成词汇量越小,可用较大的基元。例如在英语中,词的数量有千千万万,但是音素质有成百个。因此存储全部

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2