Edited at

Signal Subspace法(カーネルPCA)を使って音声データのノイズ除去(音声強調)をやってみた

More than 1 year has passed since last update.

書いてみました。

https://github.com/ryogrid/pyssp_mod/blob/master/kpca_denoise.py

カーネルPCAの実装は以下から拝借しました。

https://github.com/lucasrodes/kPCA-denoising-python/blob/master/our_kpca.py

やっていることは、

-音声データを512サンプルに分割して並べて行列にする

-512サンプルごとにFFTをかけて、振幅スペクトルベクトル群(行列)と位相スペクトルベクトル群(行列)を求める

-上の振幅スペクトル行列にk-PCAを用いたデノイズ処理をかける

-得られた行列の中のデノイズされた振幅スペクトルベクトル(512要素)と位相スペクトルベクトルをよろしくして行列にする

-位相スペクトルベクトルに1j(虚数のみ1の複素数)をかけてexpをとったものに、振幅スペクトルを乗算

-上の行列の512要素(行か列かどっちだろ)ごとにIFFTをかける

- IFFTをかけた行列の全要素の実部だけとりだして、1次元ベクトルに並べ直す

- デノイズされた音声データが得られたぞ!

いくらかノイズ除去はできました。パラメータをいろいろ試せばもっと良い効果が得られるかも。

以上です。