[音声ノイズ除去]音声ノイズ除去のためのmatlab基本ウィーナーフィルタリングアルゴリズムに基づく[Matlabソースコード570期間を含む]

1.はじめに

この章では、事前の信号対雑音比推定に基づくウィーナーフィルタリング法に基づく音声強調アルゴリズムを提案します。初期ノイズパワースペクトルは、サイレントセクションの統計平均を計算することによって取得され、初期ノイズパワースペクトルとノイズの多い音声パワースペクトルが平滑化され、ノイズパワースペクトルが更新されます。最後に、ノイズが急激に増加する状況特定の周波数点が考慮されます。相関検証は、アルゴリズムが狭い範囲または安定した範囲でノイズを効果的に抑制できることを示していますが、実際には広範囲の変化があるノイズにはあまり効果的ではありません。
1.音声強調の概要
1.1音声強調の関連概念
音声システムに組み込まれている音声信号は、必然的に周囲のノイズによって干渉され、それによって音声の品質と明瞭度に影響を与えます。
音声強調:実際、ノイズの多い音声から可能な限り純粋な音声を抽出し、音声の品質と明瞭度を向上させ、ノイズの多い環境での音声通信システムのパフォーマンスを向上させることです。
ノイズはランダムに発生し、完全に除去することはできません。音声強調の目標は、ノイズを低減し、バックグラウンドノイズを排除し、音声品質を向上させ、リスナーを受容的にし、音声明瞭度を向上させることです。
1.2音声強調に関連するアルゴリズム
ノイズの発生源が多いため、特性が異なります。音声強調処理システムのアプリケーションシナリオは大きく異なります。
したがって、さまざまなノイズの多い環境で使用できる音声強調アルゴリズムはありません。さまざまな環境に対して、さまざまな音声強調アルゴリズムが採用されています。
処理方法に応じて、音声強調アルゴリズムは、音声周期性に基づく強調アルゴリズム、全極モデルに基づく強調アルゴリズム、短時間スペクトル推定に基づく強調アルゴリズム、信号部分空間に基づく強調アルゴリズム、および強調アルゴリズムに分けることができます。
HMMに基づいています。
現在の開発から判断すると、短時間スペクトル推定に基づく方法が最も効果的な方法です。具体的には、スペクトル減算、ウィーナーフィルタリング、最小平均二乗誤差短時間スペクトル振幅推定法(MMSE-STSA)、最小平均二乗誤差対数スペクトル振幅推定法(MMSE-LSA)が含まれます。この記事では、主にウィーナーフィルターを使用して音声強調処理を実現する方法について説明します。
2以前の信号対雑音比推定に基づくウィーナーフィルター音声強調理論
以前の信号対雑音比は、音声強調アルゴリズムの非常に重要なパラメータです。エフライムとマラによって提案された「直接決定」推定によって以前の信号対雑音比を計算する方法は、最も効果的で最も簡単に計算できます。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

第二に、ソースコード

clear all; clc; close all;

[xx, fs] = wavread('C5_3_y.wav');           % 读入数据文件
xx=xx-mean(xx);                         % 消除直流分量
x=xx/max(abs(xx));                      % 幅值归一化
IS=0.25;                                % 设置前导无话段长度
wlen=200;                               % 设置帧长为25ms
inc=80;                                 % 设置帧移为10ms
SNR=5;                                  % 设置信噪比SNR
NIS=fix((IS*fs-wlen)/inc +1);           % 求前导无话段帧数
alpha=2;
beta=0.01;
signal=awgn(x,SNR,'measured','db');               % 叠加噪声
output=Weina_Norm(x,wlen,inc,NIS,alpha,beta) ;
output=output/max(abs(output));
len=min(length(output),length(x));
x=x(1:len);
signal=signal(1:len);
output=output(1:len);

snr1=SNR_Calc(x,signal);            % 计算初始信噪比
snr2=SNR_Calc(x,output);            % 计算降噪后的信噪比
snr=snr2-snr1;
fprintf('snr1=%5.4f   snr2=%5.4f   snr=%5.4f\n',snr1,snr2,snr);
function frameout=enframe(x,win,inc)

