Siri, Amazon Echo et «S Voice» sont tous des programmes de reconnaissance vocale conçus pour vous faciliter la vie. Même une commande vocale Raspberry Pi peut être facilement construite par vous-même. Car une telle reconnaissance vocale est bien sûr très bénéfique pour la domotique.
Dans ce didacticiel, je vais vous montrer comment numériser la parole via un microphone, la convertir en texte, puis y répondre.
La fonction de reconnaissance vocale peut déjà être testée ici (dans Chrome).
Matériel pour la commande vocale Raspberry Pi
Alternativement, vous pouvez également prendre un microphone USB, mais je ne l’ai pas testé. Pourtant, cela devrait fonctionner.
Si vous souhaitez contrôler les GPIO par entrée vocale, par exemple, un planche à pain et câble de raccordement est utile pour se connecter au Raspberry Pi.
Préparation
Google est le service de reconnaissance linguistique. Pour utiliser l’API, vous devez vous inscrire ce groupe avec votre compte Google.
Ensuite, ouvrez le Console développeur et appuyez sur «Créer un projet». Une fois créé, cliquez sur «APIs et authentification» -> «APIs» à gauche et recherchez «Speech API». Vous l’activez pour votre projet et cliquez sur «Accéder aux données» à gauche. Ici, vous devez créer une nouvelle clé publique (clé de navigateur).
Vous devez insérer la clé API maintenant créée dans le script.
Il faut dire que chaque jour 50 demandes sont gratuites. Si vous en avez besoin de plus, vous pouvez soit l’acheter sur Google, soit créer un deuxième projet et obtenir une autre clé ?
Commande vocale Raspberry Pi – logiciel
Le principe est le suivant. Un fichier audio sera créé, envoyé à Google et renvoyé sous forme de texte. Commençons donc:
sudo apt-get update sudo apt-get install flac
Nous vérifions maintenant si la carte USB a été détectée correctement:
lsusb
Ce devrait être une telle entrée:
Bus 001 Device 004: ID 1130:f211 Tenx Technology, Inc. TP6911 Audio Headset
Nous avons maintenant la sortie des appareils d’enregistrement:
arecord -l
Pour moi, la sortie ressemble à ceci. Le nombre est important:
**** List of CAPTURE Hardware Devices **** card 1: AUDIO [USB AUDIO], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
À ce stade, je recommande de tester le microphone. Pour moi, le microphone a été mis en sourdine (qui peut être inversé avec amixer -c 1
). Nous enregistrons donc un court fichier de test et le laissons jouer:
arecord -d 10 -f cd -t wav -D plughw:1,0 test.wav aplay -f dat test.wav
Si vous entendez quelque chose, tout a fonctionné et cela peut continuer.
Nous créons un fichier qui envoie et évalue la demande.
sudo nano speech2text.sh
Le fichier a le contenu suivant. Ci-dessus, vous devez entrer votre clé API.
1 2 3 4 5 6 7 8 9 dix 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 CLÉ=« DEIN_KEY » URL=« https://www.google.com/speech-api/v2/recognize?output=json&lang=de-de&key=$KEY » écho « Aufnahme … Zum stoppen STRG + C drücken und warten. » un enregistrement –ré plughw:1,0 –F CD –t wav –ré 0 –q –r 44100 | flac – –s –F –meilleur –échantillon–taux 44100 –o fichier.flac; écho « » écho « Ausführen … » wget –q –U « Mozilla / 5.0 » –Publier–fichier fichier.flac –entête « Content-Type: audio / x-flac; rate = 44100 » –O – « $ URL » >stt.SMS écho –n « Google Antwort: » PRODUCTION=$(chat stt.SMS | sed –e ‘s /[{}]/ ‘‘/g’ | awk –F« : » ‘{print $ 4}’ | awk –F« , » ‘{print $ 1}’ | tr –ré ‘ n’) écho $ SORTIE écho « » rm fichier.flac > /dev/nul 2>&1 strindex() { X=« $ {1 %% $ 2 *} » [[[[ $ x = $1 ]] && écho –1 || écho ${#X} } # Damit Groß- und Kleinschreibung ignoriert wird. # Falls wichtig, nächste Zeile auskommentieren PRODUCTION=$(écho $ SORTIE | tr « [:upper:] » « [:lower:] ») # Die zu suchende Zeichenkette muss klein geschrieben sein # (ansonsten den Befehl vorher auskommentieren) si (($(strindex « $ OUTPUT » « licht an ») ! = –1)); puis # Befehle ausführen, Skripte startem, etc. écho « Licht wird eingeschaltet » Fi si (($(strindex « $ OUTPUT » « licht aus ») ! = –1)); puis écho « Licht wird ausgeschaltet » Fi |
Par la suite, le script doit encore se voir attribuer les droits nécessaires.
chmod +x speech2text.sh
Maintenant, il peut être commencé et parlé.
./speech2text.sh
J’ai inclus deux exemples de requêtes dans la partie inférieure du script qui peuvent être utilisés pour répondre à la saisie vocale. Par exemple. un autre script ou commande pourrait être exécuté. Ce que vous utilisez pour cela dépend de vous.
Pour être complet, voici mon test:
pi@raspberrypi ~ $ ./speech.sh Recording... To stop, press CTRL + C and wait. ^C Execute... Google answer: "turn on the light" Light will switch on
S’il devait y avoir un intérêt, je pourrais également créer et publier à l’aide d’un smartphone.