PVA: kleines Carola Update

Weil das im Dezember mit dem Video nicht geklappt hat, reiche ich das heute mal nach.

PVA: kleines Carola Update

Wie Ihr Euch vielleicht erinnern mögt, gab es Anfang Dezember einige Anpassungen die Euch das Leben etwas vereinfachen konnten. Carola konnte Dateien suchen und das Suchergebnis einem x-beliebigen Programm übergeben. Diese Funktion wird im Video gezeigt:

RITA

Rita“ muß man kurz erklären. Der Begriff „Krita“ wird von der deutschen Sprachausgabe meisten als Kreta erkannt, manchmal aber auch nur als der Eigenname rita. Da „rita“ im Begriff „Krita“ vorkommt, findet der Sprachassistent das gewünschte Programm trotzdem 🙂

Der PVA durchsucht dafür die Anwendungsliste in /usr/share/applications/ und kann dann auch alle dort befindlichen Apps (auch ohne vorherige Suchergebnisse ) starten, wenn im Programmnamen oder in den Keywords eine Übereinstimmung mit dem Anwendungsnamen besteht. Leider kann das Programm noch keine Relevanz in die Suche einfließen lassen, so daß das Starten von „Bildschirm“ ggf. nicht die Bildschirmeinstellungen, sondern das Bildschirmfoto findet, je nach dem was zuerst gefunden wird.

Seit dieser Aufnahme hat es noch einige andere Veränderungen gegeben. Das Projekt wurde nach /usr/share/pva verschoben. Alles Desktopdateien wurden angepaßt und in /usr/share/applications/ untergebracht. Damit ist es jetzt möglich, daß der PVA für jeden eingeloggten Benutzer start- und nutzbar ist. Jeder Benutzer kann seine eigene Config in ~/.config/pva/conf.d/  haben. Die globalen Einstellungen dienen dabei als Defaults. Beim ersten Start werden die nötigen Dateistrukturen in .config, .cache und .var erzeugt und passend gefüllt, wenn es diese noch nicht gibt. Beispielsweise werden die Suchpfade an den Benutzernamen angepaßt, so daß die üblichen Verzeichnisse  die „Bilder“, „Musik“, „Videos“ usw. benutzt werden, da gloable Vorsteinstellungen für Suchpfade wegen der ggf. beschränkten Nutzerrechte keinen Sinn machen.

Erfreulicherweise können wir Carola jetzt per „Startprogramme“ beim Login in den Desktop starten, so daß der Assistent auch sofort bereit ist. Da das deutsche Sprachmodell 3,2 GB groß ist, braucht der Start auf langsamer Hardware eine ganze Weile. Kleinen PCs, Laptops und Handies empfehle ich daher das kleine 60MB Sprachmodell zu nehmen.

Zur Zeit baue ich für Fedora das RPM zusammen, so daß es den Guidelines vom Fedoraprojekt entspricht.

 

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