查看: 224|回复: 2|关注: 0

[已解决] 求问宋老师,多窗谱减法中有下面几个疑问(书上193页,代....

[复制链接]

新手

9 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
本帖最后由 飞翔的豆子 于 2018-11-6 19:21 编辑

function output=Mtmpsd_ssb(signal,wlen,inc,NIS,alpha,beta,c)
w2=wlen/2+1;
wind=hamming(wlen);                         % 定义汉明窗
y=enframe(signal,wind,inc)';                % 分帧
fn=size(y,2);                               % 求帧数
N=length(signal);                           % 信号长度
fft_frame=fft(y);                           % 对每帧信号计算FFT
abs_frame=abs(fft_frame(1:w2,  );           % 取正频率部分的幅值
ang_frame=angle(fft_frame(1:w2, );         % 取正频率部分的相位角

% 相邻3帧平滑
abs_frame_f=abs_frame;
for i=2:fn-1;
    abs_frame_f(:,i)=.25*abs_frame(:,i-1)+.5*abs_frame(:,i)+.25*abs_frame(:,i+1);
end;
abs_frame=abs_frame_f;

% 用多窗谱法对每一帧数据进行功率谱估计
for i=1:fn;
    per_PSD(:,i)=pmtm(y(:,i),3,wlen);
end;

% 对功率谱的相邻3帧进行平滑
per_PSD_f=per_PSD;
for i=2:fn-1;
    per_PSD_f(:,i)=.25*per_PSD(:,i-1)+.5*per_PSD(:,i)+.25*per_PSD(:,i+1);
end;
per_PSD=per_PSD_f;

% 在前导无话段中求取噪声平均功率谱
noise_PSD=mean(per_PSD(:,1:NIS),2);

% 谱减求取增益因子
for k=1:fn;
    g(:,k)=(per_PSD(:,k)-alpha*noise_PSD)./per_PSD(:,k);
    g_n(:,k)=beta*noise_PSD./per_PSD(:,k);
    gix=find(g(:,k)<0);
    g(gix,k)=g_n(gix,k);
end;

gf=g;
if c==0, g=gf; else g=gf.^0.5; end;         % 按参数c开方与否
sub_frame=g.*abs_frame;                     % 用增益因子计算谱减后的幅值
output=OverlapAdd2(sub_frame,ang_frame,wlen,inc); % 语音合成

output=output/max(abs(output));             % 幅值归一化
ol=length(output);                          % 把output补到与x等长
if ol<N
    output=[output; zeros(N-ol,1)];
end
宋老师我的问题如下:
1:code中w2为帧长的一半加一,请问w2在正频率的幅值和相位角的取值中作用是什么?
2:注意到alpha和beta分别是过减因子和增益补偿因子,看到代码中直接给出,那么是如何确定alpha的值和beta的值?
3:参数c为0或者1,这个影响到增益因子的计算,那么c的值是如何确定的呢?
4:关于前导无话段存在的意义,虽然您在书上大概解释了,我还是没能理解,能否请您简单明了的解释一下呢?
最后祝您生活愉快,工作顺利!

论坛优秀回答者

17

主题

4888

帖子

1101

最佳答案
  • 关注者: 542
发表于 2018-11-7 09:51:30 | 显示全部楼层 |此回复为最佳答案
1,如果FFT的长度为nfft,则FT之后正频率的个数是nfft/2+1,具中假设nfft为偶数。
在程序中进行谱减法,只对正频率部分作处理。
2,alpha的值和beta的值都是可以调整的,随噪声的具体情况而改变。
3,参数c为0或者1是给出参数不同的选择,LZ可以自行选择。
4。前导无话段是为了计算噪声的能量。为谱减法提供相应的参数。

新手

9 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
 楼主| 发表于 2018-11-7 10:21:56 | 显示全部楼层
songzy41 发表于 2018-11-7 09:51
1,如果FFT的长度为nfft,则FT之后正频率的个数是nfft/2+1,具中假设nfft为偶数。
在程序中进行谱减法,只 ...

好的,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表