树莓派 – 西班牙语语音识别

井, 井, 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… “安东尼娅, 给我开Telecinco”!

Raspberry_reconocimiento_voz_espanol_03-bujarra

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. 该网站将通过执行我们之前配置的任何命令来处理它所听到的内容. 我们可以从PC/笔记本电脑/手机/平板使用Chrome连接到该网站, 它会请求访问麦克风,并会一直监听我们. 理想情况是在同一台Raspberry Pi上完成所有操作, 让我解释一下, 将一个麦克风连接到它,并设置在重启时自动登录并使用Chromium对自己执行. 因此Raspberry Pi将会提供一个网站,当你连接到它时它会监听,并且使用它自己的浏览器和麦克风充当‘客户端’’ 以及‘服务器’.

 

Raspberry_reconocimiento_voz_espanol_02-bujarra

不错, 这一切都得益于网站上的一个Javascript库, (HTML格式) 名为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

 

Raspberry_reconocimiento_voz_espanol_01-bujarra

而且, esto se puede hacer con cualquier idioma! en este documento se tratará de reconocer el Español o Castellano, es gratuito, ocupa 1kb el scriptqué 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:

[源码语言=”平原”]sudo apt-get install 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):

[源码语言=”平原”]sudo vim /etc/apache2/envvars[/源代码]

Y modificamos:

[源码语言=”平原”]export APACHE_RUN_USER=pi
export APACHE_RUN_GROUP=pi[/源代码]

 

不错, 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:

[源码语言=”平原”]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[/源代码]

 

Y modificamos:

[源码语言=”平原”]SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key[/源代码]

 

最后, 重启 Apache 就完成!

[源码语言=”平原”]sudo /etc/init.d/apache2 restart[/源代码]

 

所需文件,

这里给你们两个唯一需要的文件, 我们会把它们放在 /var/www/html/:

 

index.html

[源码语言=”平原”]<HTML格式>
<HTML格式>
<头>
<meta charset="utf-8">
<script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.4.0/annyang.min.js"></脚本>
</头>
<连体紧身衣>
<脚本>
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();
}
</脚本>
</连体紧身衣>
</HTML格式>
[/源代码]

这个文件是初始网页, 加载JavaScript并允许从浏览器录音的那个. 我们可以在那里更改源语言并设置任何其他语言, 以及(s) 单词(s) 必须监听的内容,然后触发一个函数,用这些作为URL参数打开hector.php网页. 例如, 说: ‘Antonia, 放第一个’. 并会打开 ‘https://X.X.X.X/hector.php?voz=放第1’ 在一个标签页中,然后关闭.

hector.php

[源码语言=”平原”]<HTML格式>
<连体紧身衣>
<?菲律宾语
$值 = $_REQUEST[‘voz’];
如果($值==’关掉音乐’’ || $值==’关闭音乐’’ || $值==’停止音乐’)
{
exec(‘/home/pi/textoAvoz.sh "Si mi amo"’);
exec(‘/home/pi/musica_apaga.sh’);
}

如果($值==’增加抽票者’’ || $值==’提高店铺’)
{
exec(‘/home/pi/textoAvoz.sh "Si mi amo"’);
exec(‘/home/pi/estoresubeon.sh’);
}
如果($valor==’放到第六个’’ || $valor==’字型第六个’’ || $valor==’通过第六个’)
{
exec(‘/home/pi/textoAvoz.sh "Si mi amo"’);
exec(‘/home/pi/la6_enciende.sh’);
}
echo "<脚本>window.close();</脚本>";
?>
</连体紧身衣>
</HTML格式>[/源代码]

我只给你们举一个小例子来大概说明文件的内容, 如你们所见,非常简单, 只是捕捉听到的音频并执行一个脚本. 在我这里,它并不总是听到正确的单词, 所以通过那个小小的可能错误字典,它能理解可能的错误. 因此 ‘放到’’ 有时它会听成 ‘字型’, ‘通过’… 🙂 如果我们有时候说了一个命令它没有听懂, 通过查看浏览器历史记录,看看‘什么’ nos ha entendido y añadirlo a las posibilidades. Con eso ya escucha perfecto!

 

Instalar Chromium

不错, 这是可选的. 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 ‘pi’ arranque para que se conecte contra el servidor web.

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

[源码语言=”平原”]
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[/源代码]

 

现在我们将设置当‘pi’自动登录会话时’ 在 X 中, 打开 Chromium 对接 Web 服务:

[源码语言=”平原”]vim ~/.config/lxsession/LXDE-pi/autostart[/源代码]

然后我们在最后添加:

[源码语言=”平原”]@chromium-browser https://127.0.0.1[/源代码]

 

测试,

Raspberry_reconocimiento_voz_espanol_04-bujarra
一旦我们打开浏览器访问 Raspberry Pi 的 IP 地址,它会要求访问麦克风, 因为我们是通过 https 连接:// 它这次只会请求一次,并会保存到偏好设置中. 默认情况下,如果一切正常,它会打开 ‘index.html’.

 

Raspberry_reconocimiento_voz_espanol_05-bujarra

我采用的方式 (不是最好的, 但快速且可行) 是在听取我们的语音后, 浏览器会在一个标签页中打开 URL,把识别的词作为变量传给 hector.php. 然后标签页会关闭!

 

井, 就这些了, 感谢 Miguel Ignacio Guerra 的博客 Cucopc 一些他帮过我的小忙. 感谢大家,希望你们喜欢, 将这种类型的文档与您将在本节中看到的其他文档结合 树莓派, 我们可以打造一个完全直观且强大的智能家居.

 

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!