-1

私は標準的なタイのダンスの歌を持っています。多くの楽器と歌詞が含まれています。これをシンバルのリズムだけのwavに変換しなければなりません。私はPythonを使わなければならないことだけを知っています。これを行う方法?ありがとうございました。

4

2 に答える 2

1

シンバルのリズムは、おそらくその特定のミックスの高域にあるでしょう。私はそのトラックを聞いたことがないので、その特定の楽器に関連してかなり低い周波数成分が含まれているかどうかはわかりません. しかし、直感から、これが私の最善の推測です...

低めのドラムやボーカル (通常はミッドレンジが重い楽器) など、シンバル パートの音成分を含まない低周波を除外する必要があります。スペクトル アナライザーを見ると、典型的なシンバルの周波数は、500Hz から 5KHz まで振幅がゆっくりと上昇し、振幅は 5k ~ 15k のレベルにとどまり、15 ~ 20k を過ぎると傾きがなくなります (元のトラックではハイエンドがフィルター処理されていることを確認してください)。500Hz 未満 (またはおそらくわずかに高い周波数) を除外します。より正確なフィルタリングが必要な場合は、シンバル ヒットでより多くの音響コンテンツをフィルタリングするエンベロープ フォロワーを見つけることができます。除外すればするほど、他の楽器が聞こえにくくなります。

このジョブにはハイパス フィルターが必要です。Python で自分で作成することもできますが、musicdsp.org から DSP アルゴリズムを移植する方が簡単です。

または、code.google.com/p/pyo/ から Python DSP ライブラリを使用します。

音楽 DSP サイトでは、適切なエンベロープ フォローイング アルゴリズムも見つけることができると思います。

Python には、wav を読み書きする優れたライブラリがあります: http://docs.python.org/2/library/wave.html

また、フィルタリング ジョブをリアルタイムでテストする必要がある場合は、PyAudio を検討してください: http://people.csail.mit.edu/hubert/pyaudio/

フィルタはシンバル以外のすべてを除外するわけではないため、このプロセスにはねじれが伴います。ミックスされたオーディオは完全にミックスされるため、ミックス内の個々のパーツや楽器を分離することはほとんど不可能です。これに少しでも近いことをできるのはMelodyneだけです。

于 2013-07-16T21:04:32.107 に答える
0

最初のアイデアは、他の楽器がほとんど配置されている低域と中域の周波数をカットするバンドパス フィルターを実装することです ( http://en.wikipedia.org/wiki/Band-pass_filter )。あなたはそれを自分で行うことができます:

  1. wav ファイルを fft してスペクトルを取得する
  2. 維持したい周波数帯域を選択します
  3. 他のすべてをゼロにします(またはウィンドウを適用します-ガウス、スーパーガウスなど)
  4. すべてを元に戻す (逆 fft を行う)
  5. 結果を聞いて、必要に応じて周波数帯域を変更します

scipy library - google を信号処理の機能として使用することもできます。

お役に立てれば。試してみて、詳細な質問があれば投稿してください。

于 2013-07-16T21:14:09.107 に答える