Распознавание голоса на основе анализа сигнала / спектра - PullRequest
0 голосов
/ 06 июня 2018

Я работаю над решением признать аудио слова путем сравнения сигнала и спектра.
Для декодирования аудио, я использую кодек и libavformat и я использую 1 ссылочный слово и сравнить с другими.
1003* Пример:

# Must return true
./vrecog --file_ref chocolat.wav --file_cmp chocolat_2.wav
# Must return false
./vrecog --file_ref chocolat.wav --file_cmp banana.wav

Мой шаг:

  1. Я помещаю сигнал в std :: vector
  2. Iпреобразовать сигнал в спектр с помощью Быстрое преобразование Фурье
  3. Я вычисляю [min, max, среднее, std_deviation, дисперсия] моего спектра
  4. Я использую значения в шаге3 для расчета коэффициента корреляции

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

Это мои графики:
Сигналы (шоколад, шоколад_2 и банан): chocolat signalchocolat_2 signalbanana signal
Спектр (шоколад, шоколад_2 и банан):
chocolat spectrumchocolat_2 spectrum banana spectrum

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

1 Ответ

0 голосов
/ 06 июня 2018

Для сигналов это обычно делается через функцию взаимной корреляции (из двух сигналов), которая очень похожа на свертку.Таким образом, это может быть математически сделано через FFT, который специально разработан, чтобы быть эффективным.После того, как вы возьмете функцию корреляции, вы можете решить, какой порог вы хотите сделать «совпадающим» и т. Д. Для получения дополнительной информации я прочитал бы по адресу: http://www.aip.de/groups/soe/local/numres/bookcpdf/c13-2.pdf, поскольку то, о чем мы говорим, довольно тяжело для математики.и преподавал в течение нескольких недель на одном из моих курсов в колледже.

...