[已答复] 在Boll的改进谱减法一节中减少噪声残留的方法

[复制链接]
tfz1995 发表于 2018-6-6 15:35:25
for i=1:numberOfFrames
    SpeechFlag=SF(i);
    if SpeechFlag==0                        % 在无话段中平滑更新噪声谱值
        N=(NoiseLength*N+Y(:,i))/(NoiseLength+1);
        NRM=max(NRM,YS(:,i)-N);             % 求取噪声最大残留值
        X(:,i)=Beta*Y(:,i);
    else
        D=YS(:,i)-N;                        % 谱减法消噪
        if i>1 && i<numberOfFrames          % 消去噪声的残留值            
            for j=1:length(D)
                if D(j)<NRM(j)
                    D(j)=min([D(j) YS(j,i-1)-N(j) YS(j,i+1)-N(j)]);
                end
            end
        end
        X(:,i)=max(D,0);                    % 每条谱线幅值都大于0
    end
end

在这段代码里,当某个频率的幅值低于对应的噪声最大残留时,会取周边两个片段的最小值。为什么用这个方法可以减少噪声残留,有什么数学依据么。

1 条回复


songzy41 发表于 2018-6-6 19:39:49
该程序是按Boll的文章改编过来的,LZ不妨查阅一下Boll的文献。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表