Não sei quanto esforço isso exigiria, ou quanto interesse pode haver nisso.
Embora eu entenda que os sistemas STT locais típicos (off-line) não são tão bons em reconhecimento quanto os sistemas usados atualmente, eu ainda gostaria da opção de usá-los e também de uma opção de fallback se os serviços on-line demorarem muito para responder . (Além disso, se o serviço cair por qualquer motivo)
Antecedentes pessoais:
Internet doméstica é péssima, às vezes os pedidos básicos têm um atraso significativo, às vezes a conexão é interrompida (embora quase tudo que eu uso seja baseado na Internet, provavelmente haverá funções off-line apenas como automação residencial).
Sugestão:
Problemas resolvidos por este:
Totalmente de acordo! Na verdade, se eu ler uma das postagens / boletins do blog corretamente, diria que isso deve estar dentro do escopo.
Oi,
Consulte a solicitação de pull nº 656 e o problema relacionado nº 655. Ele implementa as mudanças necessárias no cliente / fala para usar o pocketsphinx local como dispositivo STT.
Foi desenvolvido e testado pensando na internalização do espanhol, mas deve ser válido para qualquer outro idioma suportado por PocketSphinx.
Veja a página wiki aqui para mais detalhes. Em particular, o capítulo intitulado "Selecionar e configurar um STT com suporte em espanhol".
Há também a solicitação pull # 438 se você quiser usar o kaldi.
Não tenho certeza se vai funcionar no raspberry pi, mas funciona bem na minha área de trabalho.
Poucos anos depois, mas compartilhando uma forma não otimizada de usar STTs online e offline dependendo da conectividade com a internet. Se isso puder ajudar alguém. Usando pessoalmente PocketSphinx como um STT offline
Em mycroft.stt.__init__.py adicione _from mycroft.util import connected_
em seguida, no método create (), adicione:
if connected() is True:
return PocketSphinxSTT()
else:
try :
...
Então, em seu mainskill.__init__.py, pode-se adicionar ao método handle_boot_finished esta chamada:
self.schedule_repeating_event(self.check_connection_switchSTT, None, 30)
Isso chamará o check_connection_switchSTT que verifica a conectividade com a Internet e reinicia os serviços de áudio, se houver alteração, a cada 30 segundos.
Minha função pessoalmente se parece com isto:
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'])
`
tendo self.prevstate previamente definido dependendo da conexão durante a inicialização da habilidade
Não é uma maneira muito boa de resolver o problema, mas não consegui encontrar mais nada sobre o assunto e precisava desesperadamente de um recurso quando minha internet cair. Se alguém pensou sobre este assunto durante os últimos três anos, por favor, compartilhe.
pocketsphinx é um beco sem saída, é uma merda a ponto de não ser utilizável nem mesmo como reserva
Eu fiz https://github.com/MycroftAI/mycroft-core/pull/1184 para adicionar um STT pocketsphinx offline, mas os testes ao vivo acabaram 99,9% das vezes comigo desistindo e usando apenas o CLI
Kaldi live streaming é uma opção, funciona um pouco melhor, eu desisto apenas 75% das vezes!
sua melhor opção é auto-hospedar deepspeech / kaldi, mas mesmo isso não está pronto para o horário nobre
você pode estar interessado no meu ouvinte local pocketsphinx ( no observador de kaldi
são provas de conceito, mas não são projetos realmente mantidos. Solicitações de pull são bem-vindas para mantê-las atualizadas
Acho que um STT substituto faz muito sentido, mas apenas quando temos algo utilizável, atualmente é um desperdício de recursos
Em segundo lugar, tendo problemas com o pocketsphinx, principalmente devido à baixa precisão, pessoalmente tive muito mais sorte ao usar o kaldi com https://github.com/jcsilva/docker-kaldi-gstreamer-server
A última vez que tentei foi em 2017, então ymmv, espero ter algum tempo para olhar de novo, sinto falta do meu mycroft :)
Obrigado, o ouvinte local é muito interessante, vou fazer RP com uma atualização.
O Vosk pode ser executado em RPI e possui modelos STT pequenos (50 MB) para atualmente 16 idiomas. Vou tentar agora ...
@domcross veja vosk aqui https://github.com/HelloChatterbox/speech2text/blob/dev/speech2text/engines/kaldi.py
apenas esperando que # 2594 seja mesclado para que eu possa adicioná-lo :)