Алгоритм голосового сравнения - PullRequest
8 голосов
/ 11 мая 2010

Учитывая два записанных голоса в цифровом формате, существует ли алгоритм для сравнения двух и получения коэффициента сходства?

Ответы [ 4 ]

4 голосов
/ 11 мая 2010

Я рекомендую взглянуть на инструментарий HTK для распознавания речи http://htk.eng.cam.ac.uk/,, особенно в части, касающейся извлечения функций.

Особенности, которые я бы назвал хорошими показателями:

  • Коэффициенты Mel-Cepstrum (общий тембр)
  • LPC (для гармоник)
4 голосов
/ 11 мая 2010

Учитывая ваше уточнение, я думаю, что вы ищете подпадает под алгоритмы распознавания речи .

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

Однако вам придется определить этот коэффициент подобия более формально и точно, чтобы добраться куда угодно.

EDIT: Я считаю, что алгоритмы распознавания речи были бы полезны, потому что они делают абстракцию звука и сравнение с некоторыми известными формами. Концептуально это может не сильно отличаться от двух записей, их абстрагирования и сравнения.

Из статьи в Википедии о HMM

«В распознавании речи скрытый Марковская модель выдаст последовательность n-мерных вещественных векторов (с n, являющимся маленьким целым числом, таким как 10), выводя один из них каждые 10 миллисекунды. Векторы будут состоят из кепстральных коэффициентов, которые получены путем взятия Фурье преобразование короткого временного окна речь и декоррелирование спектра используя косинусное преобразование, затем принимая первый (самый значительный) коэффициенты ".

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

Но опять-таки, теперь вы подошли к вопросу определения «коэффициента сходства», и введение собак и лошадей не очень помогло.

(Ну, это немного, но с точки зрения оценки алгоритмов и выбора одного из них вам придется работать лучше).

3 голосов
/ 11 мая 2010

Существует много разных алгоритмов - общее название для этой задачи: Speaker Identification - начните с этой страницы Википедии и продолжайте оттуда: http://en.wikipedia.org/wiki/Speaker_recognition

0 голосов
/ 11 мая 2010

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

Сначала вы должны рассчитать fft обоих звуковых файлов, а затем выполнить корреляцию. В формуле это будет выглядеть (псевдокод):

fftSoundFile1 = fft(soundFile1);
fftConjSoundFile2 = conj(fft(soundFile2));
result_corr = real(ifft(soundFile1.*soundFile2));

Где fft = быстрое преобразование Фурье, ifft = обратное, conj = сопряженный комплекс. FFT выполняется на выборочных значениях звуковых файлов. Пики в векторе result_corr дадут вам позиции высокой корреляции. Обратите внимание, что оба звуковых файла в этом случае должны иметь одинаковый размер, иначе вы должны поместить более короткий файл в файл вектора max (soundFileLength).

Привет

Редактировать:. * Означает (в стиле Matlab) компонентный мульт, вы не должны делать векторный мульт! Следующее редактирование: обратите внимание, что вам нужно работать с комплексными числами - но есть несколько сложных классов, поэтому я думаю, что вам не нужно об этом беспокоиться.

...