Я не знаю, сколько для этого потребуется усилий и какой в этом может быть интерес.
Хотя я понимаю, что типичные локальные (автономные) системы STT не так хороши в распознавании, как системы, используемые в настоящее время, мне все равно нравится возможность их использовать, а также возможность отката, если онлайн-сервисы слишком долго реагируют. . (Также, если служба перестает работать по какой-либо причине)
Личное прошлое:
Домашний интернет дрянный, иногда базовые запросы значительно задерживаются, иногда обрывается соединение (хотя почти все, что я использую, подключено к сети, в конечном итоге, вероятно, будут доступны только автономные функции, такие как домашняя автоматизация).
Предложение:
Вопросы, решаемые этим:
Полностью согласен! Фактически, если я правильно прочитал одно из сообщений в блоге / информационного бюллетеня, я бы сказал, что это должно быть твердо в рамках.
Привет,
См. Запрос на вытягивание № 656 и связанную проблему № 655. Он вносит необходимые изменения в клиент / речь для использования локального pocketsphinx в качестве устройства STT.
Он был разработан и протестирован в испанской интернализации, но должен быть применим для любого другого языка, поддерживаемого PocketSphinx.
См. Вики-страницу здесь для получения более подробной информации. В частности, глава под названием «Выбор и настройка STT с поддержкой испанского языка».
Также есть запрос на перенос # 438, если вы хотите использовать kaldi.
Я не уверен, что он будет работать на Raspberry Pi, но отлично работает на моем рабочем столе.
Несколько лет спустя, но поделился неоптимизированным способом использования как сетевых, так и автономных STT в зависимости от подключения к Интернету. Если это может кому-то помочь. Лично использую PocketSphinx как офлайн STT
На mycroft.stt.__init__.py добавьте _from mycroft.util import connected_
затем в методе create () добавьте:
if connected() is True:
return PocketSphinxSTT()
else:
try :
...
Затем на вашем mainskill.__init__.py можно добавить к методу handle_boot_finished этот вызов:
self.schedule_repeating_event(self.check_connection_switchSTT, None, 30)
Это вызовет check_connection_switchSTT, который проверяет подключение к Интернету и перезапускает аудиосервисы, если оно изменилось, каждые 30 секунд.
Моя функция лично выглядит так:
def check_connection_switchSTT(self):
if connected() is True:
self.newstate = "yes"
else:
self.newstate = 'no'
if self.prevstate != self.newstate:
self.prevstate = self.newstate
LOG.info("Internet connectivity changed")
subprocess.call(['/path/to/stop-mycroft.sh', 'voice'])
subprocess.call(['/path/to/start-mycroft.sh', 'voice'])
`
предварительно определив self.prevstate в зависимости от соединения во время инициализации навыка
Не очень хороший способ решить проблему, но я не смог найти ничего другого по этому вопросу и очень нуждался в резервном варианте, когда мой интернет не работает. Если кто-то задумывался об этой проблеме в течение последних трех лет, поделитесь, пожалуйста.
pocketsphinx - это тупик, он отстой до такой степени, что его нельзя использовать даже в качестве запасного варианта
я сделал https://github.com/MycroftAI/mycroft-core/pull/1184, чтобы добавить автономный pocketsphinx STT, но живое тестирование закончилось 99,9% раз, когда я отказался и просто использовал cli
Прямая трансляция Kaldi - это вариант, работает немного лучше, я отказываюсь только в 75% случаев!
ваш лучший вариант - самостоятельно разместить deepspeech / kaldi, но даже это не готово для прайм-тайма
вам может быть интересен мой карманный местный слушатель phinx (ограниченный словарный запас работает нормально) и
это доказательство концепций, но не поддерживаемых проектов, запросы на извлечение приветствуются, чтобы поддерживать их в актуальном состоянии.
Я действительно думаю, что резервный STT имеет большой смысл, но только когда у нас есть что-то пригодное для использования, в настоящее время это пустая трата ресурсов
Во-вторых, у меня проблемы с pocketsphinx, в основном из-за низкой точности, лично мне больше повезло с использованием kaldi с https://github.com/jcsilva/docker-kaldi-gstreamer-server
Последний раз я пробовал его в 2017 году, так что ymmv, надеюсь, у меня будет время взглянуть на него еще раз, я скучаю по mycroft :)
Спасибо, местный слушатель действительно очень интересный, буду пиаровать с обновлением.
Vosk может работать на RPI и имеет небольшие (50 МБ) STT-модели для 16 языков. Я попробую сейчас ...
@domcross см. здесь vosk https://github.com/HelloChatterbox/speech2text/blob/dev/speech2text/engines/kaldi.py
просто жду, пока # 2594 будет объединен, чтобы я мог его добавить :)