语音信号合成器设计与实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

语音信号合成器设计与实现通信工程1204班指导教师:王祥青组员徐小阳蒋高峰程军生贾玉飞吕凡背景1.1概述语音是人类相互之间进行交流时使用最多、最自然、最基本也是最重要的信息载体。在高度信息化的今天,语音处理的一系列技术及其应用已成为信息社会不可或缺的重要组成部分。语音的产生是一个复杂的过程,包括心理和生理等方面的一系列动作。当人需要通过语音表达某种信息时,首先是这种信息以某种抽象的形式表现在说话人的大脑里,然后转换为一组神经信号,这些神经信号作用于发声器官,从而产生携带信息的语音信号。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息的形式。语言是人类特有的功能,声音是人类常用的工具,是相互传递信息的最主要的手段。因此,语音信号是人们构成思想疏通和感情交流的最主要的途径。并且,由于语言和语音与人的智力活动密切相关,与社会文化和进步紧密相连,所以它具有最大的信息容量和最高的智能水平。现在,人类已开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。语音合成的目的就是让计算机说话。最简单的语音合成应当是语音响应系统,其实现技术非常简单。在计算机内建立一个语音库,将可能用到的单词,词组或一些句子的声音信号编码后存入计算机,当键入所要的字,词组或句子代码时,就能调出对应代码信号,并转换成声音。1.2matlabMatlab是美国MathWorks公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。同时由于Matlab是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。声卡是计算机对语音信号进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D和D/A转换等功能。尽管在Windows附件的娱乐中带有一个录音机,通过它可以驱动声卡采集语音信号并保存为语音文档。但是要对采集的信号进一步分析处理就必须另外编程或通过其它软件,而且Windows附件中的录音机功能极其有限且不能扩展。设计目的(1)自行产生两个语音信号(男声和女声)(2)分别对两路信号进行频谱分析和特征提取,并画出两路语音信号的频谱图(3)试将两语音信号分别合成为男声或女声(4)播放合成后的语音信号设计原理3.1.1语音信号的频谱分析过程傅里叶频谱分析是语音信号频域分析中广泛采用的一种方法。语音波是一个平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”。进行频谱分析时,在时域数据进行短时FFT处理之前都要进行加窗处理。在FFT处理之后,普通频谱分析可以进行频域上的滤波处理,从而使频谱更加平滑。最后IFFT处理观察恢复后的时域信号图形,频谱分析过程。3.1.2短时傅里叶变换(频谱分析)傅里叶频谱分析的基础是傅里叶变换,用傅里叶变换及其反变换可以求得傅里叶谱、自相关函数、功率谱、倒谱。由于语音信号的特性是随着时间缓慢变化的,由此引出语音信号的短时分析。如同在时域特征分析中用到的一样,这里的傅里叶频谱分析也采用相同的短时分析技术。信号x(n)的短时傅里叶变换定义为:式中,为窗口函数。可以从两个角度理解函数的物理意义:第一种解释是,当n固定时,n=如,则是将窗函数的起点移至处截取信号x(n),再做傅里叶变换而得到的一个频谱函数。这是直接将频率轴方向来理解的。另一种解释是从时间轴方向来理解,当频率固定时,例如,则可以看做是信号经过一个中心频率为的带通滤波器产生的输出。这是因为窗口函数通常具有低通频率响应,而指数对语音信号有调制的作用,使频谱产生移位,即将x(n)频谱中对应于频率的分量平移到零频。3.1.3快速傅里叶变换有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长序列。但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT).1965年,Cooley和Tukey提出了计算离散傅里叶变换(DFT)的快速算法,将DFT的运算量减少了几个数量级。从此,对快速傅里叶变换(FFT)算法的研究便不断深入,数字信号处理这门新兴学科也随FFT的出现和发展而迅速发展。根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是2DIT和基2DIF。FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。快速傅里叶变换(FFT),是离散傅里叶变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于计算机系统或者说数字系统中应用离散傅里叶变换,可以说是进了一大步。设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N^2次运算。当N=1024点甚至更多的的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。离散傅里叶变换X(k)可看成是z变换在单位圆上的等距离采样值。同样,X(k)也可看作是序列傅氏变换的采样,采样间隔为N=2/N。由此看出,离散傅里叶变换实质上是其频谱的离散频域采样,对频率具有选择性(k=2k/N),在这些点上反映了信号的频谱。根据采样定律,一个频带有限的信号,可以对它进行时域采样而不丢失任何信息,FFT变换则说明对于时间有限的信号(有限长序列),也可以对其进行频域采样,而不丢失任何信息。所以只有时间序列足够长,采样足够密,频域采样也就可较好的反映信号的频谱趋势,所以FFT可以用以进行连续信号的频谱分析。3.1.4短时傅里叶反变换(倒谱分析)傅里叶变换建立了信号从时域到频域的变换桥梁,而傅里叶反变换则建立了信号从频域到时域的变换桥梁这两个域之间的变换为一对一映射关系。我们知道,可以看作是加窗后函数的傅里叶变换,为了实现反变换,将进行频率采样,即令=2πk/L,则有=其中,L为频域采样点数。将在时域n上每隔R个样本采样,则可令=,n=rR,r=1,2,...用Y()求出其离散傅里叶反变换(n)如下:(n)=而,而可以证明,x(n)和y(n)之间只相差一个比例因子。他们的关系如下:3.1.5.Hilbert变换基于利用DFT求解一个序列的解析信号及hilbert变换的理论,利用MATLAB语言编写了扩展函数yhilbert.m,另外MATLAB工具箱本身也提供了计算hilbert变换的函数hilbert.m,其格式为y=Hilbert(x).但需要注意的是,该函数计算出的结果是序列的解析信号,其虚部才是序列的hilbert变换。Hilbert变换具有两个性质:性质一:序列x(n)通过Hilbert变换器后,信号频谱的幅度不发生变化,这是因为hilbert变换器是全通滤波器,引起频谱变化的只是其相位。性质二:序列x(n)与其Hilbert变换是正交的。设计过程4.1MATLAB处理音频信号的流程分析和处理音频信号,首先要对音频信号进行采集,MATLAB数据采集工具箱提供了一整套命令和函数,通过调用这些命令和函数,可直接控制声卡进行数据采集。Windows自带的录音机程序也可驱动声卡来采集语音信号,并能保存为WAV格式文件,供MATLAB相关函数直接读取、写入或播放。本文以WAV格式音频信号作为分析处理的输入数据,用MATLAB处理音频信号的基本流程是:先将WAV格式音频信号经wavread函数转换MATLAB列数组变量;再用MATLAB强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite转换成WAV格式文件或用sound、wavplay等函数直接回放。下面分别介绍MATLAB在音量标准化、语音合成等音频信号处理方面的技术实现。4.2语音信号采样并进行频谱分析4.2.1语音信号采集该实验以两种男女声音乐为分析样本。在MATLAB中使用wavread函数,可得出声音的采样频率FS为16000Hz。利用sound函数,可清晰地听到女生音乐和男生音乐,采样数据并画出波形图4.2.2画出频谱图接下来对采样数据作快速傅里叶(fft)变换并画出频谱图和以dB为单位的信号频谱。由频谱图2可清楚地看到样本声音主要以低频为主。人的语音信号频率一般集中在200kHz到4.5kHz之间,从声音频谱的包络来看,样本声音的能量集中在0.1pi(1102.5)以内,0.4pi以内的高频部分很少。所以信号宽度近似取为1.1kHz,由采样定理可得FS2f0=2*1102.5=2205Hz,重放语音后仍可较清晰的听出原声,不存在声音混叠现象。4.2.3语音信号合成后波形图和频谱图对男声信号进行hilbert变换得到包络,信号对齐男声包络调制女声振幅生成的数据归一化处理对生成文件进行FFT分析。做原始语音信号的时域图形和语音信号的FFT频谱图。实验代码及结果5.1MATLAB源程序%录音时间随便定%录入女生语音信号[y,fs1]=wavread('4.wav');%分析女生信号y=y(:,1);t=(0:length(y)-1)/fs1;sigLength=length(y);Y=fft(y,sigLength);halflength=floor(sigLength/2);f=fs1*(0:(halflength-1))/sigLength;figure(1);plot(t,y);gridon;axistight;title('女生语音信号');xlabel('time(s)');ylabel('幅度');figure(2);plot(f,abs(Y(1:halflength)));gridon;axistight;title('女生信号FFT频谱');xlabel('Hz');ylabel('幅度');%录入男生语音信号[y1,fs2]=wavread('6.wav');%分析男生信号y1=y1(:,1);t1=(0:length(y1)-1)/fs2;sigLength1=length(y1);Y1=fft(y1,sigLength1);halflength1=floor(sigLength1/2);fl=fs2*(0:(halflength1-1))/sigLength1;figure(3);plot(t1,y1);gridon;axistight;title('男生语音信号');xlabel(‘time(s)’);ylabel('幅度');figure(4);plot(fl,abs(Y1(1:halflength1)));gridon;axistight;title('男生

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功