Python
JavaScript
Node.js
音声処理

MMSE-STSA法の音声強調・ノイズ除去をJSにポーティングしたがあと一歩うまく動かない話

More than 1 year has passed since last update.

現在、音声強調・ノイズ除去のプログラムに凝っていて、shunsukeaihara氏のpysspという音声強調・ノイズ除去のpythonライブラリを見つけたので、

https://github.com/shunsukeaihara/pyssp

それを利用したMSSE-STSA法の音声処理プログラムを書いて、諸事情でJS(node.js)にポーティングしてみました。

pysspではnumpyやscipyが多用されていますが、JSにもnumjsというnumpyもどきがあって、それを使って比較的、奇麗に書き換えられました。

で、pythonの実装がコレ

https://github.com/ryogrid/pyssp_mod/blob/c228347fb2d5d6e2c5fdf2135757d3273fb9f651/mmse_stsa_js.py

で、JSの実装がコレ

https://github.com/ryogrid/pyssp_mod/blob/d6f48b14de924a105fd29444a03218e0a7bd0874/mmse_stsa.js

なのですが、残念ながら、JS版は処理した音声が歪んでしまって、バグがあるか、Python版との差異があるかと思われますが、ずっとレビューしていますが、解決できていません。

どこか気付くところがあればご教授いただければ幸いです。

利用している数学関数がpythonで利用しているものと同じ値を返すことは確認しています。

ただ、fftとifftの関数が返す複素数の配列で、第2要素以降で実部と虚部が逆になっていることは確認していて、python版に合わせるために入れ替えたりはしてみたのですが、問題は解決しませんでした。また、入力についても入れ替えたりはしてみました。ここらへんが、どうも怪しいなあと思っていますが、打つ手なしの状態です。

あと、JS版は音声データの読み込みと書き出しをテキストで行っていますが、これは、JSでWaveファイルの読み書きがうまくできなかったためです。これが問題の原因でないことは確認しています。

以上です。