web-dev-qa-db-ja.com

Python 3でMP3を読み取る

私がしたいのは単に

mp3 = read_mp3(mp3_filename)
audio_left = mp3.audio_channels[0]

ここで、audio_leftには生のPCMオーディオデータが含まれます。

私は Pythonでサウンドを再生する を見ていましたが、提案されたモジュールのほとんどはまだPython 3に移植されていません。可能であれば、本格的なゲーム開発ライブラリをインストールします。

私は完全なPython初心者なので、Python 3.を使用して開始したいと思います。

27
Andreas Jansson

結局、mpg123サブプロセスを使用してmp3をwavに変換し、次にscipy.io.wavfile.readを使用してwavファイルを読み取りました。

5
Andreas Jansson

簡単にするために、いくつかのツールmp3をwavに変換します。

_$ ffmpeg -i foo.mp3 -vn -acodec pcm_s16le -ac 1 -ar 44100 -f wav foo.wav
or
$ mpg123 -w foo.wav foo.mp3
_

次に python WAVライブラリ のいずれかでWAVを読みます。 PySoundFile 生成されたほとんどのWAVで正しく機能し、問題なくインストールされます(_scikits.audiolab_とは対照的に)。

注:scipy.io.wavfile.read()は「WavFileWarning:Unfamiliar format bytes」という警告を表示しましたが、ファイルも正しくロードされました。

12
Wernight

Pydubで実行できます:

import array
from pydub import AudioSegment
from pydub.utils import get_array_type

sound = AudioSegment.from_file(file=path_to_file)
left = sound.split_to_mono()[0]

bit_depth = left.sample_width * 8
array_type = get_array_type(bit_depth)

numeric_array = array.array(array_type, left._data)
6
GuySoft

FFmpegをサブプロセスとして使用することを検討しています。 Pythonラッパーpyffmpegと呼ばれていますが、システム(OS X 10.7.3)にインストールするのが困難でした。

PythonからサブプロセスとしてFFmpegを呼び出すためのコードをここで確認することもできます: https://github.com/albertz/learn-midi/blob/master/decode.py

6
composer314

私はこれを行うのが最善で、Python 3.xとも互換性がある)は次のとおりであると信じています:

https://pypi.python.org/pypi/mplayer.py/

ダーウィンM.バウティスタの git または google code をご覧になることを強くお勧めします。

そして、(彼が提供した)の例を次に示します。

from mplayer import Player, CmdPrefix

# Set default prefix for all Player instances
Player.cmd_prefix = CmdPrefix.PAUSING_KEEP

# Since autospawn is True by default, no need to call player.spawn() manually
player = Player()

# Play a file
player.loadfile('mp3_filename')

# Pause playback
player.pause()

# Get title from metadata
metadata = player.metadata or {}
print metadata.get('Title', '')

# Print the filename
print player.filename

# Seek +5 seconds
player.time_pos += 5

# Set to fullscreen
player.fullscreen = True

# Terminate MPlayer
player.quit()

サポートされているオーディオコーデックのリスト:

  • MPEGレイヤー1、2、3(MP3)オーディオ
  • AC3/A52、E-AC3、DTS(Dolby Digital)オーディオ(ソフトウェアまたはSP/DIF)
  • AAC(MPEG-4オーディオ)
  • WMA(DivXオーディオ)v1、v2
  • WMA 9(WMAv3)、Voxwareオーディオ、ACELP.netなど(x86 DLLを使用)
  • RealAudio:COOK、SIPRO、ATRAC3(Realライブラリを使用)
  • RealAudio:DNETおよび以前のコーデック
  • QuickTime:Qclp、Q-Design QDMC/QDM2、MACE 3/6(QTライブラリを使用)、ALAC
  • Ogg Vorbisオーディオ
  • VIVOオーディオ(g723、Vivo Siren)(x86 DLLを使用)
  • alaw/ulaw、(ms)gsm、pcm、* adpcmおよびその他の単純な古いオーディオ形式
1
Mansueli

Librosaを使用できます。

import librosa
y, sr = librosa.load('your_file.mp3')

詳細情報: https://github.com/librosa/librosa

1
Nir