Программа подбора аудио файлов - PullRequest
5 голосов
/ 21 января 2011

Я пытаюсь написать программу для iPhone, которая может взять два аудиофайла (например, WAV) в качестве входных данных, сравнить их и выпустить число, которое говорит вам, насколько похожи аудиофайлы.

Если кто-то сделал что-то подобное, знает, как это сделать или просто есть идеи, пожалуйста, дайте мне знать. Все будет с благодарностью.

Конкретные вопросы: какой язык подходит? Как тяжело это сделать (сколько часов, примерно)? Где я могу найти хороший источник аудио библиотеки / инструментов?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 21 января 2011

Я бы сказал, что это довольно сложно, не столько реализация, но и разумное определение понятия «похожий».

Тем не менее, вы, вероятно, рассматриваете такие методы, как автокорреляция и FFT, которые являются задачами, интенсивно использующими процессор, поэтому я бы сказал, полностью скомпилированный язык (C, C ++, не знаю о Objective-C ) будет наиболее подходящим по крайней мере для реальных расчетов. Кроме того, вы сталкиваетесь с несколько слабой платформой для таких задач (хотя бы потому, что несжатые аудиофайлы довольно большие), так что вам предстоит довольно оптимизация.

Эта книга: http://www.dspguide.com/ является довольно лаконичным чтением для всего, что связано с DSP.

0 голосов
/ 24 января 2011

Я работаю над чем-то похожим в Java в приложении для распознавания речи.

Я бы порекомендовал использовать MFCC (требует вычисления FFT) для извлечения функций и нейронных сетей или какой-либо другой метод машинного обучения для обучения и распознавания. Вы обучаете NN функциям, извлеченным из эталонного файла WAV, точнее из последовательных равных отрезков / окон этого аудиофайла. Затем вы используете NN, чтобы определить, имеет ли другой файл, также разбитый на фрагменты, те же функции.

Это основная идея, которую вы можете разработать, чтобы усовершенствовать свои собственные спецификации или то, что вы хотите, чтобы ваше приложение делало.

Что касается библиотек в Objective C, я думаю, вы можете найти несколько для части обработки сигналов (FFT и тому подобное), а для части машинного обучения, я понятия не имею, что вы могли бы найти.

Что касается времени программирования, его сложно оценить, поскольку оно зависит от множества деталей. Я бы сказал где-то около недели, но это справедливая оценка.

пс: MFCC обозначает коэффициенты Mel-частоты: http://en.wikipedia.org/wiki/Mel-frequency_cepstrum

0 голосов
/ 21 января 2011

Похоже на то, что делает «Shazam» - кстати, отличное приложение для iPhone, проверьте его, если вы еще этого не сделали (это тоже бесплатно).

Некоторое время назад была статья о том, как Shazamработает, читайте здесь .Он берет акустический отпечаток и сравнивает его с отпечатками других песен, возвращая самое близкое совпадение.

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

-

Вероятно, потребуется некоторое время для программирования.Если ваши математические навыки соответствуют требованиям, это звучит как хороший вызов: -)

-

РЕДАКТИРОВАТЬ: оказывается, что на сайте был какой-то исходный код, который ясвязаны между собой.Он написан на Java, но его стоит изучить, прежде чем начать писать свой собственный. Исходный код здесь

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