nx=length(x(:));            % 取数据长度
nwin=length(win);           % 取窗长
if (nwin == 1)              % 判断窗长是否为1,若为1,即表示没有设窗函数
   len = win;               % 是,帧长=win
else
   len = nwin;              % 否,帧长=窗长
end
if (nargin < 3)             % 如果只有两个参数,设帧inc=帧长
   inc = len;
end
nf = fix((nx-len+inc)/inc); % 计算帧数
frameout=zeros(nf,len);            % 初始化
indf= inc*(0:(nf-1)).';     % 设置每帧在x中的位移量位置
inds = (1:len);             % 每帧数据对应1:len
frameout(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));   % 对数据分帧
if (nwin > 1)               % 若参数中包括窗函数,把每帧乘以窗函数
    w = win(:)';            % 把win转成行数据
    function frameout=filpframe(x,win,inc)

[nf,len]=size(x);
nx=(nf-1) *inc+len;                 %原信号长度
frameout=zeros(nx,1);
nwin=length(win);                   % 取窗长
if (nwin ~= 1)                           % 判断窗长是否为1,若为1,即表示没有设窗函数
    winx=repmat(win',nf,1);
    x=x./winx;                          % 除去加窗的影响
    x(find(isinf(x)))=0;                %去除除0得到的Inf
end

sig=zeros((nf-1)*inc+len,1);
for i=1:nf
    start=(i-1)*inc+1;    
    xn=x(i,:)';
    sig(start:start+len-1)=sig(start:start+len-1)+xn;
end
function [NoiseFlag, SpeechFlag, NoiseCounter, Dist]=vad_LogSpec(signal,noise,NoiseCounter,NoiseMargin,Hangover)

% 设置缺省值
if nargin<4
    NoiseMargin=3;
end
if nargin<5
    Hangover=8;
end
if nargin<3
    NoiseCounter=0;
end
    
% 本帧语音幅值对数频谱和噪声对数频谱之差值
SpectralDist= 20*(log10(signal)-log10(noise));
SpectralDist(find(SpectralDist<0))=0;   % 寻找差值小于0值置为0
 
Dist=mean(SpectralDist);                % 用平均求出Dist
if (Dist < NoiseMargin)                 % Dist 是否小于 NoiseMargin
    NoiseFlag=1;                        % 是,NoiseFlag设为1
    NoiseCounter=NoiseCounter+1;        % NoiseCounter加1
else
    NoiseFlag=0;                        % 否,NoiseFlag设为0
    NoiseCounter=0;                     % NoiseCounter清零
end

3、実行中の結果

ここに画像の説明を挿入します

四、備考

完全なコードまたは書き込み追加QQ1564658423過去のレビュー
>>>>>>
[機能の抽出] matlabウェーブレット変換に基づくオーディオ透かしの埋め込みと抽出[Matlabソースコード053を含む]
[音声処理] matlabGUIに基づく音声信号処理[Matlabを含むソースコードの問題290]
[音声取得] matlabGUI音声信号収集に基づく[Matlabソースコード291を含む]
[音声変調] matlabGUI音声振幅変調に基づく[Matlabソースコード292を含む]
[音声合成] matlabGUI音声に基づく合成[Matlabソースコードの問題293を含む]
[音声暗号化] matlabGUIに基づく音声信号の暗号化と復号化[Matlabソースコード295を使用]
[音声拡張] Matlabウェーブレット変換ベースの音声拡張[Matlabソースコード296]
[音声認識] matlabGUI音声ベース周波数認識に基づく[Matlabソースコード294を含む]
[音声拡張] Matlab GUIWienerフィルタリングベースの音声拡張[Matlabソースコード298を含む]
[音声処理] matlabGUI音声信号処理に基づく[Matlabソースコード299を含む]
[信号処理] Matlab音声信号スペクトルアナライザーに基づく[Matlabソースコード325を含む]
[変調信号] matlabGUIに基づくデジタル変調信号シミュレーション[Matlabソースコード336を含む]
[感情認識] matlabBPニューラルに基づく音声感情認識ネットワーク[Matlabソースコード349の​​問題を含む]
[音声ステガノグラフィー] Matlabウェーブレット変換に基づく定量化されたオーディオデジタルウォーターマーキング[Matlabソースコードの問題351を含む]
[特徴抽出] matlabオーディオ透かしの埋め込みと抽出に基づく[Matlabソースコード350期間を含む]
[音声ノイズ除去] matlabローパスと適応フィルターノイズ除去に
基づく[ Matlabソースコード352期間を含む] [感情認識] matlabGUIに基づく音声感情分類認識[Matlabソースコード354期間を含む]
[基本処理] Matlabベースの音声信号前処理[Matlabソースコード364期間を含む]
[音声認識] Matlabフーリエ変換0-9デジタル音声認識[Matlabソースコード384期間を含む]
[音声認識] matlab GUI DTWに基づく0〜9桁の音声認識[Matlabソースコード385を含む]
[音声再生] Matlab GUIMP3設計[Matlabソースコード425を含む]
[音声処理]人間の耳のマスキングに基づく音声強調アルゴリズム効果ノイズ比計算[Matlabソースコード428を含む]
[音声ノイズ除去] matlabスペクトル減算ノイズ除去に基づく[Matlabソースコード429を含む]
[音声認識] matlab駆動運動量項目に基づくBPニューラルネットワーク音声認識[Matlabソースコード430を含む]
[音声ステガノグラフィ] matlabLSB音声隠蔽に基づく[Matlabソースコード431を含む]
[音声認識] matlabの男性と女性の音声認識に基づく[Matlabソースコード452を含む]
[音声処理] matlab音声ノイズの追加とノイズリダクション処理に基づく[MatlabソースコードIssue473を含む]
[音声ノイズ除去] matlab最小二乗(LMS)適応フィルターに基づく[ Matlabソースコード481を含む]
[音声強調] matlabスペクトル減算、最小平均二乗、およびWienerフィルター音声強調に基づく[Matlabを含むソースコード482期間】
[通信] matlab GUIデジタル周波数帯域(ASK、PSK、QAM)変調シミュレーションに
基づく[ Matlabソースコード483を含む] [信号処理] matlabECG信号処理に基づく[Matlabソースコード484を含む]
[音声ブロードキャスト] matlabに基づく音声ブロードキャスト[Matlabソースコード507を含む]
[信号処理] matlabウェーブレット変換EEG信号特徴抽出に
基づく[ Matlabソースコード511を含む] [音声処理] matlab GUIデュアルトーンマルチ周波数(DTMF)信号検出に基づく[含むMatlabソースコード512】
【音声ステガノグラフィー】matlabLSBに基づいて音声信号のデジタル透かしを実現【Matlabソースコード513を含む】
【音声強調】matlab一致フィルターに基づく音声認識【Matlabソースコード514を含む】
【音声処理】 matlabGUI音声に基づく周波数ドメインスペクトログラム分析[Matlabソースコード527を含む]
[音声ノイズ除去] matlab LMSに基づく、RLSアルゴリズム音声ノイズ除去[Matlabソースコード528を含む]
[音声ノイズ除去] matlabLMSスペクトル減算音声ノイズ除去に基づく[含むMatlabソースコードの問題529]
[音声ノイズ除去] matlabソフトしきい値、ハードしきい値、妥協しきい値に基づく音声ノイズ除去[Matlabソースコード530を含む]
[音声認識] matlab特定の人の音声認識識別に基づく[Matlabソースコード534を含む]
[音声ノイズ除去] matlabウェーブレットソフトしきい値に基づく音声ノイズリダクション[Matlabソースコード531を含む]
[音声ノイズ除去] matlabウェーブレットハードしきい値に基づく音声ノイズリダクション[Matlabソースコード532を含む]
[音声認識] matlabMFCCおよびSVM固有に基づく人間の性別認識[Matlabソースコード533を含む]
[音声認識] MFCCに基づくGMM音声認識[Matlabソースコード535を含む]
[音声認識] matlabVQに基づく特定の人の孤立した単語音声認識[Matlabソースコード536を含む]
[音声認識] matlabGUIに基づく音声認識[含むMatlab]ソースコードの問題537]
[取得と読み取り] matlab音声収集と読み取りに基づく[Matlabソースコード538を含む]
[音声編集] matlab音声編集に基づく[Matlabソースコード539を含む]
[音声モデル] matlab音声に基づく信号数学モデル[Matlabソースコード540を含む]
[音声の健全性] matlabの音声強度とラウドネスに基づく[Matlabソースコード541を含む]
[感情認識] matlabK最近傍分類アルゴリズムに基づく音声感情認識[Matlabソースコード542を含む]
[感情認識] matlabサポートベクトルマシン(SVM)に基づく音声感情認識[Matlabソースコード543を含む]
[感情認識]ニューラルネットワークベースの音声感情認識[Matlabソースコード544を含む]
[音源定位]音源定位ベースmatlabの異なる空間スペクトル推定についてアルゴリズムの比較[Matlabソースコード545を含む]
[音源定位]異なる信号対雑音比で信号を受信するmatlabマイクに基づく[Matlabソースコード546を含む]
[音源位置]部屋のインパルス応答に基づくmatlabシングル音源とデュアルマイク[Matlabソースコード547を含む]
[音源定位] Matlab一般化相互相関ベースの音源位置[Matlabソースコード548を含む]
[音源位置] Matlabアレイマニホールドマトリックスベースの信号表示[Matlabソースコード549を含む]
[機能抽出] matlabformant推定に基づく[Matlabソースコード550期間を含む]
[特徴抽出] matlabピッチ周期推定に基づく[Matlabソースコード551を含む]
[特徴抽出] matlab音声エンドポイント検出に基づく[Matlabソースコード552を含む]
[音声コーディング] matlabADPCMコーデックに基づく[Matlabソースコード553を含む]
[音声エンコード] matlabLPCエンコードおよびデコードに基づく[Matlabソースコード期間554を含む]
[音声エンコード] matlabPCMエンコードおよびデコードに基づく[Matlabソースコード期間555を含む]
[音声分析] matlabセプストラム分析およびMFCC係数に基づく計算[Matlabソースコード期間556を含む]
[音声分析] matlab線形予測係数比較に基づく[Matlabソースコード557を含む]
[音声分析] matlab音声短時間周波数ドメイン分析に基づく[Matlabソースコード558を含む]
[音声分析] matlab音声短時間時間領域分析に
基づく[ Matlabソースコード問題559を含む] [音声分析] matlab音声ラインスペクトルペア変換に基づく[Matlabソースコード560を含む]
[音声合成] matlabに基づく信号フレーミングと復元比例オーバーラップと加算[Matlabソースコード561を含む]
[音声合成] matlab線形予測フォーマント検出とピッチパラメーターに
基づく音声合成[ Matlabソースコード562を使用] [音声合成] matlab線形予測係数とピッチパラメーターに基づく[Matlabを使用ソースコード563]
[音声合成] matlab線形予測に基づく係数と予測誤差音声合成[Matlabソースコード564を含む]
[音声合成] Matlabベースの音声信号速度の変更[Matlabソースコード565を含む]
[音声合成] Matlab音声信号ベースのトーン変更[Matlabソースコード566を含む]
[音声合成] matlabオーバーラップストレージ法に基づく信号フレーミングと復元[Matlabソースコード567を含む]
[音声合成] matlabオーバーラップ加算法に基づく信号フレーミングと復元[Matlabソースコード568を含む]
[音声ノイズ除去]スペクトル減算音声の改善matlabに基づくノイズ除去[Matlabソースコード569を含む]

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/115000878