MATLAB に基づくノイズの多い音声信号のフィルタリング

MATLABデジタルフィルターのGUIインターフェース設計の実現

一。フィルターの簡単な説明

MATLAB 環境における IIR デジタル フィルターと FIR デジタル フィルターの設計方法は実装方法であり、導入されたミニフィルターの設計特性を表示するためにグラフィカル ユーザー インターフェイスが設計されています。

無線インパルス応答 (IIR) デジタル フィルターの設計では、最初にアナログ フィルターの設計が実行され、次にアナログ - デジタル フィルター変換が実行されます。つまり、デジタル フィルターは、インパルス応答不変法と双一次 Z 変化法、そして最後にフィルター バンド変換です。有限インパルス応答(FIR)デジタルフィルタの設計において,FIR線形位相フィルタの特性と窓関数を備えたFIRデジタルフィルタの設計について議論した。2 種類のフィルターの全プロセスは、理論分析、プログラミング設計、集合実現のステップに従って実行されます。フィルター特性の直感的、視覚的、便利な分析を容易にするために、グラフィカル ユーザー インターフェイス - フィルター分析システムが革新的に設計されています。システム全体は 2 つのインターフェースに分かれており、その内容は主に System (システム)、Analytics (分析)、Tool (ツール)、Help (ヘルプ) の 4 つの部分で構成されています。

デジタルフィルタリングはDSPにおいて重要な位置を占めています。デジタルフィルタは、実現されるネットワーク構造や単位インパルス応答に応じて、IIR(無限インパルス応答)フィルタとFIR(有限インパルス応答)フィルタに分けられます。IRR フィルターと FIR フィルターが同じ性能であれば、通常、IIR フィルターの方が低次数で高い選択性が得られ、実行速度も速く、記憶容量も少ないため、経済的で効率的です。

二。設計要件

1. matlab プラットフォームで音声信号を録音します。

2. 音声信号のスペクトル分析を完了します。

3. 音声信号にノイズを追加し、ノイズ追加後の信号のスペクトルを分析します。

4. フィルタリングに適切なフィルタを選択し、関連する指標を決定します。

5. フィルタリング プロセスを実現し、フィルタリングされた結果を表示し、スペクトル分析を実行します。

三つ。実験内容と手順

  1. 音声信号の録音

matlab プラットフォームを開き、最初に関数 R=audiorecorder(44100,16,2) を使用してオーディオ情報を保存するオブジェクトを作成します。44100 はサンプリング周波数が 44100Hz であることを意味し、16 は 16 ビット ストレージを意味し、2 は 2 チャネルを意味します。次に、録音 (R) を使用して録音を開始し、音をコンピューターのマイクに集めます。録音された音声コンテンツは「MATLAB コースの課題」です。stop(R) ステートメントは記録を停止します。次に、オーディオ情報はデジタル マトリックスに保存されます。最後に、wavwrite 関数を使用してこのオーディオを保存します。

オリジナルボイス

R=オーディオレコーダー(44100,16,2);


v2-9d5be021baff16954e286bc2ddf78c57_b.jpg

レコード(R);

ストップ(R);

myword=getaudiodata(R);

プロット(私のスピーチ)

wavwrite(myspeech,44100,16,'myword');

プログラムマップ

波形図:

出力波形図を見ると、「Matlabのコース課題」の音声情報を収集したところは変動が顕著ですが、それ以外の場所でも環境の影響で若干の変動があることが分かります。

  1. 音声信号のスペクトル分析

wavread は、コンピュータに保存されているオーディオを読み取ります。関数 suond で音声信号を再生し、fft(y,n) で n 点のフーリエ変換を行うことで時間領域から周波数領域への遷移を実現します。次に、プロット関数を使用して、音声信号の時間領域波形と周波数領域波形を描画します。

 [y,fs,bits]=wavread('D:\Matalbe123\bin\souds.wav'); 
sound(y,fs);
n=length(y);
y_f=fft(y,n);
f=fs*(0:n/2-1)/n;
subplot 211;
plot(y);
xlabel('时间s');
ylabel('幅值 ');
title('加噪前的时域波形');
subplot 212;
plot(f,abs(y_f(1:n/2)));
xlabel('频率Hz');
ylabel('频率幅值');
title('加噪前的频谱图');
程序图:


v2-0cd377e7615b8a266bbe2252f0cecc6c_b.jpg

時間領域の波形とスペクトル図は次のとおりです。

時間領域の波形図から、音声信号は主に 2.5 秒から 5.0 秒の間に集中しており、その他の時間ではわずかな変動しかないことがわかります。周波数領域の波形図から、音声信号の周波数が人間の発声の周波数と一致していることがわかります。

  1. 音声ノイズの付加とスペクトル分析

