Простой детектор слов с использованием MFCC

Я реализую программное обеспечение для распознавания речи с использованием коэффициентов Mel Frequency Cepstrum Coefficients. В частности, система должна распознавать одно указанное слово. Начиная с аудиофайла, я получаю MFCC в матрице с 12 строками (MFCC) и количеством столбцов, равным количеству голосовых кадров. Я делаю среднее значение строк, поэтому я получаю вектор только с 12 строками (i-я строка - это среднее значение всех i-х-MFCC всех кадров). У меня вопрос, как обучить классификатор распознавать слово? У меня есть обучающий набор только с положительными образцами, MFCC, которые я получаю из нескольких аудиофайлов (несколько регистраций одного и того же слова).


person Luigi Biasi    schedule 17.02.2015    source источник


Ответы (1)


Я делаю среднее значение строк, поэтому я получаю вектор только с 12 строками (i-я строка - это среднее значение всех i-х-MFCC всех кадров).

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

У меня вопрос, как обучить классификатор распознавать слово?

Простая форма - это классификатор GMM, вы можете проверить здесь:

http://www.mathworks.com/company/newsletters/articles/developing-an-isolated-word-recognition-system-in-matlab.html

В более сложной форме вам необходимо изучить более сложную модель, такую ​​как HMM. Вы можете узнать больше о HMM из учебника, подобного этому

https://rads.stackoverflow.com/amzn/click/com/0130151572

person Nikolay Shmyrev    schedule 17.02.2015
comment
Привет, большое спасибо за ответ. Я получил MFCC из голосовых кадров и построил модель гауссовой смеси с помощью функции gmdistribution в Matlab. После этого тестирую модель с новым звуком. Я снова получаю MFCC из нового звука, а с помощью апостериорной функции я получаю вероятность каждого MFCC. Теперь, как система может принять решение об этой вероятности? - person Luigi Biasi; 17.02.2015
comment
Вы получаете вероятность для всех слов, которые ищете, и слово с наибольшей вероятностью является ответом. Ссылка выше говорит, что тестовая речь классифицируется как цифра с GMM, которая дает максимальное значение логарифма правдоподобия. - person Nikolay Shmyrev; 17.02.2015
comment
В порядке. Теперь у меня есть слово, и я хочу знать, совпадает ли оно с тем, которое я сначала использовал для построения модели гауссовой смеси. Итак, я запускаю апостериорную функцию с входными значениями MFCC этого аудио и получаю значение вероятности журнала. Мне нужно сравнить это значение с порогом, чтобы решить, совпадает ли это слово с оригиналом? - person Luigi Biasi; 17.02.2015
comment
Как я могу получить этот порог? Я думал использовать алгоритм кластеризации с двумя центроидами, но отрицательных выборок мало. - person Luigi Biasi; 18.02.2015
comment
Извините, у меня есть еще один вопрос. Результатом апостериорной функции является отрицательный логарифм правдоподобия, если правдоподобие находится в диапазоне [0,1], отрицательный логарифм является положительным, но функция несцендентна, это означает, что наилучшее значение имеет место, когда отрицательное логарифм правдоподобия близко к 0. . Это правильно? Другой вопрос, есть ли у меня gmm для каждого слова, которое нужно обнаружить? Итак, когда я захватываю звук с микрофона, я сравниваю MFCC со всеми GMM, которые я использую, и в результате получается GMM, который дает мне большую вероятность? - person Luigi Biasi; 18.02.2015
comment
Вы можете получить порог для случайной записи. Значение вероятности находится между 0 и 1. Я ответил на ваш третий вопрос выше. - person Nikolay Shmyrev; 18.02.2015
comment
Спасибо за Ваш ответ. Я хочу сказать, сколько MFCC необходимо для хорошей работы? Я хочу распознавать речь и говорящего. Теперь я использую 13 коэффициентов, и у меня нет плохой производительности. Сейчас я работаю над поиском хорошего порога для уменьшения ошибочной классификации отрицательных выборок, система определяет их как обучающее слово. - person Luigi Biasi; 18.02.2015