Распознавание речи - как разбить предложение на слова? - PullRequest
0 голосов
/ 02 октября 2019

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

ps: да, этот вопрос был задан три года назад, но я ищу актуальный ответиспользование более новых библиотек (то есть pytorch и tenorflow 2.0). Спасибо!

1 Ответ

1 голос
/ 02 октября 2019

Это не так тривиально.

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

Для наиболее разумного подхода потребуется стандартная обычная система распознавания речи. Проще всего было бы использовать систему HMM, поддерживаемую старомодными GMM, или, возможно, NN (которая называется гибридной моделью HMM-NN). Это также требует лексикона (сопоставления фонем со словами). Обычно вы используете существующую реализацию всего этого, например, Kaldi или RASR , поскольку это не так просто реализовать. Я не видел чистой реализации TF этого. Затем это программное обеспечение вычисляет наилучший возможный путь выравнивания через HMM (то есть, который имеет наибольшую вероятность, согласно обученной модели). Если вы знаете основные слова правды, это алгоритм Витерби, чтобы вычислить этот лучший путь. В противном случае вы могли бы выполнить некоторое декодирование (используя поиск луча).

То, что вы также можете сделать, но это будет более хакерским и менее хорошим (для этой задачи получения выравнивания): используйте некоторые из конечныхКонечные модели, например, кодер-декодер с вниманием или CTC. Для кодера-декодера с вниманием вы можете использовать весы внимания, чтобы получить правильное предположение о том, где находятся слова (а затем вы можете угадать, где находятся границы). Похоже на СТС. Но это не будет точным. Но это то, что вы можете легко реализовать в чистом TF.

В любом случае, сама реализация не так сложна (хотя все еще не проста). Сначала вы должны понять всю теорию, стоящую за этим. И, возможно, StackOverflow - не то место, где можно спросить об этом. Прочитайте, возможно, документацию Kaldi или RASR, посмотрите лекцию о распознавании речи или прочитайте книгу на эту тему.

...