python の音響解析の基本的なモジュールは librosa のようなんだが、情報が古い記事が多い。
参考記事
比較的しっかり書かれた記事は
『Pythonの音声処理ライブラリ【LibROSA】で音声読み込み⇒スペクトログラム変換・表示⇒位相推定して音声復元』
あたりだろうか。
上の記事にしても 2020 年に書かれているので、やや古いのだが、解説が丁寧だし、検証がまとも。
「古い」というのは、例えば、librosa.display.waveplot などという今では廃止になった関数もしれっと使われていたりするから。
だが、こういうのはエラーメッセージをググるなどすれば、対策は立てやすい。(後継の関数を使うならば、librosa.display.waveshow となる)
参考にならない記事
逆に、古いだけで、処理の意図も書かれていない記事はほぼ害悪。
例えば、STFT(Short-Time Fourier Transform: 短時間フーリエ変換)で出力される行列は、確か 0.8 くらいの時に出力形式そのものが変わったのだが、このことを意識していないと実用(波形データ→STFT→加工→逆 STFT →加工した波形データなど)に使う際に間違ったことをやりねない。
SoundFile との併用
便利な librosa だが、配列をファイルに書き出そうとすると使い勝手が悪いらしい。
(『librosa における 16-bit でのWAV書き出し』参照)
そこにもあるように SoundFile というパッケージを使う。
なお、書き出したファイルは(デフォルトでは)python ファイルのある位置になるようだ。
jupyter notebook の場合は、.ipynb の置かれているフォルダになる。
noisereduce との併用
実際のデータはノイズなどものっているため、これを落とす処理が必要。
その一つに noisereduce パッケージがある。なお、これも librosa 同様、conda ではなくて pip から入れる。
これを使った具体例は、ここあたり参照。
3D可視化
波形データの可視化は、上のようにやればいいが、ものによっては3Dで可視化したい場合がある。
pyVISTA というのがあるらしい。
pythonをインターフェイスにして VTK を呼び出して・・・ってこれ MacOS じゃダメじゃん。
VTK は OpenGL に依存しているので、MacOS では非推奨の VTK 使ってる時点でアウト。
日本からは小山哲央という人が参加しているらしいのだが、この人ってやらかしちゃった人ですよね。
スクリプト言語が関の山で、Java/C/C++ 使いこなす能力はないでしょう、この人。
将来性、イマイチ。