pydub получает доступ к частоте дискретизации (Гц) и аудиосигналу из mp3-файла
Только что обнаружил этот интересный Python пакет Pydub, который конвертирует любой аудиофайл в mp3, wav и т. Д.
Насколько я прочитал его документацию, процесс выглядит следующим образом:
- прочитать аудиофайл в формате mp3 с помощью from_mp3()
- создает 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)