PVA – Carola spricht weiter zu uns

Vor ein paar Monaten haben ich einen Personal Voice Assistant(PVA), also einen persönlichen Sprachassistenten zusammengebaut. Hier ein Update zur jüngsten Entwicklung von Carola.

PVA – Carola spricht weiter zu uns

An der Sprachausgabe hat sich eine Veränderung ergeben, die dem Projekt zwar eine deutlich bessere Stimme verpaßt, aber leider auch Privatsspährenverletzungen erlaubt. Die Rede ist von der Einführung von GTTS, der Google Text-To-Speech API.Dabei werden die Textausgaben an einen Googleserver übertragen und dann in ein MP3 umgewandelt.

An sich ist das kein Problem, wenn man sich im Griff hat. Wenn aber der PVA etwas gesprochenes im Raum aufschnappt und meint, das wäre für ihn bestimmt, dann wertet er das aus. Erkennt der PVA nicht, was man von Ihm wollte, weil es unabsichtlich war, wird ein Teil des Textes zitiert. Dieser Teil, auch wenn er nur wenige Worte umfasst, würde auch an Google gehen.

Damit das nicht unwillentlich passiert, ist GTTS zwar jetzt möglich, aber nicht aktiviert. Das führt uns aber auf direktem Wege zu einem neuen coolen Feature vom PVA: Alternativen zur Laufzeit ändern, per Sprachbefehl 😀

Alternatives / Alternativen

In der Konfiguration sieht das so aus:

Es gibt eine Definition der Anwendung „say“:

app:“say„,“/usr/local/sbin/say“

Der konfigurierte Befehl wird für alle Sprachausgaben benutzt, eine Anpassung hier ändert also sofort alles. Um dies vom PVA per Sprache zu machen, sagt man bezogen auf GTTS einfach: „benutze google sprachausgabe“ und schon wird in der Konfiguration gsay, statt say eingetragen und ab sofort benutzt. Die Rückkehr zum normalen Espeak+Mbrola TTS ist entsprechend einfach: „benutzte normale sprachausgabe“.

Das sieht dann so aus:

alternatives:“normale sprachausgabe„,“say„,“/usr/local/sbin/say“
alternatives:“google sprachausgabe„,“say„,“/usr/local/sbin/gsay“

Das gleiche kann man für alle Apps machen, sofern man da Alternativen konfiguriert hat und welche die gleichen Argumente akzeptieren: Beispiel

app:“searchengine„,“duckduckgo

alternatives:“duckduckgo„,“searchengine„,“duckduckgo
alternatives:“googlesuche„,“searchengine„,“google

Die Suchmaschinen sind wiederum so definiert:

searchengines:“duckduckgo„,“https://html.duckduckgo.com/html?q=<query>
searchengines:“google„,“https://www.google.com/search?q=<query>

In der Defaultkonfiguration sind entsprechende Beispiele konfiguriert.

Anwendungen starten

Die Liste der Apps kann jetzt beliebig erweitert werden. Der Sprachbefehl „starte runes of magic“ wird jetzt über die Appliste und nicht mehr im Javacode gestartet:

app:“runes of magic„,“runesofmagic
app:“blender“,“blender“
app:“wetter“,“gnome-weather“
app:“karte“,“gnome-maps“
app:“firefox“,“firefox“
app:“netflix„,“firefox https://www.netflix.com/browse/my-list
usw.

Wie man sieht, kann man auch die NetFlix Webanwendung starten, wenn man das Profile angibt und ein eigenes Profil für Netflix benutzt, kann man es auch gleich im Fullscreenkioskmodus starten, was echt stylish ist 😉 Für „Runes of Magic“ habe ich mir ein kleines Startscript gebaut, deswegen sieht das so einfach aus:

#!/bin/bash

env WINEPREFIX="/home/<username>/.wine" /opt/wine-staging/bin/wine C:\\\\windows\\\\command\\\\start.exe /d "/home/<username>/Programme/GameforgeLive/Games/DEU_deu/Runes Of Magic/" /Unix "/home/<username>/Programme/GameforgeLive/Games/DEU_deu/Runes Of Magic/launcher.exe" NoCheckVersion 1>/dev/null 2>/dev/null &

Gerade eben, beim Schreiben des Textes hatte ich die geniale Idee, wie man das gesamte System, also alle Desktop Apps automatisch ansprechen könnte …Das wird ein Spaß 😀

