语音信号处理过程
- 格式:doc
- 大小:136.02 KB
- 文档页数:13
《现代语音处理技术及应用期中考试》
姓名: 李红启
班级: A1011
学号: 36
一、实验原理
1、汉明窗加窗
给输入语音信号加窗
x(m)=s(m)w(n-m)
2、倒谱和复倒谱的实现
倒谱主要应用在语音信号同态处理中,同态处理方法是一种设法将非线性问题转化为线性问题来进行处理方法,它 能将两个信号通过乘法合成的信号,或通过卷积合成的信号分开。卷积同态系统的典范表示如图1 所示,它由三部分组成:第一部分为卷积同态系统的特征系统D*[ ],其输入是若干信号的卷积组合,而输出为若干信号的加法组合。
利用z 变换表示,卷积组合可变为乘法组合,再利用对数特性,可将乘法组合变为加法组合,再进行z 逆变换,输出信号仍为加法组合,这就构成了卷积同态系统的特征系统D*[ ],如图1 所示。
图 1 卷积同态系统的特征系统
这给出一种卷积同态系统构成方法。如果把输入序列局限于为绝对可加的情形,则输入信号的 z 变换具有包括单位圆在内的一个收敛域。也就是说,可以求得这个序列的傅里叶变换。在此情况下,图1中用傅里叶变换运算代替z 变换运算是恰当的。卷积同态系统可表示为图 2。
图 2 复倒谱的计算
由于复倒谱出现了多值性和arg[X(ejw )]的不连续性导致我们在分析时会出现很多问题,这里不一一讨论。于是我们提出了倒谱的概念。倒谱 c(n)由下式给出:
这里我们对 x(n)的 X(ejw )作了取模运算,这样算出的 c(n)是实数谱并且很好的解决了复倒谱出现的问题。为得到倒频谱的近似式, 可对输入序列进行离散傅里叶变换,取其模的对数,再计算离散傅里叶反变换。
图 3 倒谱的计算
图 2 是求复倒谱的原理图,图 3 是求倒谱的原理图。本软件设计中就是根据图 3 的原理来计算一段语音信号的倒谱的。
由于经过了同态处理后将声道冲击响应和激励信号变为加信号,并且,声道冲击响应处于低时部分,而激励信号处于高时部分,可以通过倒谱滤波器将声道冲击响应和激励信号分开
二、实验程序:
1、录音程序
x=wavrecord(16000,8000,1)
wavwrite(x,'a.wav')
plot(x)
00.511.522.5x 104-0.4-0.3-0.2-0.100.10.20.30.4 2、浊音的程序
600060506100615062006250630063506400-0.2-0.15-0.1-0.0500.050.10.15
[y,Fs,bits]=wavread('a.wav');% 读出信号,以及采样率和采样位数
y=y(:,1); % 单声道处理
y1=y(6000:5400); % 取浊音
y2=y1.*hamming(length(y1)); % 加汉明窗
sigLength=length(y2); % 求y2的长度
Y=zeros(Fs,1);
Y=20*log10(abs(fft(y2,sigLength))); % 求浊音的频谱
y=y'; %转置成向量,便于处理
a=fft(y1); %对y1做DFT变换
d=log(a); %取对数
c=ifft(d); %做IDFT变换
c=c(1:60);
a1=fft(y1); %对y1做DFT变换
b1=abs(a1); %取模远算
d1=log(b1);%取对数
c1=ifft(d1); %做IDFT变换
c2=c1(1:26);
k=c1(1:26);
k1=fft(k);
k2=exp(k1); k3=ifft(k2);
h=c1(27:200);
h1=fft(h);
h2=exp(h1);
h3=ifft(h2);
sigLength=length(y2);
Y1=20*log10(abs(fft(k3,sigLength)));
sigLength=length(y2);
Y2=20*log10(abs(fft(h3,sigLength)));
figure(1);
subplot(4,2,1);
plot((1:length(y1))/8,y2); % 以时间为横轴
title('加汉明窗的信号幅度');
xlabel('t/ms');ylabel('x(n)');
subplot(4,2,2);
plot(Y); % 一点对应1HZ
title('对数幅度谱');
xlabel('Frequence(Hz)');
ylabel('20lg|Xn(ejw)|');
subplot(4,2,3);
plot(c);
title('浊音段复倒谱');
xlabel('t/ms');ylabel('c(n)');
subplot(4,2,4);
plot(c2);
title('浊音段倒谱');
xlabel('t/ms');ylabel('c(n)');
subplot(4,2,5);
plot((1:length(k3))/8,k3);
title('所得的冲激响应');
xlabel('t/ms');ylabel('c(n)');
subplot(4,2,6);
plot((1:length(h3))/8,h3);
title('所得的激励信号');
xlabel('t/ms');ylabel('h(n)');
subplot(4,2,7);
plot(Y1);
title('平滑的对数幅度谱');
xlabel('Frequence(Hz)'); subplot(4,2,8);
plot(Y2);
title('倒谱高时间部分的对数幅度谱');
xlabel('Frequence(Hz)');
0204060-0.500.5加汉明窗的信号幅度t/ms加汉明窗的信号幅度x(n)0100200300400-100-50050对数幅度谱Frequence(Hz)对数幅度谱20lg|Xn(ejw)|-1.5-1-0.500.517.8357.84x 10-3浊音段复倒谱t/ms浊音段复倒谱c(n)0204060-202浊音段倒谱t/ms浊音段倒谱c(n)01234-0.500.5所得的冲激响应t/ms所得的冲激响应c(n)0510152025-101所得的激励信号t/ms所得的激励信号h(n)0100200300400-20-100平滑的对数幅度谱Frequence(Hz)平滑的对数幅度谱0100200300400-10010倒谱高时间部分的对数幅度谱Frequence(Hz)倒谱高时间部分的对数幅度谱
%清音的程序
200020502100215022002250230023502400-0.06-0.04-0.0200.020.040.06
y=wavread('a.wav');
y=y(:,1);
y3=y(2000:2400);
y4=y3.*hamming(length(y3));
sigLength=length(y3);
Y=20*log10(abs(fft(y,sigLength)));
a=fft(y);
b=abs(a);
d=log(b);
c=ifft(d);
c=c(1:60);
h=c(1:60);
h1=fft(h);
h2=exp(h1);
h3=ifft(h2);
sigLength=length(y3);
Y=20*log10(abs(fft(h3,sigLength)));
figure(2);
subplot(2,2,1);
plot((1:length(y3))/8,y4);
title('加汉明窗的信号幅度'); xlabel('t/ms');ylabel('x(n)');
subplot(2,2,2);
plot(Y);
title('对数幅度谱');
xlabel('Frequence(Hz)');
ylabel('20lg|Xn(ejw)|');
subplot(2,2,3);
plot(c);
title('清音段倒谱');xlabel('t/ms');ylabel('c(n)');
subplot(2,2,4);
plot(Y);
title('平滑的对数幅度谱');
xlabel('Frequence(Hz)');
0204060-0.1-0.0500.050.1加汉明窗的信号幅度t/msx(n)020040060005101520对数幅度谱Frequence(Hz)20lg|Xn(ejw)|0204060-0.500.51清音段倒谱t/msc(n)020040060005101520平滑的对数幅度谱Frequence(Hz) 四、分析总结
在采样频率为fs=8KHz,使用汉明窗加权,窗长为300点。对浊音信号加汉明窗得到第一个加窗信号,浊音的加窗的对数幅度谱即为第2副图。浊音信号的倒谱中第一个峰值出现的位置,即语音段的基音周期,而轻音的倒谱中则不存在峰值。利用倒谱的这个特点我们可以进行语音的清浊音的判决,并且可以估计浊音的基音周期。倒谱还可以用于估计信号的共振峰。对倒谱进行滤波,取出低时间部分进行逆特征系统处理,我们可以得到一个平滑的对数谱函数,这个平滑的对数谱函数显示了输入的语音段的共振峰结构,同时谱的峰值对应与共振峰频率。因此,对于浊音的声道特性,可以采样前3个共振峰来描述;而清音却不具备共振峰的特点,可以简单的用一个零点和一个极点模型来反映声道特性,平滑对数谱中最高峰的位置即为极点,而零点位置应使得低频和高频之间的相对幅度得以保持。而对于浊音,激励信号由间隔为基因周期的冲激序列构成;对于清音,激励信号由随机噪声序列构成。同时还可以得知合成的激励信号与合成的声道冲激响应经卷积即可合成语音。
.