Stap 5: Erkenning van de stem
Projecten die achtervolgd mij, ik vond meest interessante is de erkenning van de toespraak, maar niet alleen aan de transcripties, maar om de GPIO van Pi acties te voeren.
Dus na een paar dagen van het testen en proeven, ik erin geslaagd om een continu luisteren stem input voor het uitvoeren van commando's in- of uitschakelen als LED's op de GPIO aangesloten. Vanaf hier kan je wat we voorbij de verbeelding. Wilt u weten hoe dat in uw Raspberry te doen? Nou, houd lezend!
Materiasl:
- Raspberry Pi
Het eerste wat dat we doen is het installeren van de gratis software van de stemerkenning, genaamd PocketSphinx.
Om te doen dit de volgende opdrachten (sommige vereisen hoogte) uitvoeren. Installeren en bijwerken van de software, en geven de voorkeur aan de geluidskaart of de USB-ingang aan bij het maken van spraakherkenning.
<p>sudo apt-get install rpi-update<br>sudo apt-get install git-core sudo rpi-update</p>
PocketSphinx:
Wij raden de nieuwste versies van software
Zodra u hebt geïnstalleerd, kunt u de opdracht om te beginnen uitvoeren. / pocketsphinx_continuous proberen als u de stem herkent. In het geval dat een fout geen audio-ingang vindt, voeren als een beheerder met sudo.
Nu maken we een woordenboek met woorden die u wilt toewijzen aan bepaalde acties.
Dit zal helpen de software uit te voeren van de toespraak aan tekst, omdat je alleen om te controleren dat de audio-ingang dat we vermeldingen in de woordenlijst maken.
In mijn geval, een woordenlijst te maken met enkele woorden als: Green On Red On, Off groen rood uit. Voor het inschakelen en uitschakelen leds. Para maken het woordenboek, een tekstbestand (.txt) met één woord in elke rij.
Dan Voer het volgende adres (LM-TOOL) en verhoogt het txt-bestand.
De links voor het downloaden van uw woordenboek zal tonen.
Download en unzip de TAR in een map voor het uitvoeren van scripts. Voor de eerste proeven, ga naar de map woordenlijst en voert u de volgende opdracht:
<br><p>sudo pocketsphinx_continuous -lm 9640.lm -dict 9640.dic > capture.txt -samprate 16000/8000/48000</p>
Waar 9640.lm en het 9640.dic worden vervangen door het nummer van het woordenboek die u zojuist hebt gemaakt.
Tijdens het uitvoeren van de opdracht die u kunt zeggen dat de woorden van het woordenboek, en eenmaal acabéis (Control + C om te sluiten) capture.txt u kunt lezen het bestand om te controleren of het klopt.
Nu we de LEDs aansluiten en beginnen te spelen met hen. Om te starten, sluit u de LEDs in de dennen GPIO17 en de grond (aarde) en de GPIO1 en de grond.
Nu voert u de volgende opdrachten om aan te geven dat zij actief zijn, en ze zijn uitvoer:
<p>echo 17 > /sys/class/gpio/export</p><p>echo 1 > /sys/class/gpio/export</p><p>echo out > /sys/class/gpio/gpio17/direction</p><p>echo out > /sys/class/gpio/gpio1/direction</p>
We kunnen ze uitschakelen en zet ze over het wijzigen van de waarde met de volgende opdracht:
<p>echo 1 > /sys/class/gpio/gpio17/value</p><p>echo 0 > /sys/class/gpio/gpio17/value</p>
Ik heb nu, om te beginnen met het maken van acties op basis van spraakopdrachten, sommige scripts geschreven in Python, om dit te doen. De bijzonderheid van deze code wordt uitgevoerd PocketSphinx en laat luisteren om te zeggen dat elke keer dat een opdracht wordt beschreven om automatisch controleren en uitvoeren van de actie in kwestie.
Dus kunnen we maken van de volgende bestanden en kopiëren van inhoud voor het testen. Herinner me de woorden die ik gebruik zijn gemaakt in mijn woordenboek. Ook kunt u zien dat hoewel dit zei, ook oproep een programma genaamd Festival, dat juist het tegenovergestelde, een synthesizer van de toespraak is willen we de Raspberry antwoord elke keer als we een actie.
Archivo de read.py:
<p>#!/usr/bin/pythonimport os</p>import time i=0 while i != 1 : infile = open(‘capture.txt’, ‘r’) for line in infile: if line.find(“GREEN OFF”) != -1 : os.system(“echo 0 > /sys/class/gpio/gpio17/value”) os.system(“true > capture.txt”) #os.system(“festival -b ‘(SayText “Green led off”)'”) if line.find(“GREEN OK”) != -1 : os.system(“echo 1 > /sys/class/gpio/gpio17/value”) os.system(“true > capture.txt”) #os.system(“festival -b ‘(SayText “Green led ON”)'”) if line.find(“RED OFF”) != -1 : os.system(“echo 0 > /sys/class/gpio/gpio2/value”) os.system(“true > capture.txt”) #os.system(“festival -b ‘(SayText “Red led Off”)'”) if line.find(“RED OK”) != -1 : os.system(“echo 1 > /sys/class/gpio/gpio2/value”) os.system(“true > capture.txt”) #os.system(“festival -b ‘(SayText “Red led ON”)'”) if line.find(“TEST”) != -1 : os.system(“echo 1 > /sys/class/gpio/gpio2/value”) os.system(“echo 1 > /sys/class/gpio/gpio17/value”) os.system(“true > capture.txt”) #os.system(“festival -b ‘(SayText “Green and red led ON”)'”) if line.find(“EXIT”) != -1 : os.system(“sudo pkill -9 pocketsphinx”) os.system(“true > capture.txt”) #os.system(“festival -b ‘(SayText “Goodbye!”)'”) i=1 infile.close() time.sleep(2)
En nu het all.py bestand PocketSphinx uitgevoerd op de "achtergrond".
#!/usr/bin/pythonimport os import subprocess, time os.system(“rm capture.txt”) #os.system(“./shut.py &”) os.system(“sudo pocketsphinx_continuous -lm 3906.lm -dict 3906.dic > capture.txt -samprate 16000/8000/48000 &”) os.system(“./read.py &”)<br>
We voeren nu toestemming om de twee programma's:
<p>chmod +x all.py read.py</p>
En wij annuleerteken stormloop all.py voor het testen.
Dit "stukje" code in ontwikkeling zal blijven proberen om te vinden van verbeteringen. Ik bied vrij voor iedereen te gebruiken en te spelen rond met het.
xcxcxcxcxc