6 Private Links
Rhasspy ist ein tolles Projekt, um einen eigenen Sprachassistenten aufzusetzen. In meinem Fall soll Rhasspy mit dem Low-Code-Service Node-Red kommunizieren, um die eingesprochene Frage an ChatGPT weiterzuleiten. Standardmäßig benutzt Rhasspy dafür Kaldi. Damit Rhasspy mit Kaldi das gesamte Gesprochene transkribiert und nicht nur die konfigurierten Sätze, muss man Kaldi mit der Option "Open transcription mode" konfigurieren. Nach dem Herunterladen des größeren Sprachmodells funktioniert das auch so halbwegs. Leider ist die Transkription oft zu ungenau, als dass sie für die Weitergabe an ChatGPT taugen würde. Deshalb wollte ich es mit Whisper von OpenAI versuchen.
Da ich ohnehin einen API-Key bei OpenAI angelegt habe, um von Node-Red meine Anfrage an ChatGPT zu senden, liegt die Verwendung von Whisper sehr nahe. Whisper ist eine Speech-To-Text (STT)-API, mit der sich Sprache in Text umwandeln lässt. Das funktioniert wirklich ganz ausgezeichnet und die Worterkennung ist viel besser als lokal mit Kaldi.
Für die Einbindung kann man bei Rhasspy-Speech to Text einfach "Local Command" auswählen. Das verlinkte Skript speichert das Eingesprochene in eine WAV-Datei und schickt diese an OpenAI-Whisper. Das Skript sieht dann so aus.
# WAV data is avaiable via STDIN
wav_file="$(mktemp).wav"
trap "rm -f $wav_file" EXIT
cat | sox -t wav - -r 16000 -e signed-integer -b 16 -c 1 -t wav - > "$wav_file"
# Api-Key for Authorization
OPENAI_API_KEY="<api-key>"
# Send the wav recording to openai whisper
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@$wav_file" \
-F model="whisper-1" | jq -r '.text' | sed 's/[[:punct:]]//g'
# delete the wav recording file
rm "$wav_file"
Der so erzeugte Text kann nun an Node-Red gesendet werden, welches sich dann um eine passende Antwort von ChatGPT kümmert. Das Fragen beantworten funktioniert sehr gut. Ich würde sagen, sogar besser als bei Alexa, die einem doch oft unzutreffendes erzählt. Weil aber Whisper und ChatGPT herhalten müssen, kann von einer offenen Open Source-Lösung nicht mehr die Rede sein. Aber da entwickelt sich gerade wirklich viel. Ich freue mich jedenfalls darauf auch diese Cloud-Dienste durch etwas lokal gehostetes zu ersetzen.