同态滤波和参数滤波两种方法解卷积

本文介绍了两种方法处理语音信号中的声门激励和声道信息:同态滤波通过倒谱处理分离信号,而参数解卷积利用LPC估计基频并生成激励信号。两种方法在浊音信号中效果相似,但在清音信号中,倒谱域特征不明显,更多依赖于滤波求残差作为声门信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

对语音信号的清音、浊音进行处理,把其中的声门激励信号和声道信息提取出来,采取的方法是同态滤波处理和参数解卷积两种方法


一、同态滤波方法

homomorphic filtering,大家都熟悉了,这里就简单说下,采用的原理如下图

两个信号的卷积,可以先求fft,在fft上求log,卷积运算变成下线性加法运算

具体公式:

时域到倒谱域,real(log( abs(fft(x)) ) )

经过处理之后(倒谱滤波),进而再进行反变换: ifft(exp(fft(cepstrum )))  我们就得到时域原始信号

倒谱提升一般叫:cepstrum liftering

这是quefrency倒频域,(可认为具体的频点是fs/n)

选择不同的提升窗,那么就可以提取声道还是声门信息。

读入原始信号,选择浊音部分

z=rceps(x);  %MATLAB提供的倒频谱函数
figure(3)
plot(z(1:512))

得到倒谱信号

倒谱上,信号有明显的峰值,说明原始信号是周期信号

这时候采用倒谱提升窗,分离声道信息和激励信息

%选择倒谱提升窗的边界点
mcep=40;

%声道信息
zz1 = zeros(size(z));

%激励信息
zz2 = zeros(size(z));

zz1(1:mcep) = z (1:mcep);
zz1(end - mcep +1 :end) = z (end - mcep +1 :end);

zz2(mcep+1:511) = z (mcep+1:511);
zz2(512:end-mcep) = z (512:end-mcep);

选用40的原因,在倒谱频域Quefrency轴上, 16000/40 = 320Hz,能cover -般的基频信息

%声道信息
% z1=real(ifft(exp(fft(zz1))));
z1= fft(real(ifft(exp(fft(zz1)))));

%激励信息
z2=real(ifft(exp(fft(zz2))));

figure
subplot(211)
plot(abs(z2(1:512)));
title('激励信号');
xlabel('时域');
ylabel('幅度');
% ylim([0 5]);

subplot(212)
plot(20*log10(abs(z1(1:512))));
title('声门信号');
xlabel('频域');
ylabel('分贝');

画出声门(时域)和声道信息(频域)

二、参数解卷积

使用自相关的办法求基频

x = voice_x;

% 最小频率点50hz
ms20=fs/50;                 

% 计算自相关
r=xcorr(x,ms20,'coeff');   

%最大频率点
ms2=fs/500    ;
%最小频率点
ms20=fs/50     ;
%确定delay
r=r(ms20+1:2*ms20+1);
[rmax,tx]=max(r(ms2:ms20));
f0 = fs/(ms2+tx-1);

调用LPC函数求LPC系数

%得到线性预测LP系数
ncoeff=2+fs/1000;
%lpc估计
a=lpc(x,ncoeff);

% [h t]= impz(1,a);
% figure
% plot(t,h);

%打印频谱
[h,f]=freqz(1,a,512,fs);

figure
subplot(211)
t = [0:length(x)-1]/fs;
% sim = A*sin(2*pi*f0*t);
f0 = fs/fix(fs/f0);

 产生激励信号

%creating pulsetrain;
for i =1:1024
    if i./((ms2+tx-1)) == floor(i./((ms2+tx-1)))
        sim(i) = 1;
    else
        sim (i) = 0;
    end
end

画出对应信号

plot(sim)
ylim([-2,2])
xlabel('时间');
ylabel('激励信号amp');
if (flag==0)
    title('清音,激励信号不做参考');
else
    title('浊音,激励信号');
end
    
% suptitle('参数提取方法');

subplot(2,1,2);
plot(f,20*log10(abs(h)+eps));
% plot(f,abs(h));

legend('LPC函数');
xlabel('频域');
ylabel('增益(dB)');

if (flag==0)
    title('清音,参数LPC声道不做参考');
else
    title('浊音,LPC声道信息');
end

 的到声门和激励

或者这里使用 滤波的方法求残差(激励信号)

e = G*U = S(z)* (1-Sigma a*z^p);

est_x = filter([0 -a(2:end)],1,x);
e = (x- est_x); %残差信号,也是声门信息
figure
plot(e(1:512))


总结

使用两种方法对比:

左:同态信号处理:

右:LPC参数办法:

两种办法结果是类似的

上文是对浊音周期信号处理,现在对清音信号处理

倒谱域上反映基频信息不明显

 

清音激励和声道,基本是白噪声谱,没有明显共振峰信息

好了,所以资源已经上传

同态滤波处理和LPC参数解卷积资源-优快云文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值