Mycroft-core: Местный запасной вариант STT?

Созданный на 21 янв. 2017  ·  9Комментарии  ·  Источник: MycroftAI/mycroft-core

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

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

Личное прошлое:

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

Предложение:

  • Добавьте поддержку одного или нескольких инструментов локального распознавания.
  • Добавьте опцию «откат» в настройки STT, чтобы использовать локальное распознавание, если удаленная служба не отвечает (нет соединения или требуется больше X секунд для выдачи результата)

Вопросы, решаемые этим:

  • Конфиденциальность (пользователи, которые готовы пожертвовать качеством ради конфиденциальности, могут сделать это, возможно, с полностью автономным Mycroft)
  • Продолжать работу при плохой связи (вариант «плохой ответ» вместо «отсутствие ответа»)
Enhancement - proposed help wanted

Все 9 Комментарий

Полностью согласен! Фактически, если я правильно прочитал одно из сообщений в блоге / информационного бюллетеня, я бы сказал, что это должно быть твердо в рамках.

Привет,

См. Запрос на вытягивание № 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 будет объединен, чтобы я мог его добавить :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги