语音信号处理(一)
(2011-11-25 23:00:38)
标签:
语音信号处理杂谈 |
分类: 语音信号处理 |
语言是从千百万人的言语中历史地概括总结出来的规律符号系统,使人们用以进行思维、交际的形式。语言是人类特有的功能,它创造和记载了几千年的人类文明历史。语音是声音和意义的结合体,也是信息的载体。
语音信号处理是是研究用数字信号处理技术队语音信号进行处理,处理的目的是用于得到的某些参数以便高效传输和存储;或者应用于人工合成、语音识别和语音增强等。语音信号处理是一个新兴的的学科,同时又是综合性的多学科领域,是一门设计很广的交叉学科,它与语音学、语言学、声学,认知科学、心理学、心理学、数理统计学等许多学科也有着非常密切的联系。
自计算机诞生以来,通过语音与计算机交互一直是人类的梦想,随着计算机软硬件和信息技术的飞速发展,这不仅对语音信号数字处理提出了越来越高越来越迫切的需求,如实现用语音输入代替键盘输入实现人工智能和交互,同时也为语音信号处理提供了高效软硬件实现的可能性。
语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。语言也是人与机器之间进行通信的重要工具,可为信息处理系统建立良好的人机交互环境,可以更好地实现人工智能,为信息社会的构建是至关重要的。
20世纪60年代中期形成的一系列数字信号处理的理论和算法,如数字滤波器、快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础。在方法上,随着电子计算机的发展,以往的以硬件为中心的研究正逐渐转化为以软件为基础的研究,即计算机的软件模拟取代了硬件研制的传统做法。各种新的思想和方法不断涌现,语音信号处理也取得了重大的进展。在整个20世纪70年代,有几项研究成果对语音信号处理技术的进步和发展产生了重大的影响。70年代初由Itakura提出的动态时间规划(DTW)技术是语音识别研究方面开辟了新思路,一种模式匹配和模型训练技术,它应用动态规划的思想成功解决了语音信号特征参数序列比较时时长不等的难题,在孤立词语音识别中获得了良好性能,且由于DTW算法计算量较少、无需前期的长期训练,很容易将DTW算法移植到单片机、DSP上实现语音识别且能满足实时性要求,其在孤立词语音识别系统中仍然得到了广泛的应用。70年代中期提出了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,广泛应用于语音信号的分析、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;70年代末Linda、Buzo、Gray和Markel等人提出了一种新的基于聚类分析的高效数据压缩技术——矢量量化(VQ)应用于语音信号处理中,它不仅在语音识别、语音编码和说话人识别等方面发挥了重要作用,而且也很快推广到其他领域。
20世纪80年代,由于矢量量化、隐马尔可夫模型(HMM)和热工神经网络等相继被应用与语音信号处理,应经过不断的改进和完善,使语音信号处理技术有了突破性的进展。80年代产生的HMM是语音信号处理技术的重大发展,它是语音信号的一种统计模型,它描述语音信号过程的产生,而且HMM已构成了现代语音识别研究的重要基石,也是目前语音识别技术等地主流研究途径。其理论基础是1970年前后由Baum等人建立起来的。
20世纪90年代以来,语音信号处理在实用化处理方面取得了实质性的进展,其中,语音识别逐渐由实验室走向实用化。而且,关于文本——语音自动转化系统(TTS)近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项课题是促进其发展的重要动力之一,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。
时域信号处理的简要程序
%%
%预加重处理
xx=double(y0);
xx=filter([1 -0.9375],1,xx);%预加重处理
Y1=fft(xx);
figure;subplot(211)
plot(t,xx)
xlabel('Time/s'),ylabel('Magnitude'); %预加重处理后的时域波形
title('预加重处理后的时域波形'),grid on,axis([0 14 -2 2])
subplot(212),f=Fs*(0:halflength)/sigLength;
plot(f,abs(Y1(1:halflength+1)))
% axis([0 4000 0 5])
xlabel('Frequency/Hz'),ylabel('Power') %画频域波形
title('预加重处理后的频域波形'),grid on
%%
%分帧加窗,并计算短时平均能量
n=32;clear E
for i=3:6
end
figure,subplot(411);plot(E(1,:));
xlabel('帧');ylabel('短时平均能量');
title('矩形窗N=2^{(i-2)*N},i=3')
subplot(412);plot(E(2,:));axis([0 900 0 120])
xlabel('帧');ylabel('短时平均能量');
title('矩形窗N=2^{(i-2)*N},i=4')
subplot(413);plot(E(3,:));axis([0 450 0 180])
xlabel('帧');ylabel('短时平均能量');
title('矩形窗N=2^{(i-2)*N},i=5')
subplot(414);plot(E(4,:));axis([0 225 0 360])
xlabel('帧');ylabel('短时平均能量');
title('矩形窗N=2^{(i-2)*N},i=6')
for i=3:6
end
figure,subplot(411);plot(E(1,:));
xlabel('帧');ylabel('短时平均能量');axis([0 length(E(1,:))+50 0 1500])
title('Hamming窗N=2^{(i-2)*N},i=3')
subplot(412);plot(E(2,:));axis([0 (length(E(1,:))+50)/2 0 6000])
xlabel('帧');ylabel('短时平均能量');
title('Hamming窗N=2^{(i-2)*N},i=4')
subplot(413);plot(E(3,:));axis([0 (length(E(1,:))+50)/4 0 24000])
xlabel('帧');ylabel('短时平均能量');
title('Hamming窗N=2^{(i-2)*N},i=5')
subplot(414);plot(E(4,:));axis([0 (length(E(1,:))+50)/8 0 80000])
xlabel('帧');ylabel('短时平均能量');
title('Hamming窗N=2^{(i-2)*N},i=6')
%%
%分帧加窗,并计算短时平均幅度
clear M
for i=3:6
end
figure,subplot(411);plot(M(1,:));
xlabel('帧');ylabel('短时平均幅度');
title('矩形窗N=2^{(i-2)*N},i=3')
subplot(412);plot(M(2,:));axis([0 900 0 120])
xlabel('帧');ylabel('短时平均幅度');
title('矩形窗N=2^{(i-2)*N},i=4')
subplot(413);plot(M(3,:));axis([0 450 0 200])
xlabel('帧');ylabel('短时平均幅度');
title('矩形窗N=2^{(i-2)*N},i=5')
subplot(414);plot(M(4,:));axis([0 225 0 380])
xlabel('帧');ylabel('短时平均幅度');
title('矩形窗N=2^{(i-2)*N},i=6')
for i=3:6
end
figure,subplot(411);plot(M(1,:));
xlabel('帧');ylabel('短时平均幅度');axis([0 length(M(1,:))+50 0 100])
title('Hamming窗N=2^{(i-2)*N},i=3')
subplot(412);plot(M(2,:));axis([0 (length(M(1,:))+50)/2 0 180])
xlabel('帧');ylabel('短时平均幅度');
title('Hamming窗N=2^{(i-2)*N},i=4')
subplot(413);plot(M(3,:));axis([0 (length(M(1,:))+50)/4 0 360])
xlabel('帧');ylabel('短时平均幅度');
title('Hamming窗N=2^{(i-2)*N},i=5')
subplot(414);plot(M(4,:));axis([0 (length(M(1,:))+50)/8 0 750])
xlabel('帧');ylabel('短时平均幅度');
title('Hamming窗N=2^{(i-2)*N},i=6')