Проблема с настройкой обнаружения горячих слов в Snowboy вместе с библиотекой Pyech SpeechRecognition - PullRequest
0 голосов
/ 31 октября 2018

Я хочу использовать библиотеку обнаружения горячих слов Snowboy и библиотеку SpeechRecognition в проекте Python. Тем не менее, я столкнулся с рядом различных ошибок, пытаясь заставить этих двоих хорошо играть вместе.

Изначально я настроил его таким образом, чтобы функция обратного вызова Snowboy запускала функцию прослушивания SpeechRecognition для приема звука после того, как было обнаружено горячее слово. Однако обе библиотеки, кажется, блокируют доступ к микрофону при создании каждого из их соответствующих экземпляров. Таким образом, этот код выдаст сообщение об ошибке PyAudio с жалобой на то, что SpeechRecognition пытается получить доступ к уже используемому микрофону (Snowboy).

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

Моя последняя попытка состояла в том, чтобы использовать встроенную в Snowboy реализацию горячих слов Snowboy. Я знал об этой функции, но избегал ее до сих пор, так как предпочел иметь возможность контролировать то, что происходило между обнаружением горячих слов и переводом STT. Это помогло мне справиться с проблемой разделения микрофона между двумя библиотеками, но теперь модели горячих слов, которые я тренирую с сайта Сноубоя, похоже, не работают так, как они должны быть, даже совсем. Я поиграл с созданием разных моделей с разными микрофонами и безрезультатно настраивал чувствительность.

На данный момент я рассматриваю возможность вернуться к идее удаления / воссоздания экземпляров микрофона, чтобы вернуться к использованию библиотеки Snowboy для обнаружения горячих слов, а не к встроенной реализации SpeechRecognition, поскольку я чувствую, что эти два метода достаточно различны, чтобы вызвать мою текущую проблему. с моделями. До переключения реализации SpeechRecognition обнаружение горячих слов работало намного лучше.

Несколько замечаний:

  • работает на Raspberry Pi 3 B + с Raspbian
  • мой текущий код можно найти здесь
  • Библиотека Snowboy копируется прямо в репозиторий. Его реализацию можно найти здесь
  • Реализацию SpeechRecognition для горячего слова Snowboy можно найти здесь

Если кто-то захочет увидеть журналы, сообщения об ошибках и т. Д., Сообщите мне.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 11 апреля 2019

Всем, у кого могут быть такие же или похожие проблемы, я нашел решение. Все методы, которые я попробовал, в конечном итоге не сработали, но я обнаружил, что нужные мне функции уже встроены в библиотеку Snowboy. Однако готовые двоичные файлы, доступные для прямой загрузки, устарели и пока не имеют этой функциональности. Поэтому, чтобы получить описанную мной функциональность, вам придется пройти через процесс компиляции вашего собственного двоичного файла с инструкциями в README для репозитория Snowboy GitHub.

Внесение этого изменения немедленно устранило проблемы, с которыми я столкнулся, и позволило мне продолжить работу над моим проектом.

Надеюсь, это поможет кому-то еще, кто может застрять в этом.

...