Mycroft-core: Lokaler STT-Fallback?

Erstellt am 21. Jan. 2017  ·  9Kommentare  ·  Quelle: MycroftAI/mycroft-core

Ich weiß nicht, wie viel Aufwand das erfordern würde, oder wie groß das Interesse daran sein könnte.

Obwohl ich verstehe, dass die typischen lokalen (offline) STT-Systeme nicht so gut in der Erkennung sind wie die derzeit verwendeten Systeme, würde ich mir dennoch sowohl die Möglichkeit wünschen, sie zu verwenden, als auch eine Option zum Fallback, wenn die Online-Dienste zu lange auf die Reaktion warten . (Auch wenn der Dienst aus irgendeinem Grund ausfällt)

Persönlicher Hintergrund:

Das Internet zu Hause ist beschissen, manchmal verzögern sich grundlegende Anfragen erheblich, manchmal geht die Verbindung aus (während fast alles, was ich nutze, online basiert, wird es wahrscheinlich nur Offline-Funktionen wie die Heimautomatisierung geben).

Vorschlag:

  • Fügen Sie Unterstützung für ein oder mehrere lokale Erkennungstools hinzu.
  • Fügen Sie eine "Fallback"-Option in den STT-Einstellungen hinzu, um die lokale Erkennung zu verwenden, wenn der Remote-Dienst nicht reagiert (keine Verbindung oder dauert länger als X Sekunden, um ein Ergebnis zu erhalten).

Dadurch gelöste Probleme:

  • Datenschutz (Benutzer, die bereit sind, Qualität für Datenschutz zu opfern, können dies möglicherweise mit einem vollständig offline verfügbaren Mycroft tun)
  • Weiterbetrieb bei schlechter Konnektivität (Option, eine "schlechte Reaktion" gegenüber "keine Reaktion" zu bevorzugen)
Enhancement - proposed help wanted

Alle 9 Kommentare

Stimme voll und ganz zu! Wenn ich einen der Blog-Beiträge / Newsletter richtig gelesen habe, würde ich sagen, dass dies fest im Umfang enthalten sein sollte.

Hallo,

Siehe Pull-Request #656 und das zugehörige Problem #655. Es implementiert die notwendigen Änderungen in Client/Sprache, um lokales pocketphinx als STT-Gerät zu verwenden.

Es wurde in der spanischen Verinnerlichung entwickelt und getestet, muss jedoch für jede andere von PocketSphinx unterstützte Sprache gültig sein.

Weitere Informationen finden Sie hier auf der Wiki-Seite. Insbesondere das Kapitel mit dem Titel "STT mit spanischer Unterstützung auswählen und konfigurieren".

Es gibt auch Pull Request #438, wenn Sie kaldi verwenden möchten.
Ich bin mir nicht sicher, ob es auf dem Himbeer-Pi funktioniert, aber auf meinem Desktop funktioniert es einwandfrei.

Einige Jahre später, aber eine nicht optimierte Art der Verwendung von Online- und Offline-STTs, abhängig von der Internetverbindung. Wenn es jemandem helfen kann. PocketSphinx persönlich als Offline-STT verwenden

Auf mycroft.stt.__init__.py fügen Sie _from mycroft.util import connected_ hinzu.
Fügen Sie dann in der Methode create() Folgendes hinzu:

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

Dann kann man auf Ihrer mainskill.__init__.py der Methode handle_boot_finished diesen Aufruf hinzufügen:
self.schedule_repeating_event(self.check_connection_switchSTT, None, 30)
Dies ruft check_connection_switchSTT auf, das die Internetverbindung überprüft und Audiodienste alle 30 Sekunden neu startet, wenn sie sich geändert hat.
Meine Funktion sieht persönlich so aus:

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

`
zuvor self.prevstate je nach Verbindung während der Initialisierung des Skills definiert haben

Keine sehr gute Möglichkeit, das Problem zu lösen, konnte aber nichts anderes zu diesem Thema finden und musste dringend einen Fallback haben, wenn mein Internet ausfällt. Wenn jemand in den letzten drei Jahren über dieses Problem nachgedacht hat, teilen Sie es bitte mit.

pocketphinx ist eine Sackgasse, es ist so schlimm, dass es nicht einmal als Fallback verwendbar ist

Ich habe https://github.com/MycroftAI/mycroft-core/pull/1184 erstellt , um eine Offline-Taschenphinx STT hinzuzufügen, aber Live-Tests endeten in 99,9% der Fälle damit, dass ich aufgab und nur den Client benutzte

Kaldi Livestreaming ist eine Option, funktioniert etwas besser, ich gebe nur 75% der Fälle auf!

Ihre beste Option ist, Deepspeech / Kaldi selbst zu hosten, aber selbst das ist noch nicht für die Hauptsendezeit bereit ready

Sie könnten an meinem lokalen Pocketphinx-Hörer (begrenzter Wortschatz funktioniert ok) und Kaldi-Spotter interessiert sein

das sind Proof of Concepts, aber nicht wirklich gepflegte Projekte, Pull Requests sind willkommen, um sie auf dem Laufenden zu halten

Ich denke, ein Fallback STT ist sehr sinnvoll, aber erst wenn wir etwas Brauchbares haben, ist es derzeit Ressourcenverschwendung

Ich habe zweitens Probleme mit Pocketphinx, hauptsächlich aufgrund geringer Genauigkeit, persönlich hatte ich viel mehr Glück mit der Verwendung von Kaldi mit https://github.com/jcsilva/docker-kaldi-gstreamer-server

Das letzte Mal habe ich es 2017 versucht, also ymmv, hoffentlich habe ich etwas Zeit, es mir noch einmal anzusehen, ich vermisse mein Mycroft :)

Danke, der lokale Hörer ist in der Tat sehr interessant, ich werde mit einem Update PR geben.

Vosk läuft auf RPI und hat kleine (50 MB) STT-Modelle für derzeit 16 Sprachen. das werde ich jetzt mal ausprobieren...

@domcross siehe vosk hier https://github.com/HelloChatterbox/speech2text/blob/dev/speech2text/engines/kaldi.py

Ich warte nur darauf, dass #2594 zusammengeführt wird, damit ich es hinzufügen kann :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Ahmed-Benj picture Ahmed-Benj  ·  7Kommentare

damorosodaragona picture damorosodaragona  ·  5Kommentare

krisgesling picture krisgesling  ·  3Kommentare

fxdgear picture fxdgear  ·  6Kommentare

beemorris picture beemorris  ·  6Kommentare