Алгоритм для речевого сравнения

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

8
задан mtrw 11 May 2010 в 07:51
поделиться

4 ответа

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

Характеристики, которые я считаю хорошими индикаторами:

  • Коэффициенты Мел-Цепстра (общий тембр)
  • LPC (для гармоник)
4
ответ дан 5 December 2019 в 15:20
поделиться

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

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

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

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

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

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

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

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

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

4
ответ дан 5 December 2019 в 15:20
поделиться

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

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

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

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

С уважением

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

0
ответ дан 5 December 2019 в 15:20
поделиться

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

3
ответ дан 5 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: