语音处理基础大作业Word格式文档下载.docx

上传人:b****3 文档编号:6815800 上传时间:2023-05-07 格式:DOCX 页数:49 大小:527.12KB
下载 相关 举报
语音处理基础大作业Word格式文档下载.docx_第1页
第1页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第2页
第2页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第3页
第3页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第4页
第4页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第5页
第5页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第6页
第6页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第7页
第7页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第8页
第8页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第9页
第9页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第10页
第10页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第11页
第11页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第12页
第12页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第13页
第13页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第14页
第14页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第15页
第15页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第16页
第16页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第17页
第17页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第18页
第18页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第19页
第19页 / 共49页
语音处理基础大作业Word格式文档下载.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

语音处理基础大作业Word格式文档下载.docx

《语音处理基础大作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《语音处理基础大作业Word格式文档下载.docx(49页珍藏版)》请在冰点文库上搜索。

语音处理基础大作业Word格式文档下载.docx

770HZ

4

5

6

B

852HZ

7

8

9

C

941HZ

*

#

D

DTMF信号在电话中有两种作用,一个是用拨号信号去控制交换机接通被叫的用户电话机,另一个作用是控制电话机的各种动作,如播放留言、语音信箱等。

要求:

1,通过键盘任意输入16个键之一,生成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的实序列,且X(K)=DFT【x(n)】,则

(1.)X(K)共轭对称,即X(K)=X*(N-K),0≤k≤N-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变化。

先对该信号进行205点上的DFT变换,然后进行固定点上DFT的提取,并输出该点上的DFT的幅值。

(4)从输出幅值判断输入字母。

制定一个判断标准,通过该判断标准得出相应的行与列,进而确定该点的ASCII值,输出对应的字母。

五、程序框图:

六、源程序:

closeall;

clearall;

clc;

f1=697;

f2=770;

f3=852;

f4=941;

f5=1209;

f6=1336;

f7=1447;

f8=1663;

fs=8000;

n=1:

205;

while

(1)

clc

flag=0;

disp('

1209133614471663'

);

697123A'

770456B'

852789C'

941*0#D'

'

