Mycroft ist ein Sprachsystem, das für jede Sprache konfiguriert werden kann, aber es benötigt Sprachdateien und vor allem einen Parser für diese Sprache. Als ich neulich Musik hörte, fiel mir diese eine Zeile in einem Lied auf:"Praat Nederlands met me" ("Sprich Niederländisch mit mir"). Ich arbeite schon seit geraumer Zeit an einem Sprachassistenten, der auf Mycroft aufbaut, aber er war immer auf Englisch. Also dachte ich: "Wie schwer kann das schon sein?". Nun, so schwer ist es gar nicht, aber ich habe auf dem Weg dorthin eine Menge gelernt. Ich zeige Ihnen die Schritte, die Sie dafür unternehmen müssen, und gebe Ihnen anschließend einen Einblick in die Entwicklung der Sprachunterstützung innerhalb des Mycroft-Ökosystems.
Zu unternehmende Schritte
Ändern Sie die Sprache für Ihr "Gerät".
Mycroft ist auf einer Vielzahl von Plattformen verfügbar, z.B. auf dem (nicht mehr erhältlichen) Mark 1 physischen Gerät, aber auch auf einem Raspberry Pi oder einem Desktop. Ich experimentiere normalerweise auf meinem Desktop, um die Entwicklung zu erleichtern, bevor ich mein Experiment auf meinen Raspberry Pi übertrage. Ich habe diesen Abschnitt der Mycroft-Readme-Datei befolgt, in dem die Schritte beschrieben sind, die notwendig sind, um Mycroft auf meinem lokalen Rechner zum Laufen zu bringen.
Mycroft bezieht seine Konfiguration aus der Online-Umgebung und den dazugehörigen Konfigurationsdateien. Wenn Sie die Sprache ändern möchten, müssen Sie die Datei namens mycroft.conf der sich normalerweise in einem Ordner in Ihrem Home-Verzeichnis namens .mycroft/ (siehe dieses Dokument für weitere Einzelheiten). Wenn Sie Mycroft neu installiert haben, sieht diese Datei wie folgt aus:
{
"max_allowed_core_version": 19.8
}
Um Ihr Gerät in ein niederländisches Gerät zu verwandeln, ändern Sie es in
{
"max_allowed_core_version": 19.8,
"lang": "nl-nl"
}
Starten Sie Mycroft neu, um die neuen Einstellungen zu laden. Andere Konfigurationsänderungen können Sie einfach übernehmen, indem Sie Ihrem Assistenten " Konfiguration aktualisieren " sagen, aber diese Änderung wird irgendwie nicht übernommen.
Mit dieser Einstellung wird die Standardsprache in Text (STT) Engine, um Niederländisch zu erkennen. Die integrierte Text to Speech ( TTS) unterstützt (zum Zeitpunkt des Schreibens) kein Niederländisch und versucht, die niederländischen Phrasen mit einer englischen Stimme zu synthetisieren. Ich musste einen weiteren Schritt unternehmen, um das zu beheben.
Ändern Sie die Text-to-Speech-Engine auf eine, die die neue Sprache unterstützt
Mycroft hat eine sehr modulare Architektur und eine der steckbaren Komponenten in dieser Architektur ist die TTS-Engine. Sie unterstützt verschiedene Implementierungen zur Erzeugung von Sprache. Eine aktuelle Liste der Optionen finden Sie hier. In meinem Fall habe ich mich für die Google-Version entschieden, da sie derzeit den geringsten Aufwand bei der Einrichtung erfordert.
Um die TTS-Engine von Google zu aktivieren, ändern Sie Ihre mycroft.conf Datei in die folgende:
{
"max_allowed_core_version": 19.8,
"lang": "nl-nl",
"tts": {
"module": "google",
"google": {
"lang": "nl",
"slow": false
}
}
}
Starten Sie nun Mycroft neu, um sicherzustellen, dass diese Konfigurationsänderung verarbeitet wird. Jetzt, da Mycroft Niederländisch "versteht" und "spricht", kann ich mit der Entwicklung von Fertigkeiten auf Niederländisch beginnen
Ändern Sie Ihre Fähigkeiten, um die neue Sprache zu unterstützen
Die Fertigkeiten in Mycroft sind so konzipiert, dass sie mehrere Sprachen unterstützen, indem die Logik der Fertigkeit von den in dieser Fertigkeit verwendeten Wörtern/Phrasen getrennt wird. Eine typische Fertigkeit besteht aus einer Python-Datei, die die Logik der Fertigkeit definiert, kombiniert mit einem Vokabelordner und einem Dialogordner.
hello-world-skill ├── dialog/ │ ├── en-us │ │ ├── how.are.you.dialog │ │ └── welcome.dialog │ └── nl-nl │ ├── how.are.you.dialog │ └── welcome.dialog ├── __init__.py └── vocab ├── en-us │ ├── HowAreYou.intent │ └── ThankYouKeyword.voc └── nl-nl ├── HowAreYou.intent └── ThankYouKeyword.voc
Normalerweise nehme ich die en-us-Ordner (da sie in der Regel am vollständigsten sind) und kopiere sie in das Gebietsschema, das ich erstellen möchte (nl-nl in diesem Fall). Dann gehe ich die Dateien durch und übersetze die Wörter/Sätze einzeln.
Die Folgen der Verwendung einer anderen Sprache als Englisch in Mycroft
Bestimmte Fertigkeiten funktionieren nicht mehr, obwohl sie niederländische Übersetzungen in ihren Ordnern haben. Einer der Hauptgründe dafür ist, dass die Übersetzungen der anderen Sprachen dem Englischen hinterherhinken. Dies ist besonders problematisch bei der Verwendung von Intents, die vom Padatious Intent Parser verarbeitet werden müssen. Dieser Intent-Parser arbeitet mit Musterphrasen, die in einer Datei angegeben sind. Wenn diese Datei für die aktive Sprache nicht vorhanden ist, kann die Fertigkeit nicht vollständig geladen werden.
Ein weiterer Grund dafür ist eine fehlende Implementierung im Sprachparsing-Framework. Welche Skills auf dieses Framework angewiesen sind, finden Sie in der Liste, die in diesem Pull Request erwähnt wird. Diese Fertigkeiten verlassen sich auf das Parsing-Framework, um Zahlen oder Datum und Uhrzeit aus Äußerungen zu extrahieren, aber dieses Parsing wurde nur für eine Handvoll Sprachen implementiert. Wenn Sie versuchen, einen Satz in einer nicht unterstützten Sprache zu parsen, erhalten Sie eine Fehlermeldung.
Die Erkennung des Weckworts funktioniert auch nicht mehr, wenn Sie eines der bereitgestellten Weckwörter verwenden (Hey Mycroft , Hey Ezra , Christopher oder Hey Jarvis ). Das liegt daran, dass die Standard-Wachworterkennungs-Engine (genannt Pocketsphinx weckt die Worterkennungs-Engine. Diese Engine verfügt auch nicht über ein niederländisches Sprachmodell, so dass Sie mit Hey Mycroft als das einzige verfügbare Weckwort. Sie können dieses Problem umgehen, indem Sie Ihre eigene Weckwortdefinition für die präzise Maschine erstellen, aber das ist ein ziemlich komplizierter Prozess (wie hier beschrieben).
Abschließende Gedanken
Mycroft dazu zu bringen, eine Sprache vollständig zu unterstützen, ist derzeit noch eine schwierige Aufgabe. Es erfordert Änderungen im gesamten System und viel Einsatz der Community, um es richtig zu machen. Mycroft betreibt eine Übersetzungsinitiative, um alle in den Fähigkeiten verwendeten Wörter/Sätze zu übersetzen. Sie können dazu beitragen, indem Sie sich hier anmelden: Translate.mycroft.ai Website. Wie bereits erwähnt, habe ich eine erste Version eines Parsers für die niederländische Sprache erstellt, die vor kurzem in den Entwicklungszweig aufgenommen wurde. Werfen Sie einen Blick auf diese Github-Ausgabe, um alle Details zu erfahren. Ich arbeite daran, diese rudimentäre Version zu erweitern, und sobald ich das geschafft habe, werde ich einen weiteren Blogbeitrag über die Feinheiten der Verarbeitung natürlicher Sprache schreiben.
Verfasst von
Mike Woudenberg
Unsere Ideen
Weitere Blogs
Contact



