基于振幅调制的语音信号合成 孙崇雨Word下载.docx
《基于振幅调制的语音信号合成 孙崇雨Word下载.docx》由会员分享,可在线阅读,更多相关《基于振幅调制的语音信号合成 孙崇雨Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
二、设计原始资料:
MATLAB软件编程环境;
PC机
三、设计应解决下列各主要问题:
1、选择合适的语音合成方法,并用MATLAB实现;
2、选择合适的方法对语音信号进行分析处理;
3、利用幅度调制法进行语音合成。
四、设计说明书应附有下列图纸:
五、命题发出日期:
2013-12-15设计应完成日期:
2013-12-27
设计指导教师(签章)
教研室主任(签章)
指导教师对课程设计的评语
指导教师(签章):
年月日
摘要
语音信号处理是一门比较实用的电子信息工程专业课程,而语音是人类获取信息的的重要来源和利用信息的重要手段。
通过语言相互传递信息是人类最重要的基本功能之一。
语音信号是一种非平稳的时变信号,它携带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。
Matlab是一个数据分析和处理功能十分强大的工程实用软件。
本文介绍了利用matlab软件实现驱动声卡采集语音信号和语音信号采集后的处理方法,并通过实例利用matlab分析了语音信号处理的过程,并最终得到合成的语音信号。
关键词:
语音信号处理语音合成MATLAB
目录
1绪论………………………………………………………………………5
2设计与实现……………………………………………………………6
2.1相关知识简介………………………………………………………6
2.2语音合成方法确定…………………………………………………8
2.2.1LPC线性预测参数法……………………………………………8
2.2.2振幅调制法………………………………………………………10
2.3语音合成步骤………………………………………………………11
2.3.1男声处理…………………………………………………………11
2.3.2女声处理…………………………………………………………15
2.3.3声音调幅载波……………………………………………………19
3设计总结与心得体会……………………………………………………21
4附录…………………………………………………………………………22
4.1参考文献………………………………………………………………22
4.2程序代码………………………………………………………………23
1、绪论
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
同时,语言也是人与机器之间进行通信的重要工具,它是一种理想的人机通信方式,因而可为信息处理系统建立良好的人机交互环境,进一步推动计算机和其他智能机器的应用,提高社会的信息化程度。
语音合成技术和语音识别是实现人机语音通信,建立一个有听和讲能力的语音系统所必需的两项关键技术。
使电脑具有类似于人一样的说话和听懂人说话的能力,是90年代信息产业的重要竞争市场。
和语言识别相比,语言合成的技术相对说来要成熟一些,是该领域中近期最有希望产生突破并形成产业化的一项技术。
综观语言合成技术的研究,语音合成发展方向为:
1.、提高合成语音的自然度;
2、丰富合成语音的表现力;
3、降低语音合成技术的复杂度;
4、多语种文语合成等,认真学习并研究语音信号的合成技术,对于我们开拓知识,提高能力,以及在后续课程的学习具有重要的意义。
2、设计与实现
2.1相关知识简介
人发声的声波区间:
男80Hz--500Hz;
女100Hz--1KHz,针对男女声音频率的不同,可以在频域上进行一些处理;
共振峰:
是指在声音的频谱中能量相对集中的一些区域,共振峰是音质的决定因素。
因此可以通过此特点来提取声音的一些特性;
数字滤波器设计原理:
数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。
在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。
FFT:
离散傅立叶变换的快速算法,可以将一个时域信号变换到频域来处理。
比如:
x=sin(2*pi*50*t)+sin(2*pi*100*t)+sin(2*pi*700*t)的图像与频谱如下,可以很直观的看到x的频率集中在50,100,700处。
分帧处理:
语音信号可以认为是短时平稳的。
在5~50ms的范围内,语音频谱特性和一些物理特性参数基本保持不变。
我们将每个短时的语音称为一个分析帧。
一般帧长取10~30ms。
可以看出分帧后一帧声音信号具有明显的周期性。
窗函数:
加窗函数来减小数据采样时带来的谱间泄漏。
Hanning窗在大多数场合很有效,它具有良好的频率分辨率,并降低了频率泄漏。
分帧时配合使用Hanning窗可以很好的对信号去噪,提取包络等处理。
MATLAB音频文件相关函数:
wavrecord(fs*t,fs):
以fs为采样率录音,录音时长为t;
wavwrite(y,fs,16,'
luyin.wav'
):
将luyin文件储存;
wavread('
yuyin.wav'
读取yuyin文件;
sound(a*y,b*fs):
以a倍振幅,b倍频率试听y文件。
2.2语音合成方法确定
2.2.1LPC线性预测参数法
1.语音生成模型
通过对声管的研究,发现它可以用一个N阶全极点滤波器表述,即:
对于典型的男声,N=10,所有的极点
要分别构成共轭对以保证
系数都是实数。
就可以得到产生语音信号的离散语音模型,如图所示:
假设激励信号用e(n)表示,语音信号用s(n)表示,根据全极点模型表达式,有:
从而可以用声管模型对激励信号进行滤波得到语音信号。
2.语音预测模型
假设已经知道了系数{ai},那么生成模型的输入和输出对换,就构成了语音的预测模型,即语音信号s(n)送入预测滤波器,得到预测残差e(n)
发端需要把误差e(n)传到收端,收端可以用e(n)作为上述差分方程的激励得到重建语音。
在发端,语音s(n)是滤波器的输入,而误差e(n)是输出。
系数{ai}也需要从发端传到收端,但因为语音具有短时平稳性,即在短时间内(比如10ms),系数{ai}可以认为不发生变化,所以也不必太频繁地传输,同时采用预测技术后,可以大幅度地降低语音的带宽。
这种通过现行预测方法压缩语音数据量的技术称为线性预测编码。
3.语音重建模型
如果知道激励信号x(n)和滤波器系数{ai},就可以利用激励生成重建语音了和语音生成模型的公式完全相同
但这个模型被称为语音重建模型,为了同生成模型区分开,
称为重建语音,如果x(n)正好等于e(n),那么重建语音就会和原始语音s(n)完全相同。
语音的非平稳性(虽然短时平稳)导致预测系数{ai}是时变的,一般每10~20ms就会发生一些变化以产生不同的音节。
在这种情况下,滤波过程也要分段进行,即每次用不同的滤波器系数,但相邻两次滤波必须要保持滤波器的状态不发生变化。
4.分析与合成语音
首先,抽样的语音信号被分成10ms长的段;
然后,对每段数据进行统计分析,计算相邻样点的相关性并最终得到最佳预测系数。
合成过程就是利用这些预测系数,以及周期的单位样值序列作为输入,依次得到每段合成语音。
通过以上理论分析发现,LPC线性预测参数法的特点:
虽然原理清晰,调节灵活,但实现过程较复杂,步骤较多,同时得到的音质较差。
因此我们采取下一种方法:
振幅调制法。
振幅调制法相比于LPC线性预测参数法较易实现。
2.2.2振幅调制法
振幅调制法相比于LPC线性预测参数法较简单,易于实现,同时步骤较少,因此可以减少积累误差。
振幅调制法的原理如下:
男声信号输入
女声信号输入
时频域分析处理
提取包络
提取音色频率
振幅调制
得到合成声音
下面具体介绍振幅调制法的具体过程以及如何用MATLAB实现,同时将设计过程及其中遇到的问题和解决办法列写出来。
2.3语音合成步骤
2.3.1男声处理
男声信号最关键的操作是提取频谱包络。
语音包络携带了语音信号的语义和个性化信息,准确提取频谱包络是语音分析的一项重要任务。
在许多科学领域的信号处理中,都需要提取信号的包络信息,因此现在有许多成熟的信号包络提取方法。
目前最常用的方法就是希尔伯特变换。
同时近年又兴起一种新的时频分析方法——小波变换,由于它具有良好的时频局部化特性和多尺度分析的功能,应用日益广泛。
利用小波变换(采用己调高斯小波)提取信号包络的效果比希尔伯特变换更好。
但是由于对于语音信号处理方面的知识储备不足,而且由于现在没有成型的小波变换模型供参考,因此本设计最终采用的是基于希尔伯特变换的包络提取。
同时在设计的过程中由于对包络的概念理解不清,也走了不少弯路,不过也取得了一些意外的效果。
在数学与信号处理的领域中,一个实值函数的希尔伯特变换是将信号s(t)与1/(πt)做卷积,以得到s'
(t)。
因此,希尔伯特变换结果s'
(t)可以被解读为输入是s(t)的线性时不变系统的输出,而此系统的脉冲响应为1/(πt)。
这是一项有用的数学工具,用在描述一个以实数值载波做调制的信号之复数包络,出现在通讯理论中发挥着重要作用。
希尔伯特变换的数学表达式:
s'
(t)=H(s)=s(n)h(t-n)dn=(1/π))(s(n)/(t-n))dn
其中h(t)=1/(πt)
Hilbert变换具有两个性质:
性质1序列x(n)通过Hilbert变换器后,信号频谱的幅度不发生变化,这是因为Hilbert变换器是全通滤波器,引起频谱变化的只是其相位。
性质2序列x(n与其Hilbert变换是正交的。
MATLAB提供了计算Hilbert变换的函数,其格式为y=Hilbert(x)。
但需注意的是,该函数计算出的结果是序列的解析信号,其虚部才是序列的Hilbert变换。
我们首先对采集到的语音信号进行预处理,截取片段,滤除其中的噪声。
对采集语音信号分析其频谱后,发现其含有一定的高频噪声,因此决定设计一个低通滤波器对其进行滤波。
设计的低通滤波器(设计为子程序)如下:
对采集到的信号选取的参数为:
通带频率:
400Hz。
阻带频率:
420Hz。
试听有较好的效果。
处理过程及结果如下:
其次我们对信号进行分帧处理。
由于语音信号的短时平稳特性,可以将平稳过程的处理方法和理论引入到语音信号的短时处理中,将语音信号划分为很多短时的语音段,每个短时的语音段称为一个分析帧。
这样,对一帧语音信号进行处理就相当