Mycroft-core: ¿Retraso de STT local?

Creado en 21 ene. 2017  ·  9Comentarios  ·  Fuente: MycroftAI/mycroft-core

No sé cuánto esfuerzo tomaría esto, o cuánto interés podría haber en esto.

Si bien entiendo que los sistemas STT locales típicos (fuera de línea) no son tan buenos en el reconocimiento como los sistemas que se usan actualmente, me gustaría tener la opción de usarlos y una opción de respaldo si los servicios en línea tardan demasiado en responder. . (También si el servicio falla por cualquier motivo)

Experiencia personal:

Internet en el hogar es una porquería, a veces las solicitudes básicas se retrasan significativamente, a veces la conexión se interrumpe (mientras que casi todo lo que uso se basa en línea, es probable que finalmente haya funciones solo fuera de línea, como la automatización del hogar).

Sugerencia:

  • Agregue soporte para una o más herramientas de reconocimiento local.
  • Agregue una opción de "respaldo" en la configuración de STT para usar el reconocimiento local si el servicio remoto no responde (no hay conexión o tarda más de X segundos en dar un resultado)

Problemas resueltos por esto:

  • Privacidad (los usuarios que estén dispuestos a sacrificar la calidad por la privacidad pueden hacerlo, potencialmente con un Mycroft completamente fuera de línea)
  • Continuar operando con conectividad deficiente (opción para preferir una "respuesta deficiente" sobre "sin respuesta")
Enhancement - proposed help wanted

Todos 9 comentarios

¡De acuerdo enteramente! De hecho, si leo una de las publicaciones del blog / boletines informativos correctamente, diría que esto debería tener un alcance firme.

Hola,

Consulte la solicitud de extracción n. ° 656 y el problema relacionado n. ° 655. Implementa los cambios necesarios en el cliente / habla para usar PocketSphinx local como dispositivo STT.

Ha sido desarrollado y probado pensando en la internalización del español, pero debe ser válido para cualquier otro idioma soportado por PocketSphinx.

Consulte la página wiki aquí para obtener más detalles. En particular, el capítulo titulado "Seleccionar y configurar un STT con soporte en español".

También hay una solicitud de extracción # 438 si desea utilizar kaldi.
No estoy seguro de que funcione en la Raspberry Pi, pero funciona bien en mi escritorio.

Unos años después, pero compartiendo una forma no optimizada de usar STT en línea y fuera de línea dependiendo de la conectividad a Internet. Si puede ayudar a alguien. Uso personal de PocketSphinx como STT sin conexión

En mycroft.stt.__init__.py agregue _from mycroft.util import connected_
luego en el método create (), agregue:

if connected() is True: return PocketSphinxSTT() else: try : ...

Luego, en su mainskill.__init__.py, se puede agregar al método handle_boot_finished esta llamada:
self.schedule_repeating_event(self.check_connection_switchSTT, None, 30)
Esto llamará al check_connection_switchSTT que verifica la conectividad a Internet y reinicia los servicios de audio si cambia, cada 30 segundos.
Mi función personalmente se ve así:

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'])

'
habiendo definido previamente self.prevstate dependiendo de la conexión durante la inicialización de la habilidad

No es una muy buena forma de resolver el problema, pero no pude encontrar nada más sobre el tema y necesitaba desesperadamente tener un respaldo cuando mi Internet no funciona. Si alguien pensó sobre este tema durante los últimos tres años, por favor comparta.

Pocketphinx es un callejón sin salida, apesta hasta el punto de no ser utilizable ni siquiera como alternativa.

Hice https://github.com/MycroftAI/mycroft-core/pull/1184 para agregar un STT de Pocketphinx sin conexión, pero las pruebas en vivo terminaron 99,9% de las veces en las que me rendí y solo usé el cli

La transmisión en vivo de Kaldi es una opción, funciona un poco mejor, ¡solo me rindo el 75% de las veces!

su mejor opción es albergar deeppeech / kaldi, pero incluso eso no está listo para el horario de máxima audiencia

puede que te interese mi oyente local de pocketphinx (el vocabulario limitado funciona bien) y kaldi spotter

son pruebas de conceptos, pero no proyectos realmente mantenidos, las solicitudes de extracción son bienvenidas para mantenerlas actualizadas

Creo que un STT alternativo tiene mucho sentido, pero solo una vez que tenemos algo utilizable, actualmente es un desperdicio de recursos.

En segundo lugar, tengo problemas con Pocketphinx, principalmente debido a la baja precisión, personalmente tuve mucha mejor suerte al usar kaldi con https://github.com/jcsilva/docker-kaldi-gstreamer-server

La última vez que lo probé fue en 2017, así que mmm, espero tener algo de tiempo para volver a verlo, extraño mi mycroft :)

Gracias, el oyente local es muy interesante de hecho, haré relaciones públicas con una actualización.

Vosk puede ejecutarse en RPI y tiene modelos STT pequeños (50 MB) para actualmente 16 idiomas. Voy a intentarlo ahora ...

@domcross vea vosk aquí https://github.com/HelloChatterbox/speech2text/blob/dev/speech2text/engines/kaldi.py

esperando que el # 2594 se fusione para poder agregarlo :)

¿Fue útil esta página
0 / 5 - 0 calificaciones