Я хочу использовать библиотеку обнаружения горячих слов Snowboy и библиотеку SpeechRecognition в проекте Python. Тем не менее, я столкнулся с рядом различных ошибок, пытаясь заставить этих двоих хорошо играть вместе.
Изначально я настроил его таким образом, чтобы функция обратного вызова Snowboy запускала функцию прослушивания SpeechRecognition для приема звука после того, как было обнаружено горячее слово. Однако обе библиотеки, кажется, блокируют доступ к микрофону при создании каждого из их соответствующих экземпляров. Таким образом, этот код выдаст сообщение об ошибке PyAudio с жалобой на то, что SpeechRecognition пытается получить доступ к уже используемому микрофону (Snowboy).
Я попробовал несколько способов обойти эту проблему, включая использование многопоточности / многопроцессорной обработки и удаление каждого экземпляра микрофона сразу после их использования, а затем воссоздание их, когда они были необходимы снова (довольно уродливо). Мне не повезло ни с одним из этих обходных путей.
Моя последняя попытка состояла в том, чтобы использовать встроенную в Snowboy реализацию горячих слов Snowboy. Я знал об этой функции, но избегал ее до сих пор, так как предпочел иметь возможность контролировать то, что происходило между обнаружением горячих слов и переводом STT. Это помогло мне справиться с проблемой разделения микрофона между двумя библиотеками, но теперь модели горячих слов, которые я тренирую с сайта Сноубоя, похоже, не работают так, как они должны быть, даже совсем. Я поиграл с созданием разных моделей с разными микрофонами и безрезультатно настраивал чувствительность.
На данный момент я рассматриваю возможность вернуться к идее удаления / воссоздания экземпляров микрофона, чтобы вернуться к использованию библиотеки Snowboy для обнаружения горячих слов, а не к встроенной реализации SpeechRecognition, поскольку я чувствую, что эти два метода достаточно различны, чтобы вызвать мою текущую проблему. с моделями. До переключения реализации SpeechRecognition обнаружение горячих слов работало намного лучше.
Несколько замечаний:
- работает на Raspberry Pi 3 B + с Raspbian
- мой текущий код можно найти здесь
- Библиотека Snowboy копируется прямо в репозиторий. Его реализацию можно найти здесь
- Реализацию SpeechRecognition для горячего слова Snowboy можно найти здесь
Если кто-то захочет увидеть журналы, сообщения об ошибках и т. Д., Сообщите мне.
Спасибо за любую помощь.