Checkt mal in den nächsten Tagen das Github-Repo für ein Update des PVA.java . Das kann eigentlich nicht lange dauern bis das läuft. Es würde da eher an der Spracherkennung happern, die Cache z.b. als Cash erkennt. Vermutlich ist es besser, die deutschen Programmnamen zu verwenden 😉

… GEHT 😀

Das ist sooo cool, daß ich Euch ein Video machen muß, leider streikt OpenShot gerade 🙁 . Man lässt z.b. Bilder suchen und kann diese dann mit einer Wunsch Anwendung öffnen. Er findet auch alle Programme, die ein Desktopfile haben und kann die starten bzw. die als Ziel für z.b. Bildersuchergebnisse benutzen.

Erster Beitrag:

Mbrola – etwas bessere Sprachsynthese

Carola – Personal Voice Assistent

Vor 2 Wochen hatte ich Euch schon von den ersten Schritten für Euren persönlichen Sprachassistenten für Linux berichtet, nun kommt der dafür nötige Code zu Euch.

Carola – Personal Voice Assistent

Das Projekt basiert noch immer auf VOSK, Mbrola und Java, so wie hier beschrieben:

Mbrola – etwas bessere Sprachsynthese

Wer eine deutsche Anleitung zum Installieren der Abhängigkeiten vorzieht, der wird oben fündig zusammen mit einigen nützlichen Infos. Jeder der gleich noch Carola mit installieren möchte, der muß hier auf Github in mein Repo schauen: https://github.com/Cyborgscode/Personal-Voice-Assistent

Neben der Anleitung zur Installation findet Ihr da alle Teile, die Ihr braucht um Euren PC ab sofort per Sprache zu bedienen.

Ziel von Carola

Das Ziel von Carola ist nicht, daß es für Euch Knöpfchen drückt oder Menüs öffnet. Vielmehr soll Carola ganz nebenbei Aufgaben erledigen, die einen perifer interessieren, z.B. im Programmieren oder Schreiben eines anderen Textes, die Musik zu steuern, damit Ihr aus dem Arbeitsfluß nicht rausfallt. Man muß auch nicht mehr zum PC laufen und leiser machen, wenn man gerade kein Handy in der Hose und KDE zur Hand hat, sprich auf einer Feier kann man Carola bitten die Musik leiser zu machen. Solche Dinge stehen hier im Fokus.

Natürlich könnt Ihr es auch produktiv zur Suche nach Dokumenten benutzen, Eure Emails diktieren oder jemanden anzurufen, wenn man die Möglichkeiten hat, die man dazu braucht.

Was Carola nicht tut

Carola wird Euch nicht Eure Lieblingsepisode auf Netflix abspielen oder WOW für Euch zocken, weil Ihr den Char leveln wollt … noch nicht 😉 Das ist zur Zeit zu komplex, wäre jetzt aber wiederum nicht so schwer, wie diverse Botscripte für Spiele beweisen. Eigentlich hapert es nur an den Programmen selbst, weil diese externen Input halt nur per Maus und Tastatur annehmen und keine API zur Verfügung stellen, wie QMMP das z.b. tut. Ich kann Firefox dazu bringen, Netflix zu öffnen, aber das wars dann auch schon.

Wie kann man Carola erweitern

Das erste was Ihr machen könnt ist Eure Apps in die Config einzutragen. Damit, sofern die Apps da funktional mitspielen, habt Ihr das schon einmal personalisiert.

Dann könnt Ihr die Befehlsworte natürlich selbst anpassen. Alles was es braucht ist ein Texteditor der idealerweise Java interpretieren kann und den Java Compiler, der bei Java dabei ist. Wer neue Funktionen einbauen möchte, muß leider Java können. Der universal Parser ist noch nicht fertig, kommt aber.

Wer nicht weiß wie man mit einem Javac Befehl umgeht, Carola weiß es. Solange Ihr keine Fehler einbaut, kann Sie sich selbst kompilieren, auf Zuruf 😉

Pinephone

Carola funktioniert auch auf dem Pinephone gut, klar ist ja auch ein Linux, braucht dort aber eine beta-Komponente von AlphaCephei. Wo man die her bekommt, steht in Github Readme drin. Ansonsten ist alles gleich. Nur eins muß einem klar sein: Wenn auf dem Pine Musik aus dem Lautsprecher kommt, übertönt das Eure Spracheingabe bei weitem! Also Sprachsteuerung und Musik geht nur bei Kopfhörereinsatz.

Alles weitere steht in den Sourcen des Projekts, also wünsche ich jetzt viel Vergnügen damit 🙂

Github: https://github.com/Cyborgscode/Personal-Voice-Assistent