2

アップロードされたmp3を分析し、波形グラフィックを構築するために必要なデータを生成できるPythonで何かを構築しようとしています。私が見つけたものはすべて、必要以上に複雑です。最終的には、SoundCloud で見られるようなものを作ろうとしています。

numpyとを調べてきましたfft'sが、すべてが必要以上に複雑に思えます。これに対する最善のアプローチは何ですか?キャンバスを使用して実際のグラフィックを作成するので、その部分については心配する必要はありません。プロットするデータが必要なだけです。

4

2 に答える 2

1

MP3 ファイルは、波形のエンコード バージョンです。波形を操作する前に、まず MP3 データを PCM 波形にデコードする必要があります。PCM データを取得すると、各サンプルはその時点での波形の振幅を表します。MP3 デコーダーが符号付きの 16 ビット値を出力すると仮定すると、振幅は -16384 から +16383 の範囲になります。各サンプルを 16384 で除算して正規化すると、波形サンプルの範囲は +/- 1.0 になります。

問題は、実際には MP3 から PCM へのデコードの 1 つです。私の知る限り、ネイティブの Python デコーダーはありません。ただし、Python からサブプロセスとして呼び出された LAME を使用することも、もう少し作業を加えて、LAME ライブラリを SWIG などを使用して Python に直接接続することもできます。些細な仕事ではありません。

このデータをプロットすることは、読者の課題になります。

于 2012-02-13T02:35:41.453 に答える
1

mp3 ファイル形式の内部動作を扱いたくない場合は、Pygame を使用することをお勧めします。

Pygame は、「サウンド」オブジェクトとして .mp3 および .ogg を含む一般的なオーディオ ファイル形式を開くことができるマルチメディア ライブラリです。 .sndarray.array 呼び出し - サウンド サンプルを含む numpy 配列オブジェクトを返します。

ちょっとしたトリックを見つけました - .mp3 ファイルと同じパラメーター (周波数、ビット サンプル サイズ、チャネル数) で pygame.mixer.init を呼び出すようにしてください。例外。

http://www.pygame.org/docs/でドキュメントを確認してください。

于 2012-02-13T02:59:58.017 に答える