現在、音声強調・ノイズ除去のプログラムに凝っていて、shunsukeaihara氏のpysspという音声強調・ノイズ除去のpythonライブラリを見つけたので、
それを利用した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ファイルの読み書きがうまくできなかったためです。これが問題の原因でないことは確認しています。
以上です。