Siri, Amazon’s Echo und „S Voice“ sind alles Spracherkennungprogramme, die das Leben einfacher machen sollen. Auch eine Raspberry Pi Sprachsteuerung kann einfach selbst gebaut werden. Denn solch eine Spracherkennung ist natürlich auch sehr vorteilhaft für eine Hausautomatisierung.
In diesem Tutorial zeige ich wie die Spracheingabe über ein Mikrofon digitalisiert, in Text umgewandelt wird und anschließend darauf reagiert wird.
Die Spracherkennungsfunktion kann (in Chrome) bereits hier getestet werden.
Hardware für die Raspberry Pi Sprachsteuerung
- Raspberry Pi Model B/B+ bzw. Raspberry Pi 2 Model B (es werden zwei USB Anschlüsse benötigt bzw. ein USB Port und eine Internetverbindung)
- USB Soundkarte
- ein Mikrofon
Alternativ kannst du auch ein USB Mikrofon nehmen, ich habe es allerdings damit nicht getestet. Dennoch sollte es funktionieren.
Falls du per Spracheingabe z.B: die GPIOs steuern möchtest, ist ein Breadboard sowie Jumper Kabel hilfreich für die Verbindung zum Raspberry Pi.
Vorbereitung
Als Spracherkennungdienst dient Google. Um die API nutzen zu können, musst du mit deinem Google Account dieser Gruppe beitreten.
Als nächstes öffnest du die Developer Console und drückst auf „Projekt erstellen“. Nachdem es erstellt wurde klickst du links auf „APIs und Authentifizierung“ -> „APIs“ und suchst nach „Speech API“. Diese aktivierst du für dein Projekt und klickst links auf „Zugangsdaten“. Hier musst du einen neuen öffentlichen Schlüssel (Browserschlüssel) erzeugen.
Den nun erstellten API Schlüssel musst du gleich im Skript einfügen.
Dazu sei gesagt, dass täglich 50 Anfragen kostenlos sind. Wer mehr braucht kann diese entweder bei Google kaufen oder ein zweites Projekt erstellen und einen weiteren Schlüssel bekommen 😉
Raspberry Pi Sprachsteuerung – Software
Das Prinzip ist folgendes. Es wird eine Audiodatei erstellt, diese an Google gesendet und als Text zurückgesendet. Fangen wir also an:
sudo apt-get update sudo apt-get install flac
Nun prüfen wir ob die USB Karte korrekt erkannt wurde:
lsusb
Dabei sollte u.a. so ein Eintrag sein:
Bus 001 Device 004: ID 1130:f211 Tenx Technology, Inc. TP6911 Audio Headset
Nun lassen wir die Aufnahmegeräte ausgeben:
arecord -l
Bei mir sieht der Output folgendermaßen aus. Wichtig ist dabei die Nummer:
**** List of CAPTURE Hardware Devices **** card 1: AUDIO [USB AUDIO], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
An dieser Stelle empfehle ich das Mikrofon zu testen. Bei mir war das Mikrofon stumm gestellt (was mit amixer -c 1
rückgängig gemacht werden kann). Wir nehmen also eine kurze Testdatei auf und lassen sie abspielen:
arecord -d 10 -f cd -t wav -D plughw:1,0 test.wav aplay -f dat test.wav
Wenn du etwas hörst, hat alles geklappt und es kann weiter gehen.
Wir erstellen eine Datei, die die Anfrage sendet und auswertet.
sudo nano speech2text.sh
Die Datei hat folgenden Inhalt. Oben musst du noch deinen API Schlüssel eintragen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/bin/bash KEY="DEIN_KEY" URL="https://www.google.com/speech-api/v2/recognize?output=json&lang=de-de&key=$KEY" echo "Aufnahme... Zum stoppen STRG+C drücken und warten." arecord -D plughw:1,0 -f cd -t wav -d 0 -q -r 44100 | flac - -s -f --best --sample-rate 44100 -o file.flac; echo "" echo "Ausführen..." wget -q -U "Mozilla/5.0" --post-file file.flac --header "Content-Type: audio/x-flac; rate=44100" -O - "$URL" >stt.txt echo -n "Google Antwort: " OUTPUT=$(cat stt.txt | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n') echo $OUTPUT echo "" rm file.flac > /dev/null 2>&1 strindex() { x="${1%%$2*}" [[ $x = $1 ]] && echo -1 || echo ${#x} } # Damit Groß- und Kleinschreibung ignoriert wird. # Falls wichtig, nächste Zeile auskommentieren OUTPUT=$(echo $OUTPUT | tr '[:upper:]' '[:lower:]') # Die zu suchende Zeichenkette muss klein geschrieben sein # (ansonsten den Befehl vorher auskommentieren) if (($(strindex "$OUTPUT" "licht an") != -1)); then # Befehle ausführen, Skripte startem, etc. echo "Licht wird eingeschaltet" fi if (($(strindex "$OUTPUT" "licht aus") != -1)); then echo "Licht wird ausgeschaltet" fi |
Anschließend muss dem Skript noch erforderliche Rechte zugeteilt werden.
chmod +x speech2text.sh
Nun kann es gestartet werden und gesprochen werden.
./speech2text.sh
Ich habe im unteren Teil des Skripts zwei Beispiel Abfragen eingefügt, mit denen auf die Spracheingabe reagiert werden kann. Bspw. könnte ein anderes Skript oder ein Befehl ausgeführt werden. Wofür du dies benutzt bleibt ganz dir überlassen.
Der Vollständigkeit halber hier meine Test Ausgabe:
pi@raspberrypi ~ $ ./speech.sh Aufnahme... Zum stoppen STRG+C drücken und warten. ^C Ausführen... Google Antwort: "mach das Licht an" Licht wird eingeschaltet
Falls Interesse bestehen sollte könnte ich dazu auch eine Nutzung per Smartphone erstellen und posten.
93 Kommentare
Wäre nicht schlecht wenn die Sprachsteuerung über smartphone (Android) steuern läst
Wie genau meinst du das? Das das Android Gerät ein Sprachassistent ist oder das man das Android nur als Mikrofon verwendet und der Raspberry Antwortet?
Irgendwie ist es doch gaga, Google deinen Text zu senden, damit die Datenkrake alles ordentlich speichert. So etwas kann man ja wohl selbst anlernen. Aber in diesen Zeiten hat man nicht zu verbergen und auch nichts mehr zu sagen. Höchst bedenklich.
Tolles Tutorial! Was mich interessieren würde: Wie groß ist die Latenz, sprich die Zeit zwischen erfolgter Spracheingabe und Aktion?
Hey Flo,
danke für das Lob 🙂 Ich hab es nicht genau gestoppt, allerdings ging is sehr fix (so ca. 1 Sekunde).
Hey Felix,
Weißt du eigentlich, dass mein Name auch Felix ist?
Wenn du willst können wir uns mal treffen.
Dein Felix
Immer wenn ich versuche das Script zu starten, startet es auch ganz normal und nimmt meine Aussage auf. Bei der Antwort und Auswertung kommt aber jedes mal diese Fehlermeldung.
pi@raspberrypi ~ $ ./speech2text.sh
Aufnahme… Zum stoppen STRG+C drücken und warten.
^C
Ausführen…
./speech2text.sh: Zeile 10: gt: Kommando nicht gefunden.
./speech2text.sh: Zeile 10: stt.txt: Kommando nicht gefunden.
Google Antwort: cat: stt.txt: Datei oder Verzeichnis nicht gefunden
./speech2text.sh: Zeile 18: Syntaxfehler beim unerwarteten Wort `;&‘
./speech2text.sh: Zeile 18: `rm file.flac > /dev/null 2>&1′
kann mir da jemand helfen?
Hallo Gary,
leider macht WordPress manchmal aus „&“ bzw „<>“ Zeichen z.B. die HTML Variante „&“. Daher die Fehler.
Ich habe es aber nun verbessert und mit diesem Code sollte es klappen. Entferne am besten den vorherigen Code und ersetze es mit dem aktuellen.
LG Felix
Ja, daran hat es gelegen.
Vielen Dank für das wirklich sehr gute Tutorial!
Freut mich, dass es dir gefallen hat 🙂
Hallo Gary,
Ich habe mich gefragt ob dein Name wirklich Gary ist.
Der Name ist nämlich sehr selten da wo ich herkomme.
Ich heiße Felix und möchte dich fragen ob du lust hast dich mit mir zu treffen.
Dein Felix
Hey Leute,
als ich die beschriebenen Schritte durchgeführt habe, um mein USB-Mikro zu testen, wurde der gesamte Ordner mit über 5000 Wave-Dateien, die nur eine 10telsekunde lang sind, zugemüllt, und erst durch killen des Prozesses konnte ich dies stoppen. Habe ich irgendetwas falsch gemacht?
Ich habe überall exakt die gleichen Werte und Selektoren verwendet.
Bei mir klappt das mit dem Stoppen nicht. Wenn ich STRG+C drücke, wird das gesamte Skript abgebrochen:
pi@raspberry ~ $ ./speech2text.sh
Aufnahme… Zum stoppen STRG+C drücken und warten.
^C
pi@raspberry ~ $
Woran könnte dies liegen?
Ich habe leider das gleiche Problem. Habs immer wieder anders versucht, aber es tut nicht. Der ganze Prozess wird irgendwie gekillt.
Hallo Felix, erst einmal danke für die coole Anleitung hier.
Soweit hab ich alles wie oben beschrieben umgesetzt,
doch es kommt keine Antwort von Google.
Wenn ich das Skript starte und dein Beispielsatz spreche oder sonstige Wörter,
(hier ein Auszug):
—————————————————————————————————
pi@raspberrypi ~ $ ./speech2text.sh
Aufnahme… Zum stoppen STRG+C drücken und warten.
^C
Ausführen…
Google Antwort:
pi@raspberrypi ~ $
—————————————————————————————————–
bleibt nach „Google Antwort:“ das Feld leer!
Mikrofon und Lautsprecher funktionieren (habe den oben beschriebenen Mikro-Test erfolgreich durchgeführt)
Auch auf der Google Developer Console konnte ich in der Statistikübersicht Aktivitäten erkennen
(also muss ja ein Zugriff stattfinden?)
Wo könnte ich noch nach Fehlern suchen?
Viele Grüße Sebi
Hallo Sebi,
hm das ist merkwürdig. In der Google Statistik siehst du also, dass eine Anfrage stattgefunden hat? Ansonsten würde ich einfach mal alles was möglich ist loggen (was gesendet wurde, Antwort etc.) Außerdem kannst du mal eine vorgefertigte Test Audio File senden (ohne das Mikro zu verwenden). Irgendwo muss der Fehler ja liegen.
Hallo Felix, ja genau in der Google-Statistik sind z.B. 14 Anfragen (ich habe dein Skript 14 mal gestartet). Also wir auf jeden Fall eine Verbindung aufgebaut. Aber keine Antwort. Wie würde das mit deinem Vorschlag einer „Test Audio File senden“ funktionieren? Was muß ich da mach um diese zu versenden?
Und vorallen wie weis ich nach dem Test ob eine Antwort kommt?
Gruß Sebi
Du nimmst eine vorgefertigte flac Datei mit aufgenommen Sätzen (oder nimmst etwas auf und speicherst es als Datei mit
arecord
). Dann sendest du es (Zeile mitwget
) und schaust dir den Output an, der im Skript alsstt.txt
gespeichert wird. Der Inhalt davon ist wichtig und enthält die Informationen.Im Grunde musst du die Schritte des Skriptes nur in der Reihe ausführen und jeden Schritt überprüfen, um den Fehler zu finden.
Hallo Felix, erst einmal danke für die coole Anleitung hier.
Soweit hab ich alles wie oben beschrieben umgesetzt,
doch es kommt keine Antwort von Google.
Wenn ich das Skript starte und dein Beispielsatz spreche oder sonstige Wörter,
(hier ein Auszug):
—————————————————————————————————
pi@raspberrypi ~ $ ./speech2text.sh
Aufnahme… Zum stoppen STRG+C drücken und warten.
^C
Ausführen…
Google Antwort:
pi@raspberrypi ~ $
—————————————————————————————————–
bleibt nach „Google Antwort:“ das Feld leer!
Mikrofon und Lautsprecher funktionieren (habe den oben beschriebenen Mikro-Test erfolgreich durchgeführt)
Auch auf der Google Developer Console konnte ich in der Statistikübersicht Aktivitäten erkennen
(also muss ja ein Zugriff stattfinden?)
Wo könnte ich noch nach Fehlern suchen?
Viele Grüße Sebi
Hallo Sebi,
hm das ist merkwürdig. In der Google Statistik siehst du also, dass eine Anfrage stattgefunden hat? Ansonsten würde ich einfach mal alles was möglich ist loggen (was gesendet wurde, Antwort etc.) Außerdem kannst du mal eine vorgefertigte Test Audio File senden (ohne das Mikro zu verwenden). Irgendwo muss der Fehler ja liegen.
Hallo Felix, ja genau in der Google-Statistik sind z.B. 14 Anfragen (ich habe dein Skript 14 mal gestartet). Also wir auf jeden Fall eine Verbindung aufgebaut. Aber keine Antwort. Wie würde das mit deinem Vorschlag einer „Test Audio File senden“ funktionieren? Was muß ich da mach um diese zu versenden?
Und vorallen wie weis ich nach dem Test ob eine Antwort kommt?
Gruß Sebi
Du nimmst eine vorgefertigte flac Datei mit aufgenommen Sätzen (oder nimmst etwas auf und speicherst es als Datei mit
arecord
). Dann sendest du es (Zeile mitwget
) und schaust dir den Output an, der im Skript alsstt.txt
gespeichert wird. Der Inhalt davon ist wichtig und enthält die Informationen.Im Grunde musst du die Schritte des Skriptes nur in der Reihe ausführen und jeden Schritt überprüfen, um den Fehler zu finden.
hey vielen dank für das tutorial aber bei mir kommt bei der flac datei nur ein rauschen und piepsen. aber die wav ist sauber… ich weis nicht warum es nicht funktioniert…
hey vielen dank für das tutorial aber bei mir kommt bei der flac datei nur ein rauschen und piepsen. aber die wav ist sauber… ich weis nicht warum es nicht funktioniert…
Hallo,
vielen dank für diese ausführliche Anleitung!
Jedoch habe ich ein Problem:
alles funktionier ich bekomme eine Google Antwort.
Doch dann meldet er mir folgende Fehler :
./speech2text.sh: 49: ./speech2text.sh: [[: not found
./speech2text.sh: 59: ./speech2text.sh: 7: not found
./speech2text.sh: 49: ./speech2text.sh: [[: not found
./speech2text.sh: 63: ./speech2text.sh: 7: not found
Ich würde mich über Hilfe sehr freuen!
Bist du sicher, dass das Skript übereinstimmt? Zumindest kommt in dem Skript keine „7“ vor und auch die Zeilennummern sind unterschiedlich.
Hallo,
vielen dank für diese ausführliche Anleitung!
Jedoch habe ich ein Problem:
alles funktionier ich bekomme eine Google Antwort.
Doch dann meldet er mir folgende Fehler :
./speech2text.sh: 49: ./speech2text.sh: [[: not found
./speech2text.sh: 59: ./speech2text.sh: 7: not found
./speech2text.sh: 49: ./speech2text.sh: [[: not found
./speech2text.sh: 63: ./speech2text.sh: 7: not found
Ich würde mich über Hilfe sehr freuen!
Bist du sicher, dass das Skript übereinstimmt? Zumindest kommt in dem Skript keine „7“ vor und auch die Zeilennummern sind unterschiedlich.
Hallo Leute,
bei mir funktioniert das nicht so recht. Führe ich das Programm aus, dann passiert folgendes:
pi@raspberrypi:~ $ ./speechtotext.sh
Aufnahme… Zum stoppen STRG+C drücken und warten.
^C
pi@raspberrypi:~ $
Führe ich folgenden Befehl aus:
arecord -D plughw:1,0 -f cd -t wav -d 0 -q -r 44100 | flac – -s -f –best –sample-rate 44100 -o file.flac
und im Anschluss:
aplay file.flac
kommt folgender Fehler:
Wiedergabe: Rohdaten ‚file.flac‘ : Unsigned 8 bit, Rate: 8000 Hz, mono
aplay: set_params:1233: Sample-Format nicht unterstützt
Available formats:
– S16_LE
Ist deine USB Soundkarte als Device 0 oder 1 erkannt worden?
Die wurde als 1 erkannt.
Wenn ich als Test „arecord -D plughw:1,0 -f cd -t wav -d 0 test.wav“ eingebe und das dann mit „aplay test.wav“ abspiele, dann höre ich auch das gesprochene.
Lösung gefunden! Einfach bei der folgenden Zeile -c 1 ergänzen.
arecord -D plughw:1,0 -f cd -t wav -d 0 -c 1 -q -r 44100 | flac – -s -f –best –sample-rate 44100 -o file.flac
Hallo Leute,
bei mir funktioniert das nicht so recht. Führe ich das Programm aus, dann passiert folgendes:
pi@raspberrypi:~ $ ./speechtotext.sh
Aufnahme… Zum stoppen STRG+C drücken und warten.
^C
pi@raspberrypi:~ $
Führe ich folgenden Befehl aus:
arecord -D plughw:1,0 -f cd -t wav -d 0 -q -r 44100 | flac – -s -f –best –sample-rate 44100 -o file.flac
und im Anschluss:
aplay file.flac
kommt folgender Fehler:
Wiedergabe: Rohdaten ‚file.flac‘ : Unsigned 8 bit, Rate: 8000 Hz, mono
aplay: set_params:1233: Sample-Format nicht unterstützt
Available formats:
– S16_LE
Ist deine USB Soundkarte als Device 0 oder 1 erkannt worden?
Die wurde als 1 erkannt.
Wenn ich als Test „arecord -D plughw:1,0 -f cd -t wav -d 0 test.wav“ eingebe und das dann mit „aplay test.wav“ abspiele, dann höre ich auch das gesprochene.
Lösung gefunden! Einfach bei der folgenden Zeile -c 1 ergänzen.
arecord -D plughw:1,0 -f cd -t wav -d 0 -c 1 -q -r 44100 | flac – -s -f –best –sample-rate 44100 -o file.flac
Bei mir kommt beim Start des Skripts eine Meldung
./speech2text.sh: Zeile 7: flac: Kommando nicht gefunden.
Was muss ich nun tun?
Bei mir kommt beim Start des Skripts eine Meldung
./speech2text.sh: Zeile 7: flac: Kommando nicht gefunden.
Was muss ich nun tun?
Hi, ich hätte sehr großes Interesse an der Möglichkeit mit dem Smartphone das ganze zu nutzen. Ein Mikrofon müsste ja in geringer Nähe sein um die Hintergrundgeräusche mit meine Stimme überlagernd zu empfangen.
Mein Raspi soll im Flur in der Wand verbaut werden aber wenn ich im Wohnzimmer sitze möchte ich, dass der bei einem Befehl die Leinwand und den Beamer aus der Decke fährt. So müsste ich nicht direkt vorm Raspi die Befehle geben..
An sich sollte es kein Problem sein das Smartphone als Mikropphon zu nutzen, sofern du Programmierkenntnisse hast: Statt einer Native App (mMn zu viel Aufwand dafür) würde ich einen Webserver (Apache) aufsetzen und die Hardwareunterstützung des Browsers verwenden. Mit einer kleinen PHP/JS Seite kannst du dich Aufnehmen und das Skript starten lassen.
Hi, bau doch den beamer und die Leinwand in die Wand im Flur, und den PI in die Decke und gib deiner Frau die Befehle, dann passt alles..
Hi, ich hätte sehr großes Interesse an der Möglichkeit mit dem Smartphone das ganze zu nutzen. Ein Mikrofon müsste ja in geringer Nähe sein um die Hintergrundgeräusche mit meine Stimme überlagernd zu empfangen.
Mein Raspi soll im Flur in der Wand verbaut werden aber wenn ich im Wohnzimmer sitze möchte ich, dass der bei einem Befehl die Leinwand und den Beamer aus der Decke fährt. So müsste ich nicht direkt vorm Raspi die Befehle geben..
An sich sollte es kein Problem sein das Smartphone als Mikropphon zu nutzen, sofern du Programmierkenntnisse hast: Statt einer Native App (mMn zu viel Aufwand dafür) würde ich einen Webserver (Apache) aufsetzen und die Hardwareunterstützung des Browsers verwenden. Mit einer kleinen PHP/JS Seite kannst du dich Aufnehmen und das Skript starten lassen.
habe leider auch das problem das sich das programm mit strg+c beendet.
hat jemand eine lösung?
habe leider auch das problem das sich das programm mit strg+c beendet.
hat jemand eine lösung?
Hallo,
Ist dies eine Art Amazon Echo Clon ? Da ich es genau dafür benutzen möchte, kann man Fragen stellen wie erzählt mir einen Witz oder gibt es Stau auf dem Weg zur Arbeit ?
VG Dennis
Hallo Dennis,
nein, damit wird nur die Sprache in Text umgewandelt. Auf den Text kannst du reagieren lassen (z.B. wenn ein Wort gesagt wird, eine FUnktion starten). Ein Amazon Echo Tutorial ist aber in Zukunft geplant.
LG, Felix
Ich denke, wenn man das Skript ein wenig erweitert, kann der Clone dir auch psychotherapeutische Sprechstunden geben und deine ganz persönlichen Geheimnisse direkt, ohne die üblichen Umwege an den Geheimdienst deiner Wahl senden.
Hallo,
Ist dies eine Art Amazon Echo Clon ? Da ich es genau dafür benutzen möchte, kann man Fragen stellen wie erzählt mir einen Witz oder gibt es Stau auf dem Weg zur Arbeit ?
VG Dennis
Hallo Dennis,
nein, damit wird nur die Sprache in Text umgewandelt. Auf den Text kannst du reagieren lassen (z.B. wenn ein Wort gesagt wird, eine FUnktion starten). Ein Amazon Echo Tutorial ist aber in Zukunft geplant.
LG, Felix
Hallo,
Ich habe ein Problem bei der Zuteilung der Rechte. Immer wenn ich
chmod +x speech2text.sh
eingebe, kommt die Fehlermeldung:
chmod: changing permissions of ’speech2text.sh‘ : Operation not permitted
Was habe ich da falsch gemacht bzw. gibt es da eine Loesung?
LG
Haitao
sudo chmod
Hallo,
Ich habe ein Problem bei der Zuteilung der Rechte. Immer wenn ich
chmod +x speech2text.sh
eingebe, kommt die Fehlermeldung:
chmod: changing permissions of ’speech2text.sh‘ : Operation not permitted
Was habe ich da falsch gemacht bzw. gibt es da eine Loesung?
LG
Haitao
sudo chmod
Vielen Dank erstmal für das super Tutorial, wirklich gut verständlich, hat alles geklappt mit der Einrichtung des Mirkofons.
Ich kann mich mit einer deutschen Adresse leider nur als „Geschäftskonto“ bei Google Cloud Services anmelden, nicht mit einem privaten Konto. Und in der Developerconsole ( wo ich bereits andere Projekte habe) kann ich die API nicht aktivieren, die Seite lädt ewig und bringt dann kein Ergebnis.
Wie hast du es geschafft dich da zu registrieren?
Vielen Dank erstmal für das super Tutorial, wirklich gut verständlich, hat alles geklappt mit der Einrichtung des Mirkofons.
Ich kann mich mit einer deutschen Adresse leider nur als „Geschäftskonto“ bei Google Cloud Services anmelden, nicht mit einem privaten Konto. Und in der Developerconsole ( wo ich bereits andere Projekte habe) kann ich die API nicht aktivieren, die Seite lädt ewig und bringt dann kein Ergebnis.
Wie hast du es geschafft dich da zu registrieren?
Hallo,
Ich habe alles ausprobiert aber ich bekomme keinen Ton vom Raspberry 🙁
Ich habe es über HDMI, Audio Out (Klinke 3,5mm) und Soundkarte per USB ausprobiert aber die Sprachsteuerung gibt keinen Ton aus 🙁
Ich hoffe das mir irgendjemand helfen kann,
Fred
Hallo,
Ich habe alles ausprobiert aber ich bekomme keinen Ton vom Raspberry 🙁
Ich habe es über HDMI, Audio Out (Klinke 3,5mm) und Soundkarte per USB ausprobiert aber die Sprachsteuerung gibt keinen Ton aus 🙁
Ich hoffe das mir irgendjemand helfen kann,
Fred
Hallo,
ich habe das selbe Problem wie Sebi. Google liefert mir einfach keine Antworten obwohl bei Developer Console Anfragen ankommen.
Ich habe auch schon eine separate Flac-Datei mit mein Windows PC aufgenommen um mein Raspberry als Fehlerquelle auszuschließen, aber erfolgslos 🙁
An was kann es noch liegen?
Hallo,
ich habe das selbe Problem wie Sebi. Google liefert mir einfach keine Antworten obwohl bei Developer Console Anfragen ankommen.
Ich habe auch schon eine separate Flac-Datei mit mein Windows PC aufgenommen um mein Raspberry als Fehlerquelle auszuschließen, aber erfolgslos 🙁
An was kann es noch liegen?
servus,
wenn ich mit Strg +C die Aufnahme beenden möchte schließt das ganze Programm.
Hast du eine Idee oder alternative ?
servus,
wenn ich mit Strg +C die Aufnahme beenden möchte schließt das ganze Programm.
Hast du eine Idee oder alternative ?
Hallo und Danke für die Tutorials die sehr detailliert und verständlich sind.
Ich bin noch nicht lange dabei und obwohl im Internet schon einiges gibt, würde ich mich hier über eine Tutorial „Cloud Storage“ sehr freuen.
Danke & Lieben Gruß
Hallo und Danke für die Tutorials die sehr detailliert und verständlich sind.
Ich bin noch nicht lange dabei und obwohl im Internet schon einiges gibt, würde ich mich hier über eine Tutorial „Cloud Storage“ sehr freuen.
Danke & Lieben Gruß
Hi gute Anleitung wo es bei mir hackt ist was ist mit key gemeint was soll ich da eingeben
Den vorher generierten Google API Key / Schlüssel.
Danke ich hätte den Anfang genauer lesen sollen
Hi gute Anleitung wo es bei mir hackt ist was ist mit key gemeint was soll ich da eingeben
Den vorher generierten Google API Key / Schlüssel.
Danke ich hätte den Anfang genauer lesen sollen
Moin Felix,
wieder ein sehr feines Tutorial,
dazu hätte ich eine Frage, die etwas vom Thema abweicht…
Kann ich unter Python Audios vom Mikrofon aufzeichnen. Python wäre
schon interessant, da ich das aufzeichnen vllt an eine Bedingung knüpfen will (z.b. wenn taster gedrückt, bewegungsmelder, reed relais, lichtschranke und so weiter)
MfG Hauschi
Ja, vor allem da du ja auch Shell Befehle ausführen kannst, womit es kein Problem sein sollte 🙂
Hallo,
Danke für das Tuturoial! Ich habe ein Problem das ich momentan nicht zu lösen vermag:
Wenn ich das Skript ausführen möchte erhalte ich folgende Fehlermeldung:
„ERROR: raw format options (–endian, –sign, –channels, –bps, and –sample rate) are not allowed for non raw input
[…]“
Im Vorraus vielen Dank! 🙂
Hallo Felix,
könntest du ein Tutorial anfertigen, wie man mit Google Speech die Funksteckdosen aus deinem 433 MHZ Tutorial steuern könnte? Das wäre klasse =)
Hi Felix,
ich weiß es haben bereits ein paar Leute die Frage gestellt, aber was kann man machen wenn bei Strg + C das ganze Programm geschlossen wird? Ich hab nämlich keinen blassen Schimmer…
MfG
Elias
an Shrawp: hatte das gleiche problem
sample-rate ist anscheinend aktuell nicht noetig, aber die Reduktion auf einen Kanal, damit google ein nicht leeres Ergebnis liefert.
arecord -D plughw:1,0 -f cd -t wav -d 0 -c 1 -q -r 44100 | flac – -s -f –best -o file.flac;
so klappt es bei mir -c 1 dazu, die sample-rate fuer flac weg
Wenn Du die vorbis-tools installierst, kannst Du mit ogg123 file.flac (löschen von file.flac im shell script heraus nehmen) sehen, dass es nun ein 1 channel file mit 44100 ist:
pi@raspiEXP:~ $ ogg123 file.flac
Audio Device: Advanced Linux Sound Architecture (ALSA) output
Playing: file.flac
FLAC stream: 16 bits, 1 channel, 44100 Hz
Grüße
Karsten
Erstmal ein großes lob für das tolle Tutorial! aber
wenn ich ./speech2text.sh ausführe kommt folgendes:
———————————————————————————————————————
Aufnahme… Zum stoppen STRG+C drücken und warten.
arecord: main:722: Fehler beim Öffnen des Gerätes: Datei oder Verzeichnis nicht gefunden
ERROR: for encoding a raw file you must specify a value for –endian, –sign, –channels, –bps, and –sample-rate
Type „flac“ for a usage summary or „flac –help“ for all options
Ausführen…
Google Antwort:
———————————————————————————————————————
danach beendet sich der Befehl von selbst. Was habe ich falsch gemacht, Bzw. muss ich noch verändern? Bitte schnell antworten, es ist dringend. Danke schonmal im Voraus.
Ist arecord/aplay/flac installiert?
Hallo Rudi,
hast Du mittlerweile eine Lösung gefunden? Ich habe das gleiche Problem, konnte aber bis jetzt keine vernünftige Lösung finden.
Gruß
Roland
Ich hab in der arecord Zeile vorm pipe „-c 1“ ergänzt und dahinter das „–sample-rate 44100“ weggelassen.
arecord -D plughw:1,0 -f cd -t wav -d 0 -c 1 -q -r 44100 | flac – -s -f –best -o file.flac;
Danach kam kein Fehler mehr.
Ich habe alles soweit gemacht wie im Tutorial, erhalte aber direkt folgende Fehlermeldung. Woran kann das liegen?
pi@himbeere:~ $ ./speech2text.sh
Aufnahme… Zum stoppen STRG+C drücken und warten.
ERROR: raw format options (–endian, –sign, –channels, –bps, and –sample-rate) are not allowed for non-raw input
Type „flac“ for a usage summary or „flac –help“ for all options
Ausführen…
Google Antwort:
pi@himbeere:~ $
Ich kann nur die Google Cloud Speech API v1 finden und da muss man Kreditkarteninfos angeben ?!?!?!
Hi, erst mal ein großes Lob für das Projekt.
Ich hätte da allerdings einen Vorschlag.
Für eine Hausautomation wäre der Betrieb mit eigener Cloud interessant.
Ich denke da an einen Pi mit einem Spracherkennungsprogramm wie zum Beispiel “ Simon“.
Diesem Programm werden nur die Worte meiner Befehle angelernt, den ganzen deutschen Wortschatz brauche ich für diesen Zweck doch nicht!
Wenn dieses System dann mit NodeRed ähnlich wie Alexa Local Node mit entsprechenden Änderungen gekoppelt würde, so wäre eine Sprachsteuerung der Hausautomation lokal und ohne Cloud möglich.
Genau nach so einer Lösung suche ich.
Wie denkst du über diesen Vorschlag, lässt sich das realisieren?
Ich meine auf jeden Fall.
Schönen Gruß Norbert
Hallo!
Ich finde ihre Idee ganz gut und habe selbst eine, die ich mangels Wissen nicht umsetzen kann. Könnte, falls durchführbar, für sie bares Geld bedeuten. Ich stelle immer wieder beim Einkaufen fest, dass die Kassierer/innen in Listen nachschauen müssen, was ein Artikel kostet(zB Angebote,Backwaren,Getraenke..). Wenn man mit Hilfe des „PI“ ein Abfragesystem einrichten könnte, wäre das wohl mehr als hilfreich. >Für Sie, nicht für das Forum<
Super Sache, danke für die Anleitung. Ich hatte denselben Fehler:
ERROR: raw format options (–endian, –sign, –channels, –bps, and –sample-rate) are not allowed for non-raw input
Type „flac“ for a usage summary or „flac –help“ for all options
Lösung :
arecord -D plughw:1,0 -f cd -t wav -d 0 -q -r 44100 | flac – -s -f –best –sample-rate 44100 -o file.flac; zu
arecord -D plughw:1,0 -f cd -t wav -d 0 -c 1 -q -r 44100 | flac – -s -f –best -o file.flac;
ändern.
Perfekt.
Sehr coole Anleitung, danke dafür.
Hat jemand vielleicht eine Empfehlung für ein vernünftiges Mikrofon zur Steuerung der Sprachsteuerung?
Cool wäre es den Pi im Wohnzimmer zu stationieren und dann vom Sofa aus HTTP Befehle zu senden um den Fernseher zu steuern.
Bei meinem Setup (PI 2,
Trust Madell Desk Microphone f. PC+NB (Mono), SPEEDLINK Vigo USB Sound Card (USB)) ist es jedoch so, dass ich sehr nah und laut in das Mirco sprechen muss, dass auf die Sprache reagiert wird. Vielleicht hat jemand eine Empfehlung diesbezüglich für mich. Oder muss ich noch was an den Einstellungen anpassen?
Danke für euren Rat
Hallo Felix,
erstmal ein sehr gutes Tutorial! Aber ich habe ein Problem :
Wenn ich Str+C drücke wird immer das gesamte Skipt abgebrochen und nichts passiert.
Kannst du oder irgendjemand anders mir bei dem Problem helfen?
Danke im Voraus!
Dein Moritz
Hey Leute,
ich habe das selbe Problem wie Sebi und . Google liefert mir ebenfalls keine Antworten obwohl bei Developer Console Anfragen ankommen.
Hier mein verwendeter Code:
KEY=“mein Google Key “
URL=“meine Speech Api “
echo „Aufnahme… Zum stoppen STRG+C drücken und warten.“
arecord -D plughw:1,0 -f cd -d 0 -t raw | flac – -s -f –best –sample-rate 44100 –endian little –sign signed –channels 2 –bps 16 -o file.flac;
echo „“
echo „Ausführen…“
wget -O – -o /dev/null –post-file file.flac –header=“Content-Type: audio/x-flac; rate=16000;“meine Speech Api & Key“ > stt.txt
echo -n „Google Antwort: “
OUTPUT=$(cat stt.txt | sed -e ’s/[{}]/“/g‘ | awk -F“:“ ‚{print $4}‘ | awk -F“,“ ‚{print $1}‘ | tr -d ’n‘)
echo $OUTPUT
echo „“
Hoffe jmd kann mir dazu weiterhelfen. Vielen Dank schon einmal im voraus!
Hi
wegen dem allgemeinen Problem daß keine Antwort von Google kommt:
nach der wget Zeile einfach mal „cat stt.txt“ eingeben.
dann erscheint z.B folgende Ausgabe
Ausführen…
{„result“:[]}
{„result“:[{„alternative“:[{„transcript“:“Licht an“,“confidence“:0.76830721},{„transcript“:“licht an“}],“final“:true}],“result_index“:0}
Daran sieht man dass z.B „Licht an“ erkannt wurde aber nicht vernünftig weiterverarbeitet
wird
Hallo Felix,
Habe das Problem wenn ich die Zugriffsberechtigung mit dem befehl:
„chmod +x speech2text.sh“ anforder, bekomme ich die Antwort:
Beim Setzen der Zugriffsrechte für „speech2text.sh“: Die Operation ist nicht erlaubt
Woran kann das liegen ?
Hi Ich habe da mal eine Frage und zwar würde ich gerne per Sprachsteuerung einen Anruf starten funktioniert das mit dem raspberry pi ?