元の音声信号にノイズを追加し、関数 randn を使用してオーディオ信号と同じ長さのガウス ランダム ノイズ信号を生成します (ノイズのサイズはランダム関数の振幅倍数によって異なります)。次に、信号 y_z=y+noise; を重ね合わせることで、新しい信号が生成されます。次に、フーリエ変換によって周波数領域の信号の波形が得られ、最後に時間領域と周波数領域の波形が描画されます。

L=length(y);
noise=0.1*randn(L,2);
y_z=y+noise;
sound(y_z,fs);
n=length(y);
y_zf=fft(y_z,n);
f=(0:n/2-1)/n;
subplot 211;
plot(y_z);
xlabel('时间s');
ylabel('幅值');
title('加噪后的时域波形');
subplot 212;
plot(f,abs(y_zf(1:n/2)));
xlabel('频率Hz');
ylabel('频率幅值');
title('加噪后的频谱图');
程序图:

波形図は次のとおりです。

上記のプログラムを実行すると、ノイズの多い音声レイヤーが聞こえますが、その周波数は元の音声よりもはるかに高く、ノイズを追加した後のスペクトログラムとノイズを追加する前のスペクトログラムを比較すると、より多くの周波数の変化があることがわかります。スペクトログラムで観察された変化は目的と一致しており、ノイズの追加は成功しています。

  1. フィルター設計

ノイズ信号の周波数は元の音声信号の周波数より高いため、FIR ローパス フィルターが選択されます。デジタル信号処理では、インパルス応答不変法ではスペクトルの折り返しが発生し、周波数応答がアナログフィルターの周波数応答特性からずれてしまいますが、これを回避するためにバイリニア変換法を使用します。fp=1000;fc=1200;As=100;Ap=1;を試しました。

fp=1100;fc=1300;As=100;Ap=1;

fp=1300;fc=1500;As=100;Ap=1;

fp=1400;fc=1600;As=100;Ap=1;

fp=1500;fc=1700;As=100;Ap=1;

最も効果の高いグループは次のとおりです: fp=1300;fc=1500;As=100;Ap=1;

したがって、設計は次のようになります。

fp=1300;fc=1500;As=100;Ap=1;

wc=2*pi*fc/fs;

wp=2*pi*fp/fs;

wdel=wc-wp;

ベータ=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

wn= カイザー(N+1,ベータ);

ws=(wp+wc)/2/pi;

b=fir1(N,ws,wn);

freqz(b,1);

プログラム図:

フィルタの周波数特性を図に示します。

  1. フィルタリング結果とスペクトル分析

ノイズが付加されたオーディオをこのフィルタでフィルタリングし、フィルタリングされたノイズ除去信号のスペクトル分析を実行します。関数 x=fftfilt(b,y_z) が選択され、FFT のオーバーラップ加算法によって信号がフィルタリングされます。 。

フィルタリング プログラムのリストは次のとおりです。

x=fftfilt(b,y_z);

X=fft(x,n);

サブプロット211;

プロット(f,abs(X(1:n/2)));

title('フィルタリングされたスペクトル');

サブプロット212;

プロット(x);

title('フィルタリングされた波形');

サウンド(x,fs,bits)

プログラム図:

v2-12c6a021680b707ce185ccdafcdc060f_b.jpg



v2-d37da759b056108375906a16e2d18840_b.jpg

ノイズ除去後のスペクトル分析を以下に示します。

プログラム実行後に聞こえる音声にはノイズ信号が含まれており、元の音声ほど明瞭ではありませんが、ノイズを加えた音声に比べて大幅に改善され、元の音声がより明瞭に聞こえるようになります。スペクトル分析図から、1500Hz より高い周波数のオーディオ信号が除去され、元の信号の波形図に少し近づき始めていることがわかります。

四。音声信号図


v2-e2fd516a0854148c3dab84417aa0dbea_b.jpg

オリジナルボイス


v2-2bf48bc395e55ab8c9154ee96025793c_b.jpg

ノイズを加えた後


v2-d37da759b056108375906a16e2d18840_b.jpg

ノイズリダクション後

  1. 実験の概要と経験

今回は、音声信号の処理に関する一連の操作を Matlab を使用して実行します。音声録音、ノイズ付加、フィルタリング、スペクトル分析は Matlab プラットフォーム上で実現されます。ノイズを加えたスペクトルを比較すると、1500Hz以上のノイズが除去されていることがわかり、音を再生すると鋭い干渉ノイズも確認できます。設計したフィルタプログラムは単一機能であるため、一般的な条件下でのみ音声信号を処理することができ、高精度な音声信号を処理することはできない。

Matlabとは英語でMatrix Laboratoryの略で、米国Math Word社が立ち上げたグラフィックス処理や数値計算のための数学計算です。Matlab環境では、プログラム設計、図形描画、数値計算、入出力ファイル管理などの作業を統合的に行うことができます。MATLAB の優れた数値計算能力と優れたデータ視覚化能力は、同様のソフトウェアの中でも際立っています。

おすすめ

転載: blog.csdn.net/TuTu998/article/details/120177083