2015-07-14 4 views
2

Только что узнал этот интересный питон пакет pydub, который преобразует любой звуковой файл в формате mp3, WAV и т.д.pydub доступа частоту дискретизации (Гц) и звуковой сигнал из файла mp3

Насколько я прочитал его документация, процесс выглядит следующим образом:

  1. читать mp3 аудио файл, используя from_mp3()
  2. создает файл WAV с помощью экспорта().

Любопытно, если есть способ получить доступ к частоте дискретизации и аудиосигналу (из 1-мерного массива, предположим, что это моно) непосредственно из mp3-файла, не преобразовывая его в wav-файл. Я работаю над тысячами аудиофайлов, и может быть дорого конвертировать все их в wav-файл.

ответ

2

Если вы не заинтересованы в действительном аудиоматериале файла, вы можете быть в состоянии использовать pydub.utils.mediainfo():

>>> from pydub.utils import mediainfo 
>>> info = mediainfo("/path/to/file.mp3") 
>>> print info['sample_rate'] 
44100 
>>> print info['channels'] 
1 

Это использует avprobe утилиты avlib и возвращает все виды информации. Я предлагаю дать ему попробовать :)

Должны быть гораздо быстрее, чем открытие каждого mp3 с помощью AudioSegment.from_mp3(…)

+0

в стороне от частоты дискретизации и определения, является ли файл моно или стерео, я также хотел бы получить аудио содержимое в виде массива. Как бы я это сделал? – bninopaul

+0

@bninopaul Невозможно получить доступ к аудиоданным без декодирования mp3 - вам нужно будет использовать 'AudioSegment.from_mp3 (...)' для получения аудиоданных. Необработанные данные являются атрибутом экземпляра 'AudioSegment' как' my_audio_segment._data' – Jiaaro

+0

в моем случае, audio._data возвращает длинную строку, состоящую из нулевого символа «/ x00» – bninopaul