Читать MP3 в Python 3 - PullRequest
       11

Читать MP3 в Python 3

26 голосов
/ 27 февраля 2012

То, что я хочу сделать, это просто

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

где audio_left будет содержать необработанные аудиоданные PCM.

Я смотрел на Воспроизвести звук с помощью Python , но большинство предложенных модулей еще не перенесены на Python 3 Если возможно, я бы не хотел устанавливать полноценную библиотеку разработчиков игр.

Я начинающий Python, поэтому я бы хотел начать с использования Python 3.

Ответы [ 6 ]

12 голосов
/ 03 апреля 2014

Чтобы было проще, я бы с помощью некоторых инструментов преобразовал 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

Затем прочитал WAV с одной из библиотек Python WAV .Я бы порекомендовал PySoundFile , потому что он работает с большинством сгенерированных WAV правильно и установлен без проблем (в отличие от scikits.audiolab).

Примечание: Даже если scipy.io.wavfile.read() дал мне предупреждение «WavFileWarning: незнакомый формат байтов», он также правильно загрузил файл.

6 голосов
/ 28 июля 2017

Можно сделать с помощью 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 голосов
/ 28 февраля 2012

Я рассматриваю возможность использования FFmpeg в качестве подпроцесса. Существует оболочка Python, которая называется pyffmpeg, но у меня возникли трудности с ее установкой в ​​моей системе (OS X 10.7.3).

Вы также можете посмотреть код здесь для вызова FFmpeg в качестве подпроцесса из Python: https://github.com/albertz/learn-midi/blob/master/decode.py

5 голосов
/ 28 февраля 2012

В итоге я использовал подпроцесс mpg123 для преобразования mp3 в wav, а затем использую scipy.io.wavfile.read для чтения файла wav.

1 голос
/ 17 мая 2014

Я считаю, что лучше всего это сделать, и это также совместимо с Python 3.x:

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

Я настоятельно рекомендую вам взглянуть на git или google-код Дарвина М. Баутисты :

А вот пример из (предоставленного им):

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 layer 1, 2 и 3 (MP3) audio
  • AC3 / A52, E-AC3, DTS (Dolby Digital) аудио (программное обеспечение или SP / DIF)
  • AAC (аудио MPEG-4)
  • WMA (DivX Audio) v1, v2
  • WMA 9 (WMAv3), аудио Voxware, ACELP.net и т. Д. (С использованием библиотек x86)
  • RealAudio: COOK, SIPRO, ATRAC3 (с использованием реальных библиотек)
  • RealAudio: DNET и более старые кодеки
  • QuickTime: Qclp, Q-Design QDMC / QDM2, MACE 3/6 (с использованием библиотек QT), ALAC
  • Ogg Vorbis audio
  • VIVO audio (g723, Vivo Siren) (с использованием x86 DLL)
  • alaw / ulaw, (ms) gsm, pcm, * adpcm и другие простые старые аудиоформаты
0 голосов
/ 20 апреля 2019

Вы можете использовать librosa:

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

Дополнительная информация: https://github.com/librosa/librosa

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...