LoginSignup
3
1

More than 1 year has passed since last update.

はじめに

あけましておめでとうございます。みなさんは紅白歌合戦みましたか?生で見たかったなー。なのでシミュレーションします。
Pyroomacousticsというライブラリを使うと、音源を分離とかルームシミュレーションができるらしい・・・ということで試してみました。

Pyroomacousticsとは

自分で作った部屋の中にマイクとスピーカーを自由に置き、音響のルームシミュレーション・周波数解析・音源分離などのアルゴリズムも実装することができるライブラリです。
今回はルームシミュレーションと音源分離を実際にやってみました。

音の用意

まずはシミュレーションで使う音を準備する必要がある・・・ということでシンセサイザーでピアノとベースの音を作りました。
こちらがピアノの音源です。

下の画像はピアノ音源の音圧とメルスペクトログラムです

piano_2.png

こちらがベースの音源です。

下の画像はベース音源の音圧とメルスペクトログラムです
bass_2.png

では、さっそくpyroomacousticsで遊んでみます。

ルームシミュレーションをやってみる

今回は「反響しやすい壁材」と「反響しにくい壁材」でピアノ音の聞こえ方がどう違うのかを検証します。
公式ドキュメントに従って、音響のルームシミュレーションのための部屋を作成していきます。

パラメータ 設定値
壁材 reverb_chamber(反響しやすい)/ceiling_fibre_abosrber(反響しにくい。原文ママ)
部屋の大きさ 100×5×5
音源座標 [50,2.5,2.5]
マイク座標 [54,2.4,2.5]

まずは、反響しにくい壁材で作った部屋のピアノ音です。

ピアノ吸音.png

次に反響しやすい壁材で作った部屋のピアノ音です。

ピアノ反響.png

いい感じです!
なるほど、たしかに反響してますね。スペクトルで見ても違いが見て取れます。
こんな感じでPyroomacousticsを使うとルームシミュレーションができます。

音源を分離してみる

音源分離とは、複数種類の音が混ざった音から1種類ずつ音を分離する手法です。
今回はピアノとベースの合奏からそれぞれの音を分離しました。
Pyroomacousticsでは音源分離のアルゴリズムとして以下のようなものが提供されています。
1.Auxvia
2.Fastmnmf
3.Fastmnmf2
4.ilrma
5.Trinicon
今回はfastmnmf2を用いて音源分離をやってみました。
シミュレーション用に作った部屋を以下に示します。(●はピアノ■がベース音源、×がマイク)
マイクと音源の位置.png
こちらがピアノとベースの合奏の音(分離前)です。

piano_bass.png

では、実際に音源分離をやってみます。
こちらが分離後のピアノ音です。

fastmnmf2_1.png

こちらが分離後のベース音です。

fastmnmf2_2.png

なるほど・・・ベースの音程が変わるあたりはあまり上手く分離できていませんね。
とはいえ、ほかはまぁまぁ分離できていそうですね。

まとめ

今回はPyroomacousticsでルームシミュレーションと音源分離を試してみました。
音を聞く環境(壁材とか)が異なれば、聞こえ方もだいぶ異なることが分かりました。
また、音源分離はうまく分離できている区間と分離できていない区間があり、しっかり分離しようとするとまだまだ工夫が必要そうです。
色々使えそうで便利なライブラリなのでこれからも機会があったら使ってみようと思いますー!

こんな感じで今年もいっぱい記事書いていきますのでよろしくお願いいたします!

参考文献

Pyroomacoustics:https://pyroomacoustics.readthedocs.io/en/pypi-release/

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1