Извлечение списка амплитуд из файла * .wav для использования в Python - PullRequest
5 голосов
/ 03 февраля 2011

У меня небольшие проблемы с программированием и преобразованием.Я проектирую ИИ для распознавания нот, играемых инструментами, и мне нужно извлечь необработанные звуковые данные из волнового файла.Моя цель - выполнить операцию FFT над фрагментами времени в файле для использования AI.Для этого мне нужен список амплитуды аудиофайла, но я не могу найти технику преобразования, которая будет работать.Файлы начинаются как MP3, а затем я конвертирую их в файл wav, но я всегда получаю сжатый файл, который выдает бессмысленный текст, когда я пытаюсь его прочитать.Кто-нибудь знает, как я мог бы преобразовать файл wav во что-то, что было бы совместимо с волновым модулем Python, или даже что-то, что непосредственно преобразовало бы данные в список амплитуд?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

Стандартный волновой модуль Python не очень тщательный. Вы можете попробовать тот, который включен в Scipy в качестве альтернативы.

Выезд: Чтение * .wav файлов на Python

Если вы собираетесь выполнять какие-либо числовые тяжелые операции со звуком, в любом случае, scipy может быть вашим лучшим вариантом.

2 голосов
/ 23 августа 2011

Я считаю, что Python может читать файлы .dat. Вы можете использовать SoX для преобразования mp3s или wavs или чего-либо еще в файлы .dat, которые являются просто текстовым списком «time - Left amp - Right amp»

Код просто sox soundfile.mp3 soundfile.dat

http://sox.sourceforge.net/

Sox - это командная строка - я запускаю ее с терминалом на моем Mac, но все, что понимает команды Bash или Linux, должно работать в зависимости от того, какой процессор вы используете.

Надеюсь, это поможет!

Возможно, вы захотите взглянуть и на Pure Data, у него есть несколько хороших преобразований FFT, встроенных в интуитивно понятный графический язык программирования.

...