2018/08/24混合波形の分離実験sound_splitを用いることで、周波数分解能と時間分解能を共に楽曲の解析に適した解像度でスペクトル解析できることがわかりました。そのスペクトル情報を用いて元の波形を再現することができるのでしょうか。単純に、分析結果からもとの波形に戻すことは簡単にできます。440Hzの音と300Hzの音を混合している場合に、元の440Hzの波形と300Hzの波形に分離することは可能でしょうか。単純に考えると、440Hzに相当する解析ユニットの出力だけを抜き出せばよいように思います。そのユニットの出力を逆位相で加えても、440Hzの成分は完全に打ち消すことができません。解析ユニットは、0.5%の周波数幅を持っており、また先程見たようにメインローブも幅を持っていることから、440Hz周辺のいくつかのユニットに反応が見られています。もとの混合波のある成分の正確な周波数を求めるためには、ユニット単位の解析では不十分で、周波数と位相が完全には一致しないようです。分離のアルゴリズムsound_splitに、オプション--filterを与えることで、分離実験ができます。アイデアとしては、抜き出したい部分のスペクトルの強いところが、混合波のひとつであると見なして振幅とだいたいの周波数を記録します。周波数と初期位相を少しずつずらして元の波形にぶつけ、差が一番小さくなる周波数と位相の波が含まれていると判断します。440Hzのsin波の一部を抽出する実際の例で、分離がどのように働くかを見てみます。440Hzの正弦波がひとつだけ鳴っている音源を解析してみます。440Hzの正弦波です。分離の開始点(下限周波数および開始時間)、分離するピーク、分離の終了点(上限周波数及び終了時間)を手動で与えます。startボタンで、解析を開始します。filterは元の波形から分離波形を引いて残りを結果として表示します。filterを使用します。上は元波形のスペクトル、下がフィルタリング結果のスペクトルフィルタリング結果の波形フィルタリング後の波形です。開始から1sec-2secの区間が無音になっています。フィルタリング結果の図を見ると、指定した区間の440Hzのsin波がきれいに無くなっていることがわかります。分離波形を引いた結果なので、分離波形は元の波形のこの区間のデータと全く一致しているということになります。混合sin波のひとつを抽出する次に、300Hz、440Hz、880Hzが同時に鳴っている音源のひとつの音だけを抽出してみます。880Hzの正弦波が3つ合成されています。