Carola: Netflix & Mediaplayerkontrolle

Neues aus der Werkstatt.. ups, falsches Blog.. Neues von Carola: „Yes, we can .. control Netflix“ \o/

Carola: Netflix & Mediaplayerkontrolle

Carola hat es jetzt drauf, wir können Netflix auf Kommando starten, ok, das war schon länger drin, aber seit eben, kann ich auch den Inhalt von Netflix per Sprache kontrollieren.

Ihr habt es Euch vermutlich schon gedacht, daß nach dem D-BUS Artikel noch etwas kommen mußte 🙂

Die Mediaplayer API

Folgende Befehle sind intern möglich:

command:“ich |möchte|sehen“,“PLAYVIDEO“
command:“videos.*weiter“,“VIDEONTRACKSFORWARDS“,““
command:“videos.*zurück“,“VIDEONTRACKSBACKWARDS“,““
command:“ein video weiter“,“VIDEONTRACKSFORWARDS“,““
command:“ein video zurück“,“VIDEONTRACKSBACKWARDS“,““
command:“video|weiter“,“VIDEOPLAYBACKPLAY“,““
command:“nächstes|video“,“VIDEONEXTTRACK“,““
command:“letztes|video“,“VIDEOLASTTRACK“,““
command:“starte|video“,“VIDEOPLAYBACKPLAY“,““
command:“video|start“,“VIDEOPLAYBACKPLAY“,““
command:“video|stop“,“VIDEOPLAYBACKSTOP“,““
command:“pausiere|video“,“VIDEOPLAYBACKPAUSE“,““
command:“video|pause“,“VIDEOPLAYBACKPAUSE“,““
command:“wiedergabe|starten“,“VIDEOPLAYBACKPLAY“,““
command:“wiedergabe|stop“,“VIDEOPLAYBACKSTOP“,““
command:“wiedergabe|pausiere“,“VIDEOPLAYBACKPAUSE“,““
command:“wiedergabe|fortsetzen“,“VIDEOPLAYBACKTOGGLE“,““

Die Befehle sind zwar im ersten Entwurf nur für den eingebauten Videoplayerpart gewesen, jetzt aber für alle Mpris Services gültig. D.b. auch, daß es völlig egal ist, welcher und wieviele Player laufen, es werden einfach alle angesprochen.

In der Config gibt es dazu passend jetzt den mediaplayer Teil:

mediaplayer:“find“,…
mediaplayer:“play“,…
mediaplayer:“pause“,…
mediaplayer:“stop“,…
mediaplayer:“nexttrack“,…
mediaplayer:“lasttrack“,…
mediaplayer:“toggle“,…
mediaplayer:“raisevolume“,…
mediaplayer:“lowervolume“,…
mediaplayer:“getvolume“,…
mediaplayer:“status“,…

Die Kommandos selbst sind nicht geheim, aber sehen hier einfach blöd aus, daher schaut Ihr morgen mal ins GitHub Repo, wenn ich das hochgeladen habe 😉

Tip #1:

konfiguriert nicht beides, wenn der Videoplayer auch ein MPris Interface hat. Das hat ganz böse Nebenwirkungen bei „PlayPause“ 😉

Tip #2:

Wenn Ihr MPV von RPMFusion installiert habt und das Pakte mpv-mpris noch nicht drauf habt, macht das mal, weil sonst mpv kein Mediaplayerinterface hat.

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