Raspberry Pi – Spanische Spracherkennung

Brunnen, Brunnen, als ein largo verano de disfrute y ocio volvemos a la carga!!! En este documento veremos cómos hacer que una Raspberry Pi nos esté escuchando, esperando a que le hablemos y ejecute los comandos que le indiquemos. Es algo realmente muy sencillo de hacer, he estado tiempo probando alternativas más complejas tanto de instalar como de configurar, y esta para mí es la mejor. Lo que vais a ver en este documento lo podréis implementar en menos de 30 Protokoll! y decirle… “Antonia, ponme Telecinco”!

Raspberry_Sprach­erkennung_spanisch_03-bujarra

Wir werden uns auf einen Raspberry Pi stützen 2 oder 3 mit installiertem und aktualisiertem Jessie, auf diesem Raspberry installieren wir Apache und erstellen eine Website, die es dem Browser, der sie besucht, ermöglicht, sein Mikrofon anzuschließen und mit ihm zu sprechen. Die Website wird verarbeiten, was sie hört, und jeden zuvor konfigurierten Befehl ausführen. Mit dieser Website können wir uns von einem PC/Laptop/Handy/Tablet verbinden und mit Chrome, wird der Zugriff auf das Mikrofon angefordert und wir werden die ganze Zeit gehört. Idealerweise sollte alles auf demselben Raspberry Pi gemacht werden, ich erkläre mich, ein Mikrofon daran anschließen und dafür sorgen, dass es beim Neustart automatisch angemeldet wird und Chromium gegen sich selbst ausführt. Por lo que la Pi estará sirviendo una web que escuchará cuando te conectes a ella y con su propio navegador y su microfono hará de ‘clientey de ‘servidor’.

 

Raspberry_reconocimiento_voz_espanol_02-bujarra

Nicht schlecht, todo esto es posible gracias a una librería de Javascript que tendrá la web (HTML) llamada Annyang, añadiendo la posibilidad de usar reconocimiento de voz a los usuarios que se conecten. Reenviará lo que escuche a una pequeña web de php que ejecutará los comandos. En mi caso tras pronunciar su nombre (Antonia), cogerá las siguientes palabras y buscará si hay algún comando que ejecutar. Tengo puesto también que si le llamo de otra forma (Manolo), Er wird für mich die Antwort auf die Frage, die ich ihm stelle, in WolframAlpha suchen 🙂 aber das habe ich nicht in dieses Dokument geschrieben, um nicht zu verwirren; Auf geht es, Die normale Nutzung mit Antonia ist, dass sie das Licht im Wohnzimmer einschaltet/regelt/ausschaltet, Rollos hoch/runter lässt, den TV-Kanal wechselt, den ich ihr sage ;), die Heizung einschaltet, den Alarm, mir Temperaturen nennt, Wettervorhersagen angibt…

 

Raspberry_Sprach­erkennung_Spanisch_01-bujarra

Und auch, das kann mit jeder Sprache gemacht werden! in diesem Dokument wird es darum gehen, Spanisch oder Kastilisch zu erkennen, es ist kostenlos, das Skript belegt 1kb… was noch! Übrigens, für den, der fragt, ich benutze ein ziemlich gutes Mikrofon (meiner bescheidenen Meinung nach), gerichtet in alle Richtungen, das perfekt von überall her hört (ich habe ein 30m² großes Zimmer und es ist versteckt) es ist ein CAD Audio U9 Kondensator-Mikrofon, Omni. Pero vamos que con cualquier micrófono funciona, sea USB o de una webcam. Ich sag es dir, lo podeis poner en la misma Pi, o usarlo desde otros equipos en la casa.

 

Instalación de Apache,

Lo primero de todo será instalar apache con php y sus requisitos:

[sourcecode language=”Einfach”]sudo apt-get install apache2 php5 libapache2-mod-php5[/Quellcode]

 

Cambiaremos el usuario que ejecutará apache2 (lo hago para que escuche el audio de mis comandos, por no meter al usuario de apache en el grupo de audio):

[sourcecode language=”Einfach”]sudo vim /etc/apache2/envvars[/Quellcode]

Y modificamos:

[sourcecode language=”Einfach”]export APACHE_RUN_USER=pi
export APACHE_RUN_GROUP=pi[/Quellcode]

 

Nicht schlecht, para que la web no esté constantemente pidiendo acceso al micrófono, si hacemos que el sitio sea seguro (HTTPS) e instalamos un certificado autofirmado, el navegador confiará en el sitio y ya no pedirá acceso al micro más que la primera vez. Por lo que os pongo aquí los pasos necesarios para securizar la web, crearemos un directorio para guardar ahí los certificados, crearemos el certificado y la clave privada, habilitamos los modulos en apache, creamos enlace a la configuración de Apache y la editaremos para indicar las rutas correctas de los certificados:

[sourcecode language=”Einfach”]sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key
sudo a2enmod ssl
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
sudo vim /etc/apache2/sites-enabled/000-default-ssl.conf[/Quellcode]

 

Y modificamos:

[sourcecode language=”Einfach”]SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key[/Quellcode]

 

Endlich, reiniciamos Apache y listo!

[sourcecode language=”Einfach”]sudo /etc/init.d/apache2 restart[/Quellcode]

 

Ficheros necesarios,

Os dejo aquí los dos únicos ficheros necesarios, los dejaremos en /var/www/html/:

 

index.html

