Mycroft-core: Retorno de STT local?

Criado em 21 jan. 2017  ·  9Comentários  ·  Fonte: MycroftAI/mycroft-core

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:

  • Adicione suporte para uma ou mais ferramentas de reconhecimento local.
  • Adicione uma opção "fallback" nas configurações de STT para usar o reconhecimento local se o serviço remoto não responder (sem conexão ou leva mais de X segundos para dar um resultado)

Problemas resolvidos por este:

  • Privacidade (os usuários que desejam sacrificar a qualidade pela privacidade podem fazê-lo, potencialmente com um Mycroft totalmente offline)
  • Continue operando com conectividade ruim (opção de preferir uma "resposta ruim" em vez de "nenhuma resposta")
Enhancement - proposed help wanted

Todos 9 comentários

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 :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

KathyReid picture KathyReid  ·  8Comentários

tiagochiavericosta picture tiagochiavericosta  ·  6Comentários

mghoffmann picture mghoffmann  ·  6Comentários

el-tocino picture el-tocino  ·  4Comentários

krisgesling picture krisgesling  ·  5Comentários