Python, C / ++, Java ... какие-либо API для сравнения звуковых сигналов? - PullRequest
2 голосов
/ 26 марта 2011

Кто-нибудь знает библиотеку для python, c (++) или java, или даже для внешнего приложения, которую я могу использовать, чтобы проверить наличие определенного искажения звука в mp3?Моя проблема заключается в следующем: у меня есть очень надежное приложение Django, которое автоматически выполняет подкастинг для радиостанции для всех различных шоу, но примерно раз в неделю компьютер, который выполняет фактическую запись поврежденного звука, имеет определенный шаблон взаимодействия,прерывистый звук почти как у вертолета, когда звук падает несколько раз в секунду.Я не надеюсь исправить эти аудиофайлы (так как я пытался вручную с хорошим программным обеспечением для редактирования, но это просто безнадежная причина), а скорее обнаружил, что нет или нет такой тип повреждения, чтобы я мог переключиться на резервную версиюзаписи автоматически.внешние инструменты в идеале должны работать на Linux, но окна приемлемы, если они безголовые (без принудительного графического интерфейса).

Спасибо.

Ответы [ 2 ]

4 голосов
/ 23 июля 2011

Я думаю, что все, что вам нужно сделать, это сделать fft на mp3, и вы должны увидеть действительно низкочастотный всплеск, который соответствует большим падениям.Я не гуру dsp, хотя и не уверен, что это сработает, но его легко попробовать.

Для этого вы можете использовать библиотеку numpy для python.http://numpy.scipy.org/

просто прочитайте файл mp3 в массив, а затем выполните fft, для теста я бы порекомендовал сначала построить его (например, с помощью maptlotlib), с обеими версиями, поврежденными и исправными, и увидетьесли вы можете легко обнаружить поврежденную версию.Тогда, надеюсь, вы можете написать простой алгоритм для обнаружения поврежденных файлов оттуда FFT.

Для чтения в mp3 в буфер данных вы можете использовать PyMedia http://pymedia.org/

Я не использовал PyMediaтак что я не уверен при чтении mp3 в буфер (это не должно быть слишком сложным, я думаю), но после этого построение fft так же просто, как:

from numpy import *
from numpy.fft import *
import pylab

# place code to read the mp3 file into buf[] here.

buf_fft = fft(buf, 1024)
pylab.plot(fftfreq(1024, 0.1), abs(buf_fft))
pylab.show()
0 голосов
/ 26 марта 2011

Попробуйте BASS Библиотека и посмотрите, есть ли в ней то, что вы ищете.

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