in_key=input('

请输入按键'

'

s'

switchin_key

case['

1'

]

x1=sin(2*pi*n*f1/fs);

x2=sin(2*pi*n*f5/fs);

2'

x2=sin(2*pi*n*f6/fs);

3'

x2=sin(2*pi*n*f7/fs);

A'

x2=sin(2*pi*n*f8/fs);

4'

x1=sin(2*pi*n*f2/fs);

5'

6'

B'

7'

x1=sin(2*pi*n*f3/fs);

8'

9'

C'

*'

x1=sin(2*pi*n*f4/fs);

0'

#'

D'

otherwise

flag=1;

clc;

disp('

你输入按键错误'

temp=input('

是否要继续Y|y---是N|n--否'

if(temp==['

n'

]|temp==['

N'

])flag=0;

end

end;

if(flag==0)break;

end

xn=x1+x2;

xk=fft(xn,205);

%对x(n)做采样点数为205点的fft变换%

k=0:

204;

%figure('

name'

实验五'

subplot(311);

plot(n,xn);

xlabel('

ylabel('

xn'

grid;

subplot(312);

stem(k,xk(1:

205));

%绘制以k为x轴,xk(1:

205)为y轴的离散序列图%

xlabel('

k'

xk'

grid;

xk=abs(xk);

%作xk的绝对值%

max1=1;

xmax1=xk

(1);

max2=1;

xmax2=xk

(1);

form=1:

60

if(xmax1<

xk(m))

xmax1=xk(m);

max1=m;

form=1:

if(xmax2<

xk(m)&

m~=max1)

xmax2=xk(m);

max2=m;

max1=max1-1;

max2=max2-1;

if(max1>

max2)

k=max1;

max1=max2;

max2=k;

------------------------经过传输后知道如下--------------------------------'

switchmax1

case18

switchmax2

case31

你输入的是-------1'

a=[max1max2];

b=[6971209];

subplot(313);

stem(a,b);

f'

case34

你输入的是-------2'

b=[6971336];

case37

你输入的是-------3'

b=[6971447];

case43

你输入的是-------A'

b=[6971663];

case20

你输入的是-------4'

b=[7701209];

你输入的是-------5'

b=[7701336];

你输入的是-------6'

b=[7701447];

case43

你输入的是-------B'

b=[7701663];

case22

switchmax2

你输入的是-------7'

b=[8521209];

你输入的是-------8'

b=[8521336];

你输入的是-------9'

b=[8521447];

你输入的是-------C'

b=[8521663];

end

case24

你输入的是-------*'

b=[9411209];

你输入的是-------0'

b=[9411336];

你输入的是-------#'

b=[9411447];

你输入的是-------D'

b=[9411663];

sh

是否要继续按键Y|y---是N|n--退出'

])break;

;

七、程序结果及图表:

a=input('

输入数字='

sm=abs(a);

%输入数字的ASCII值

pm=[49505165;

52535466;

55565767;

42483568];

%给出图表字母的相应ASCII值矩阵

forp=1:

4;

forq=1:

ifpm(p,q)==sm;

break,end

ifpm(p,q)==sm;

break,end

end%通过两个for循环判断键盘输入字母的具体行和列

fprintf('

ASCII码值AM=%0.f\n'

pm(p,q))

f1=[697770852941];

f2=[1209133614471663];

n=0:

x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000);

%DTMF信号的生成

figure('

color'

g'

subplot(211);

plot(x);

ylabel('

x'

title('

DTMF信号'

k=[1820222431343843];

%给出8个频率点

va=zeros(1,8);

%生成一个1行8列的零矩阵

8;

Fx(m)=gfft(x,205,k(m));

%对信号x进行205点上DFT变换,再取和k对应的8点上DFT变化并相应的放入Fx(m)

va=abs(Fx);

subplot(212);

stem(k,va);

|X(k)|'

l1=80;

l2=7.8;

%判断标准

fors=5:

ifva(s)>

l2;

forr=1:

ifva(r)>

l1;

end%通过判断标准判断出相应的行和列

disp(['

拨号符号='

setstr(pm(r,s-4))])%输出判断出的相应行、列ASCII值矩阵对应的符号

结果及图示如下:

输入数字=1,ASCII码值AM=,49拨号符号=1

图一

输入数字,=2ASCII码值AM=50拨号符号,=2

图二比较以上两图,每幅图的上面均为该字母所对应的两固定频率所产生的DTMF信号,且它们只是205点上的离散信号,下图是对该字母DTMF信号x进行205点上DFT变换,再取和k对应的8点(1820222431343843)上DFT变化的幅值,其中前4点决定该字母所在原矩阵中的行,后4点决定该字母所在原矩阵中的列,该图也证明了前四点表示的意义。

输入数字=4

ASCII码值AM=52图三

拨号符号=4

比较图一、图三,可以看出后四点表示的是字母所在原矩阵中的列,该图也证明了后四点表示的意义。

以上三幅图均证明了程序的正确。

因为采样频率是8000Hz,因此要求每125ms输出一个样本,得到的序列再送到D/A变换器和平滑滤波器,输出便是连续时间的DTMF信号。

DTMF信号通过电话线路送到交换机。

基于Goertzel算法的双音多频信号检测

在接收端,要对收到的双音多频信号进行检测,检测两个正弦波的频率是多少,以判断所对应的十进制数字或者符号。

显然这里仍然要用数字方法进行检测,因此要将收到的时间连续DTMF信号经过A/D变换,变成数字信号进行检测。

检测的方法有两种,一种是用一组滤波器提取所关心的频率,根据有输出信号的2个滤波器判断相应的数字或符号。

另一种是用DFT(FFT)对双音多频信号进行频谱分析,由信号的幅度谱,判断信号的两个频率,最后确定相应的数字或符号。

当检测的音频数目较少时,用滤波器组实现更合适。

FFT是DFT的快速算法,但当DFT的变换区间较小时,FFT快速算法的效果并不明显,而且还要占用很多内存,因此不如直接用DFT合适。

下面介绍Goertzel算法,这种算法的实质是直接计算DFT的一种线性滤波方法。

这里略去Goertzel算法的介绍,可以直接调用MATLAB信号处理工具箱中戈泽尔算法的函数Goertzel,计算N点DFT的几个感兴趣的频点的值。

二语音合成与语音识别

语音识别的发展历史

早在计算机发明之前,自动语音识别的设想就已经被提上了议事日程,早期的声码器可被视作语音识别及合成的雏形。

而1920年代生产的"

RadioRex"

玩具狗可能是最早的语音识别器,当这只狗的名字被呼唤的时候,它能够从底座上弹出来。

最早的基于电子计算机的语音识别系统是由AT&

T贝尔实验室开发的Audrey语音识别系统,它能够识别10个英文数字。

其识别方法是跟踪语音中的共振峰。

该系统得到了98%的正确率。

到1950年代末,伦敦学院(ColledgeofLondon)的Denes已经将语法概率加入语音识别中。

1960年代,人工神经网络被引入了语音识别。

这一时代的两大突破是线性预测编码LinearPredictiveCoding(LPC),及动态时间弯折DynamicTimeWarp技术。

语音识别技术的最重大突破是隐含马尔科夫模型HiddenMarkovModel的应用。

从Baum提出相关数学推理,经过Labiner等人的研究,卡内基梅隆大学的李开复最终实现了第一个基于隐马尔科夫模型的大词汇量语音识别系统Sphinx。

[1]。

此后严格来说语音识别技术并没有脱离HMM框架。

  尽管多年来研究人员一直尝试将“听写机”推广,语音识别技术在目前还无法支持无限领域,无限说话人的听写机应用。

语音识别概述

语音识别技术,也被称为自动语音识别AutomaticSpeechRecognition,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。

与说话人识别及说话人确认不同,后者尝试识别或确认发出语音的说话人而非其中所包含的词汇内容。

语音识别技术的应用包括语音拨号、语音导航、室内设备控制、语音文档检索、简单的听写数据录入等。

语音识别技术与其他自然语言处理技术如机器翻译及语音合成技术相结合,可以构建出更加复杂的应用,例如语音到语音的翻译。

语音识别技术所涉及的领域包括:

信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。

语音合成

语音是信息传播的一大媒介。

近年来,提供语音服务的语音系统迅速发展起来。

传统的语音系统一般采用预录音回放技术,由于这种方法必须对信息文本事先进行录音,并存为声音文件,因此,所占用的存储空间很大。

另外,一个更大的缺点是不能实时反映信息的更新,应用范围有很大的局限性。

现在的语音合成技术,无需对大量的信息进行录音,极大地减少了工作量和节省了存储空间,尤其是在信息内容需要经常变动的动态查询场合,如股市行情查询、有声Email系统,都是传统的预录音技术无法代劳的。

结合其他技术,语音合成技术可以广泛应用于金融、邮电、工商、政府机关、交通、教育、游戏等领域。

传统的语音系统

输入语音

语音信号的参数合成

根据语音产生的数学模型,利用短时平稳性,提出每帧语音信号的参数,这些参数经编码后组成一个语音参数库。

输出时,从语音参数库中取出相应的参数,利用语音产生的数学模型恢复语音。

共振峰合成和线性预测合成是该类合成技术中的重要方法。

直接录放流程

输入语音

波形合成方法

合成语音

语音信号的规则合成

将任意文本转换成声音的系统。

包括语言学和声学处理。

合成的词汇不是事先确定。

常见的就是文语转换合成技术。

系统中存储的是音素的声学参数,以及由音素组成音节、由音节组成词、由词组成句子的规则;

控制音调、轻重音等韵律的各种规则。

在波形合成法中,也可以使用波形编码技术略微压缩一些存储量。

通常情况下,波形合成法可以合成的语音词汇量约在500以下,而参数合成法则可以达到数千左右。

当然,在参数合成时,由于抽取参数或编码过程中,难免存在逼近误差,所以合成的语音质量(清晰

度)也就比波形合成法要差一些了。

在语音合成中,另一个重要问题就是合成基元的选择问题,也就是存储的语音基元的选择问题。

显然,合成词汇量越大,必须采用越小的基元,否则存储量就太大了;

反之,合成词汇量越小,可用较大的基元。

例如在英语中,词的数量有千千万万,但是音素质有成百个。

因此存储全部

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

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

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