ラズベリーパイ – スペイン語の音声認識
まぁ, まぁ, tras un largo verano de disfrute y ocio volvemos a la carga!!! En este documento veremos cómo 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 議事録! y decirle… “アントニア, ponme Telecinco”!
Nos basaremos en una Raspberry Pi 2 又は 3 con Jessie instalado y actualizado, a esta Raspberry le instalaremos Apache y le pondremos una web que permitirá que el navegador que la visite, conecte su microfono y le hable. La web tratará lo que escuche ejecutando cualquier comando que configuremos previamente. A esta web nos podremos conectar desde un PC/Portatil/móvil/tableta y con el Chrome, , nos solicitará acceso al microfono y nos estará escuchando en todo momento. Lo ideal es hacer todo en la misma Raspberry Pi, me explico, conectarla a ella un microfono y hacer que autologee al reiniciar y ejecute el Chromium contra sí mismo. 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 'cliente’ y de 'servidor'.
悪くありません, 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 (アントニア), 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), me buscará en WolframAlpha la respuesta a la pregunta que le haga 🙂 pero eso no lo he puesto en este documento para no despistar; 行きましょう, el uso normal con Antonia es que me encienda/regule/apague la luz de la sala, suba/baje estores, cambie de canal de TV al que yo le diga ;), ponga la calefacción, la alarma, me diga temperaturas, previsiones del tiempo…
そしてまた, esto se puede hacer con cualquier idioma! en este documento se tratará de reconocer el Español o Castellano, es gratuito, ocupa 1kb el script… qué más! ところで, para el que pregunte, estoy usando un micrófono buenillo (en mi humilde opinión), omnidireccional, que escucha perfectamente desde cualquier sitio (tengo una sala de 30m2 y está escondido) es un CAD Audio U9 Condenser Microphone, Omni. Pero vamos que con cualquier micrófono funciona, sea USB o de una webcam. Ya os digo, 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:
[ソースコード language=”平地”]sudo apt-get apache2 php5 libapache2-mod-php5をインストールする[/ソースコード]
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):
[ソースコード language=”平地”]sudo vim /etc/apache2/envvars[/ソースコード]
そして次のように変更します:
[ソースコード language=”平地”]export APACHE_RUN_USER=pi
export APACHE_RUN_GROUP=pi[/ソースコード]
悪くありません, ウェブサイトが常にマイクへのアクセスを求めないようにするために, サイトを安全にすれば (HTTPS) 自己署名証明書をインストールすれば, ブラウザはサイトを信頼し、最初の一度だけマイクへのアクセスを求めるようになります. したがって、ウェブサイトをセキュアにするために必要なステップをここに示します, 証明書を保存するディレクトリを作成します, 証明書と秘密鍵を作成します, Apacheでモジュールを有効にします, Apacheの設定へのリンクを作成し、証明書の正しいパスを示すために編集します:
[ソースコード language=”平地”]sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -/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[/ソースコード]
そして次のように変更します:
[ソースコード language=”平地”]SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key[/ソースコード]
最後です, Apacheを再起動して完了!
[ソースコード language=”平地”]sudo /etc/init.d/apache2 restart[/ソースコード]
必要なファイル,
ここに二つの必要なファイルを置きます, /var/www/html/に置きます:
index.html
[ソースコード language=”平地”]<HTMLの>
<HTMLの>
<head>
<meta charset="utf-8">
<script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.4.0/annyang.min.js"></スクリプト>
</head>
<body>
<スクリプト>
function openPage(声){
window.open(‘hector.php?voz=' + voz);}
もし (annyang) {
annyang.setLanguage(‘es-ES’);
var commands = {
‘Antonia *voz’ : openPage,
‘Manolo *voz’ : openPage
};
annyang.addCommands(commands);
annyang.start();
}
</スクリプト>
</body>
</HTMLの>
[/ソースコード]
このファイルは初期のウェブページです, JavaScript を読み込み、ブラウザの音声から録音できるもの. そこで元の言語を変更して他の任意の言語を設定できる, それと同様に(s) キーワード(s) 聞き取った後に、発言された単語を URL の引数として含む hector.php を開く関数を実行しなければならないもの. 例, 言う: ‘Antonia, 1 にして’. そうすると ‘https://X.X.X.X/hector.php?voz=1 にして’’ タブで開き、その後に閉じる.
hector.php
[ソースコード language=”平地”]<HTMLの>
<body>
<?PHPの
$valor = $_REQUEST[‘voz’];
もし($valor==’音楽を消して’’ || $valor==’音楽を止めて’’ || $valor==’音楽を停止’)
{
エグゼクティブ(‘/home/pi/textoAvoz.sh "Si mi amo"’);
エグゼクティブ(‘/home/pi/musica_apaga.sh’);
}
もし($valor==’ブザーを上げて’’ || $valor==’ストアを上げて’)
{
エグゼクティブ(‘/home/pi/textoAvoz.sh "Si mi amo"’);
エグゼクティブ(‘/home/pi/estoresubeon.sh’);
}
もし($valor==’pon la sexta’ || $valor==’font la sexta’ || $valor==’por la sexta’)
{
エグゼクティブ(‘/home/pi/textoAvoz.sh "Si mi amo"’);
エグゼクティブ(‘/home/pi/la6_enciende.sh’);
}
echo "<スクリプト>window.close();</スクリプト>";
?>
</body>
</HTMLの>[/ソースコード]
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 ‘pon’ a 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. これで完璧に聞こえるようになります!
Chromiumのインストール
悪くありません, これはオプションです. Raspberry自体にマイクを付けたい場合も、これらの手順を行います, Chromeをインストールし、'pi'のセッションが開始すると自動的に開くようにします’ webサーバーに接続できるようにするためです.
これらの手順はRaspberry PiにChromiumをインストールするためのものです 3:
[ソースコード language=”平地”]
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[/ソースコード]
Ahora haremos que cuando autologuee la sesión de ‘pi’ en las X, ウェブサービスに対してChromiumを開く:
[ソースコード language=”平地”]vim ~/.config/lxsession/LXDE-pi/autostart[/ソースコード]
そして最後に追加する:
[ソースコード language=”平地”]@chromium-browser https://127.0.0.1[/ソースコード]
テスティング,

Raspberry PiのIPアドレスに対してブラウザを開くとマイクのアクセスを求められる, httpsで接続したため:// 今回だけ求められ、それ以降は設定に保存される. デフォルトでは問題がなければ ‘index.html’ が開かれる.
私がやった方法は (最良ではないが, 速くて機能的) 聞いた後に, ブラウザが別タブで認識した単語をURLに付けて hector.php に渡す. その後、タブは閉じられる!
まぁ, 以上です, agradecer a Miguel Ignacio Guerra del blog Cucopc alguna ayudita que me ha echado. Gracias a todos y espero que lo disfrutéis, combinando este tipo de documentos con otros que veréis en la sección de ラズベリーパイ, podemos hacer un hogar inteligente totalmente intuitivo y poderoso.











































