Нет простого способа распознать слова, потому что они в основном представляют собой последовательность фонем, которые могут различаться по времени и частоте.
Классические изолированные системы распознавания слов используют сигнал MFCC (кепстральные коэффициенты) в качестве входных данных и пытаются распознать шаблоны, используя алгоритмы HMM (скрытые марковские модели) или DTW (динамическое искажение времени).
Вам также понадобится модуль обнаружения тишины, если вам не нужна кнопка записи.
Например, Инструментарий Edimburgh University предоставляет некоторые из этих инструментов (с хорошей документацией).
Если вы не хотите создавать его «с нуля» или у вас есть источник вдохновения, здесь - это (старая, но бесплатная) реализация такой системы (которая использует собственный инструментарий) с полное объяснение и практические примеры о том, как это работает.
Эта система является LVCSR (Распознавание непрерывной речи с большим словарным запасом), и вам нужна только ее часть. Если кто-то знает сокращенную словарную систему с открытым исходным кодом (например, простой IVR), это будет приветствоваться.
Если вы хотите создать базовую систему самостоятельно, я рекомендую вам использовать MFCC и DTW:
- Для каждого целевого слова для моделирования:
- запишите несколько экземпляров слова
- вычислить некоторую (например, каждые 10 мс) дельта-MFCC через слово, чтобы получить модель
- Когда вы хотите распознать сигнал:
- вычислить некоторую дельта-MFCC этого сигнала
- используйте DTW для сравнения этих дельта-MFCC с дельта-MFCC каждого смоделированного слова
- вывести слово, которое подходит лучше всего (используйте порог для удаления мусора)