[sourcecode language=”Einfach”]<HTML>
<HTML>
<Kopf>
<meta charset="utf-8">
<script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.4.0/annyang.min.js"></Skript>
</Kopf>
<Körper>
<Skript>
Funktion openPage(Sprache){
window.open(‘hector.php?voz=‘+voz);}

wenn (annyang) {
annyang.setLanguage(‘es-ES’);
var commands = {
‘Antonia *voz’ : openPage,
‘Manolo *voz’ : openPage
};
annyang.addCommands(commands);
annyang.start();
}
</Skript>
</Körper>
</HTML>
[/Quellcode]

Diese Datei ist die Startseite der Website, die das Javascript lädt und das Aufnehmen über den Audioeingang eines Browsers ermöglicht. Wir können dort die Ausgangssprache ändern und jede andere einstellen, sowie das(s) Wort(s) das gehört werden muss und danach eine Funktion auslösen, die die Website hector.php mit den gesprochenen Wörtern als Argumenten in der URL öffnet. Beispiel, Sagen: ‘Antonia, stell die eins’. Und würde ‘https://X.X.X.X/hector.php?voz=stell die 1’ in einem Tab öffnen und dann schließen.

hector.php

[sourcecode language=”Einfach”]<HTML>
<Körper>
<?PHP (Englisch)
$wert = $_REQUEST[‘voz’];
wenn($valor==’apaga la música’ || $valor==’apagar la música’ || $valor==’para la música’)
{
Exec(‘/home/pi/textoAvoz.sh "Si mi amo"’);
Exec(‘/home/pi/musica_apaga.sh’);
}

wenn($valor==’sube electores’ || $valor==’sube el store’)
{
Exec(‘/home/pi/textoAvoz.sh "Si mi amo"’);
Exec(‘/home/pi/estoresubeon.sh’);
}
wenn($valor==’pon la sexta’ || $valor==’font la sexta’ || $valor==’por la sexta’)
{
Exec(‘/home/pi/textoAvoz.sh "Si mi amo"’);
Exec(‘/home/pi/la6_enciende.sh’);
}
echo "<Skript>window.close();</Skript>";
?>
</Körper>
</HTML>[/Quellcode]

Os pongo sólo un pequeño ejemplo del fichero para dar alguna idea, como veis es muy sencillo, sólo es captar los audios que nos escuche y ejecutar un script. En mi caso no siempre me escucha las palabras correctas, por lo que con ese pequeñito diccionario de posibles errores entiende los posibles fallos. Por lo que ‘pona veces me entiende ‘font’, ‘por’🙂 Si alguna vez decimos un comando y no nos entiende, con ver el historial del navegador y ver ‘quénos ha entendido y añadirlo a las posibilidades. Con eso ya escucha perfecto!

 

Instalar Chromium

Nicht schlecht, Dies ist optional. Si queremos que la propia Raspberry tenga el micrófono seguiremos estos pasos también, ya que le instalaremos Chrome y haremos que se abra automáticamente cuando la sesión de ‘piarranque para que se conecte contra el servidor web.

Estos pasos son para instalar Chromium en una Raspberry Pi 3:

[sourcecode language=”Einfach”]
wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/7916060/+files/chromium-browser_45.0.2454.85-0ubuntu0.15.04.1.1181_armhf.deb
wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/7916060/+files/chromium-codecs-ffmpeg-extra_45.0.2454.85-0ubuntu0.15.04.1.1181_armhf.deb
sudo dpkg -i chromium-codecs-ffmpeg-extra_45.0.2454.85-0ubuntu0.15.04.1.1181_armhf.deb chromium-browser_45.0.2454.85-0ubuntu0.15.04.1.1181_armhf.deb[/Quellcode]

 

Jetzt werden wir dafür sorgen, dass beim automatischen Einloggen der Sitzung von 'pi'’ in der X, Chromium gegen den Webdienst öffnet:

[sourcecode language=”Einfach”]vim ~/.config/lxsession/LXDE-pi/autostart[/Quellcode]

Und wir fügen am Ende hinzu:

[sourcecode language=”Einfach”]@chromium-browser https://127.0.0.1[/Quellcode]

 

Testen,

Raspberry_spracherkennung_spanisch_04-bujarra
Sobald wir den Browser gegen die IP-Adresse des Raspberry Pi öffnen, wird er uns nach Zugriffsrechten für das Mikrofon fragen, da wir uns über https verbunden haben:// wird es uns nur dieses eine Mal fragen und es dann in den Einstellungen speichern. Standardmäßig, wenn alles gut gelaufen ist, wird es index.html öffnen.

 

Raspberry Sprach­erkennung Spanisch 05-bujarra

Die Art, wie ich es gemacht habe (nicht die beste, aber schnell und funktional) ist, dass nach dem Zuhören, der Browser in einem Tab die URL mit den Wörter öffnet, die er verstanden hat, attackierend auf hector.php und sie als Variable übergebend. Dann wird der Tab geschlossen!

 

Brunnen, das ist alles, Dank an Miguel Ignacio Guerra vom Blog Cucopc für ein wenig Hilfe, die er mir gegeben hat. Danke an alle und ich hoffe, ihr genießt es, Indem man diese Art von Dokumenten mit anderen kombiniert, die ihr in der Sektion sehen werdet Raspberry Pi, können wir ein völlig intuitives und mächtiges Smart Home machen.

 

Empfohlene Beiträge

Verfasser

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Zögern Sie nicht, mich zu kontaktieren, Ich werde versuchen, dir zu helfen, wann immer ich kann, Teilen ist Leben ;) . Genießen Sie Dokumente!!!