2016-08-05 29 views
3

私はmp3ファイルを持っており、基本的にそのオーディオサンプルに存在する振幅スペクトルをプロットします。 私たちがwavファイルを持っているなら、これを非常に簡単に行うことができると私は知っています。 wavファイルフォーマットを扱うために利用できるpythonパッケージがたくさんあります。ただし、ファイルをwav形式に変換して保存してから使用することは望ましくありません。 私が達成しようとしているのは、mp3ファイルの振幅を直接取得することです。たとえそれをwav形式に変換しなければならない場合でも、スクリプトは実際にデータベースにファイルを格納することなく、pythonを使用してmp3オーディオファイルから振幅データを取得

from pydub import AudioSegment 
sound = AudioSegment.from_mp3("test.mp3") 
sound.export("temp.wav", format="wav") 

、それはそれはになったが、我々はただ実際のファイルを保存せずにコンテンツを使用することができますtemp.wavを作成します。 私は、次のように私たちは、ファイルを変換することができます知っていますか?

+0

幸いです。プログラミングの質問がありましたか?このサイトは、あなたのプロジェクトをブレーンストーミングする場所ではなく、疑問のある場所です。 –

+0

私はwavファイルの振幅を取得するコードがあります。しかし、mp3形式を扱うためにPythonで利用可能な同様のパッケージがあるかどうかはわかりませんでした。 – Nik391

答えて

3

MP3はwave(+タグなど)にエンコードされています。あなたがする必要があるのはMP3デコーダを使ってそれをデコードすることだけです。デコーダーは、さらに処理するために必要なオーディオデータ全体を提供します。

mp3をデコードするには?私はPythonの利用可能なツールが非常に少ないことにショックを受けています。私はthisで良いものを見つけましたが。それはpydubと呼ばれ、私は作者(私はウィキからのより多くの情報とそれを更新)からのサンプルスニペットを使用することを願っています:raw_dataはこの時点で「空気の上」であることを

from pydub import AudioSegment 

sound = AudioSegment.from_mp3("test.mp3") 

# get raw audio data as a bytestring 
raw_data = sound.raw_data 
# get the frame rate 
sample_rate = sound.frame_rate 
# get amount of bytes contained in one sample 
sample_size = sound.sample_width 
# get channels 
channels = sound.channels 

注;)。今度は収集されたデータをどのように使いたいかはあなた次第ですが、このモジュールは必要なものすべてを提供するようです。

+0

Thats excellent。それはまさに私がRawオーディオデータを必要としていたものです。 – Nik391

+0

@ Nik391あなたはAmplitudeに関して生データをどのように使用することができましたか教えてください。それは私にとって非常に役立つでしょう。 –

+1

@PaulNicolashunter関数によって返された生データが文字列形式であるため、このようなnumpyを使って整数形式に変換する必要があります。この形式は何ですか? – Nik391

関連する問題