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

Fedora: Die Zeit von Truecrypt ist abgelaufen

„Es kam, wie es kommen mußte. Joe ‚True‘ Crypt wurde zu alt für den Job als Datenschützer. Mit seinen 20 Jahren mußte er schliesslich doch in Frührente gehen. In einer kurzen Gedenkzeremonie durfte er sich von seinem geliebten Fedoradesktop verabschieden.“

Fedora: Die Zeit von Truecrypt ist abgelaufen

Ja, mit dem Wechsel auf Fedora 33 funktioniert Truecrypt nicht mehr. Das liegt an einer Änderung, wie die nötigen Sockets im System erzeugt werden dürfen. Ich denke hier ist SEL am Ball, ist aber nur eine Vermutung. Ein Wechsel zu Veracrypt 1.24u7 hat hier geholfen. Damit lassen sich die Truecrypt Datenträger wieder einbinden.

Wer die noch nicht hat, weil ältere tun es auch nicht mehr, der kann sich die Version hier runterladen:

https://www.veracrypt.fr/en/Downloads.html

Damit könnte die Geschichte ja bereits am Ende sein, aber so einfach ist es dann doch nicht. Wenn Ihr wie ich Bookmarks auf in den TC-Datenträgern gelegenen Verzeichnissen in Nemo oder Nautilus habt, dann dürft Ihr die Lesezeichen editieren 🙂

Das liegt daran, daß Truecrypt seine automatischen Verzeichnisse unter /media/truecrypt{SLOTNUMMER} mounted, Veracrypt aber /media/veracrypt{SLOTNUMMER} benutzt. Damit gehen die Lesezeichen ins Leere.

Die Lesezeichen für Nemo befinden sich hier:  ~/.config/gtk-3.0/bookmarks

Einfach „truecrypt“ mit „veracrypt“ ersetzen, erledigt.

Wer seine Datenträger automatisch beim Login in die Desktopsession mounten will, muß auch die ~./config/autostart/truecrypt.desktop Datei anpassen, inhaltlich, nicht vom Namen her 😉

Exec=sudo /usr/bin/veracrypt –auto-mount=favorites

Damit wären wir dann fast durch.

… und die Linuxgötter waren erzürnt, daß es neben ihnen einen weiteren Titanen geben sollte und peppten LUKS auf…

Es geht auch ganz ohne Veracrypt, nur kann man dann nicht von den neuen VeraCrypt Eigenschaften profitieren:

cryptsetup –type tcrypt open /dev/sda tcsda
mount /dev/mapper/tcsda /media/truecrypt1

mit

umount /media/truecrypt1
cryptsetup close /dev/mapper/tcsda

kann man es wieder schließen. Wenn man diesen Weg gehen will, was völlig legitim ist, dann wäre clever das in ein kleines Bashscript zu packen, daß auf dem Desktop nach dem Passwort bettelt. Das Passwort kann man elegant an Cryptsetup übergeben:

echo „$password“ | cryptsetup –type tcrypt open /dev/sda tcsda

Jetzt muß sich für das Bashscript nur noch ein Desktopfile in ~/.config/autostart erstellen und ist durch 🙂

Wenn die TC-Datenträger das gleiche Passwort (wenn vorhanden) wie die Systemplatte haben, dann kann man das auch beim Booten erledigen lassen in dem die Einträge dafür in /etc/crypttab gespeichert werden.

Für alle, die mehr über Truecrypt und Luks wissen möchten, hier ein LPD Beitrag zum Thema:

Pinephone: SuspendGuardian Update

Kleines Update für SuspendGuardian, der erkennt jetzt auch Audioplayback und geht dann nicht in den Deep-Sleep. Für Euch zum Kompilieren: github.com – SuspendGuardian/suspendguardian.c

Pinephone: SuspendGuardian Update

Neue Konfigoptionen sind nicht nötig. Es wird direkt Alsa gefragt, ob über das Hauptaudiodevice etwas ausgegeben wird:

// Lets find out, if sound playback of ANY source is played:
char *status = readFile(„/proc/asound/card0/pcm0p/sub0/status“);
if ( strstr(status,“closed“) >= status ) {
 // no, so continue

würde etwas ausgegeben, sähe das so aus:

state: RUNNING
owner_pid : 790
trigger_time: 569.377071676
tstamp : 571.758585082
delay : 6496
avail : 59040
avail_max : 64512
—–
hw_ptr : 114336
appl_ptr : 120832

Sehr praktisch, so bekommt man die PID vom Abspielprogramm. Leider klappt das nicht für ein Telefonat 🙁

Da habe ich keinen universellen Weg gefunden.