pydub получает доступ к частоте дискретизации (Гц) и аудиосигналу из mp3-файла

Только что обнаружил этот интересный Python пакет Pydub, который конвертирует любой аудиофайл в mp3, wav и т. Д.

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

  1. прочитать аудиофайл в формате mp3 с помощью from_mp3()
  2. создает wav-файл с помощью export().

Просто любопытно, есть ли способ получить доступ к частоте дискретизации и аудиосигналу (из одномерного массива, предполагая, что это моно) непосредственно из 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

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

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

frame_rate означает sample_rate, поэтому вы можете получить как показано ниже;

      from pydub import AudioSegment, silence

filename = "hoge.wav"
myaudio = AudioSegment.from_file(filename)
print(myaudio.frame_rate)
Другие вопросы по тегам