В настоящее время я работаю над проектом для моего университета. Задача состоит в том, чтобы написать систему распознавания речи, которая будет работать на телефоне в фоновом режиме, ожидая нескольких команд (например, вызов 0 123 …).
Это 2-месячный проект, поэтому он не должен быть очень точным. Количество приемлемого шума может быть небольшим, и слова будут разделены моментами молчания.
В настоящее время я нахожусь в точке загрузки образца слова, закодированного в формате RAW 16 бит PCM. Разделение его на порции (около 50 в секунду) и запуск FFT на каждом порции для получения частотного спектра.
Что нужно решить:
1) пройти более длительную запись и разбить ее на слова.
2) поиск лучшего соответствия для слова
1) Я думал о проверке фрагмента за фрагментом, и если я сталкиваюсь с несколькими фрагментами, которые имеют более высокие высоты частот человеческого голоса, предположим, что слово началось. В любом случае я ищу ресурсы, которые могут помочь с этим.
2) Этот швы немного жестче. Нужно ли использовать HMM для системы, подобной этой, или, может быть, существуют более простые методы, предполагающие, что словарь настолько мал (20 слов)?
Редактировать:
Суть проекта заключается в написании системы самостоятельно, поэтому я не могу использовать готовые библиотеки, такие как Sphinx или HTK.
С Уважением,
Karol
Для распознавания команд на телефоне вы можете использовать Pocketsphinx. Руководство который охватывает приложения для распознавания речи на Android, доступен на веб-сайте CMUSphinx.
Если у кого-нибудь будет такой же вопрос в будущем. Посмотрите на 2 основных ключевых слова:
MFCC — Mel-Frequency Cepstrum Коэффициенты рассчитать ряд коэффициентов для каждого слова шаблона
DTW — чтобы сопоставить захваченное слово с шаблонами
Достаточно хорошее описание DTW можно найти в Википедии
Такой подход был достаточно хорош, чтобы иметь около 80% точности словаря из 20 слов и дать хорошую демонстрацию во время урока.