Introduction: Reconocimiento De Voz Desconectado Y Síntesis En Español Para Arduino

This Instructable is also available in English.

MOVI significa 'My Own Voice Interface' (Mi propia interfaz de voz) y es un escudo para el Arduino. Con MOVI construir sus propios diálogos de voz para controlar dispositivos dentro del IDE de Arduino es muy fácil. El escudo no necesita ninguna conexión a Internet, WiFi, PC o cualquier otro servidor externo.

Quizas haya visto los Instructables destacados en el Árbol de Navidad controlado por voz o el reloj de alarma controlado por voz.

Lamentablemente, hasta poco antes, MOVI sólo estaba disponible en inglés. Una nueva actualización de firmware a 1.10 permite cargar otros modelos de reconocimiento de voz en la placa en el formato producido por Voxforge.org. En este momento, en el sitio web de MOVI están modelos para español y alemán. Este Instructable muestra cómo actualizar e instalar el paquete de idioma español (mexicano), cambiar el sintetizador de voz al español, y cosas que hay que prestar atención al programar diálogo en español.

Este Instructable requiere conocimiento básico con MOVI bajo Arduino. Si no ha utilizado MOVI antes, lea Instructable en MOVI en Arduino en primer lugar. De lo contrario: Vàmonos!

Step 1: Ingredientes

Como se explicó anteriormente, este Instructable asume que su MOVI está configurado y funcionando con un Arduino. Además necesita:

  • Un ordenador que puede leer y escribir una tarjeta SD (SD card) bajo Linux, Mac OS X o una versión actual de Windows. Más precisamente, MOVI utiliza una tarjeta MicroSD. Por lo tanto usted puede tener que usar un adaptador como se muestra en la foto (imagen Tomasz Sienicki).

    Si está utilizando Windows, también necesita instalar los programas siguientes:

    • Disk Imager es gratuito y de código abierto y está bien recomendado en la comunidad de Internet de las cosas. Lo utilizaremos para hacer copias de seguridad de la tarjeta SD.
    • BootICE es una herramienta que funciona alrededor de un error en Windows que no permite que una tarjeta SD tenga varias particiones.

Step 2: Lea Las Palabras De Precaución

Es importante hacer una copia de seguridad de la tarjeta MOVI SD antes de instalar la actualización del firmware o agregar un paquete de idioma.

¡Las tarjetas SD de MOVI son específicas de su placa y reemplazo requiere que envíe su placa MOVI al fabricante!

Este Instructable viene con absolutamente ninguna garantía.

Al escribir este Instructable, ninguna versión de Microsoft Windows admite el acceso a múltiples particiones en una tarjeta SD. Esto hace que el proceso de copia de seguridad y actualización de MOVI con una computadora con Windows sea mucho más engorroso. Es posible que a algunas personas les resulte más fácil utilizar Linux o Mac que proceder este Instructable en Windows.

En este Instructable, siga todos los pasos (Steps), dependiendo de su sistema operativo, por ejemplo "sólo Windows". Si un paso no está marcado, es válido para todos los sistemas operativos.

Step 3: Copia De Seguridad De Su Tarjeta SD (sólo Linux)

  • Desenchufe todas las conexiones de alimentación, inclusivo el cable USB del Arduino.
  • Retire la tarjeta SD de MOVI presionándola suavemente antes de extraerla. Deja el escudo en el Arduino.
  • Coloque la tarjeta SD en su computadora. Es posible que tenga que utilizar un adaptador. Si es así, ponga el adaptador en el modo "bloqueo" para que la tarjeta SD se haga de sólo lectura. Asegúrese de que su computadora está arrancada antes de conectar la tarjeta SD, ya que la tarjeta SD es arrancable y por lo tanto puede confundir su sistema.
  • La mejor manera de hacer una copia de seguridad de su tarjeta SD es copiar toda la imagen en una sola pieza. Las imágenes suelen crearse como archivos con una extensión .img .
  • Siga estos pasos:
  1. Encuentra el archivo del dispositivo, la tarjeta SD está asociada con el siguiente comando
     sudo fdisk -l 
  2. Digamos que su tarjeta SD es /dev/sdb (como en nuestra figura), entonces puede crear una imagen usando
     dd if=/dev/sdb of=./MOVI_Backup.img 
  3. Si alguna vez desea restaurar los datos, puede usar el mismo comando en una tarjeta SD sin montar , pero con entrada y salida intercambiada:
     dd if=./MOVI_Backup.img of=/dev/sdb 
      
    Recomiendo la restauración de una nueva tarjeta SD de inmediato y, a continuación, utilizando esta tarjeta SD de copia de seguridad on.You puede utilizar cualquier tarjeta micro SD con al menos 4 GB. Así que usar una nueva para cada actualización es una alternativa aún más segura. ¡Guarde la tarjeta SD original en un lugar seguro!

Step 4: Copia De Seguridad De La Tarjeta SD (sólo Mac)

  • Desenchufe todas las conexiones de alimentación, así como el cable USB del Arduino.
  • Retire la tarjeta SD de MOVI presionándola suavemente antes de extraerla. Deja el escudo en el Arduino.
  • Arranque su computadora y coloque la tarjeta SD en ella. Es posible que tenga que utilizar un adaptador. Si es así, ponga el adaptador en el modo "bloqueo" para que la tarjeta SD se haga de sólo lectura. Asegúrese de que su computadora está arrancada antes de conectar la tarjeta SD, ya que la tarjeta SD es arrancable y por lo tanto puede confundir su sistema.
  • La mejor manera de hacer una copia de seguridad de su tarjeta SD es copiar toda la imagen en una sola pieza. Las imágenes suelen crearse como archivos con una extensión .img.
  • Siga estos pasos:
    • Encuentra el archivo del dispositivo, la tarjeta SD está asociada con el comando below
       diskutil list
    • Digamos que su tarjeta SD es /dev/sdb (al igual que en nuestra figura), entonces puede crear una imagen usando
      sudo dd if=/dev/rdisk1 of=./MOVI_backup.img bs=1m
  • Si alguna vez desea restaurar los datos, puede utilizar el mismo comando en una tarjeta SD desmontada , pero con la entrada y la salida intercambiadas:
    sudo dd of=/dev/rdisk1 if=./MOVI_backup.img bs=1m

    Recomiendo la restauración a una nueva tarjeta SD de inmediato y luego usar esta tarjeta SD de copia de seguridad de ahora en adelante. Usted puede utilizar cualquier tarjeta micro SD con al menos 4 GB. Así que usar una nueva para cada actualización es una alternativa aún más segura. ¡Guarde la tarjeta SD original en un lugar seguro!

    Otro buen tutorial (en ingles) sobre este paso puede ser encontrado aquí.

Step 5: Copia De Seguridad De La Tarjeta SD (sólo Windows)

  1. Desenchufe todas las conexiones de alimentación, inclusivo el cable USB del Arduino.
  2. Retire la tarjeta SD de MOVI presionándola suavemente antes de extraerla. Deja el escudo en el Arduino.
  3. Arranque su computadora y coloque la tarjeta SD en ella. Es posible que tenga que utilizar un adaptador. Si es así, ponga el adaptador en el modo "bloqueo" para que la tarjeta SD se haga de sólo lectura. Asegúrese de que su computadora está arrancada antes de conectar la tarjeta SD, ya que la tarjeta SD es arrancable y por lo tanto puede confundir su sistema.
  4. Abra el Explorador de Windows. ¡Muestra un disco después de insertar la tarjeta SD de MOVI pero este disco no debe ser modificado de ninguna manera! Contiene archivos de sistema vitales para MOVI. Cambiarlos hará que MOVI no funcione. La colocación de archivos de actualización no funcionará tampoco. Sin embargo, recuerde la letra de unidad, aquí D:.
  5. Inicie DiskImager o una herramienta similar (consulte la Figura 2) y guarde una imagen de la tarjeta SD en su computadora. La imagen tendrá 4 GB de espacio. Guárdelo en un lugar reservado.

    Recomiendo la restauración a una nueva tarjeta SD de inmediato y, a continuación, utilizando esta tarjeta SD de copia de seguridad a partir de ahora on.You puede utilizar cualquier tarjeta micro SD con al menos 4 GB. Así que usar una nueva para cada actualización es una alternativa aún más segura. ¡Guarde la tarjeta SD original en un lugar seguro!

Step 6: Ponga El Archivo De Actualización Y/o El Paquete De Idioma En La Tarjeta SD (sólo Linux/Mac OS)

  • Con la copia de seguridad finalizada, expulse (Mac OS X) o desmonte (Linux) la tarjeta SD y saque la tarjeta del ordenador.
  • Ponga la tarjeta SD de seguridad o original en su computadora. Sin embargo, esta vez vamos a escribir en la tarjeta, así que asegúrese de que el adaptador está en modo "desbloqueado".
  • La tarjeta debe montarse automáticamente y las particiones montadas parecen en nuestra imagen (Mac OS). Bajo Linux puede ser necesario montar la partición 4 (por ejemplo /dev/sdb4) manualmente.
  • La partición que necesitamos se llama MOVI UPDATE y es una partición DOS/FAT32 . Cuando se monta la partición por primera vez, la partición debe estar vacía y tener un poco más de 100 MB de espacio. Si ve algún archivo en la partición, montó la partición incorrecta.
  • Si todavía no tiene MOVI 1.1, copie el archivo de actualización del firmware de MOVI en la partición 4. Por ejemplo, con:
    cp ~ /Downloads/update-101.movi /Volúmenes/MOVI \UPDATE/ 

    Obviamente, las rutas de origen y de destino de este comando dependen de dónde descargó el archivo de actualización y donde montó la partición de la tarjeta SD.

  • Ahora, cambie al directorio de la tarjeta SD y descomprima el paquete de idioma español con algo como:
    unzip ~ /Downloads/spanish-movi.zip 

    De nuevo, la ubicación de spanish-movi.zip dependerá de dónde la haya almacenado.

  • Si todo salió bien, un
     ls -l 

    en el directorio de la tarjeta SD debería mostrar los archivos como en nuestra segunda captura de pantalla.

  • Cambie del directorio y desmonte / expulse la tarjeta SD.

Step 7: Ponga El Archivo De Actualización Y/o El Paquete De Idioma En La Tarjeta SD: Paso I (sólo Windows)

  • Con la copia de seguridad finalizada, expulse la tarjeta SD y extraiga la tarjeta del ordenador.
  • Ponga la tarjeta SD de seguridad o original en su computadora. Sin embargo, esta vez vamos a escribir en la tarjeta, así que asegúrese de que el adaptador está en modo "desbloqueado".
  • Está familiarizado con esta línea: Abra el Explorador de Windows. Muestra un nuevo disco después de insertar la tarjeta SD de MOVI. Como se dijo antes, este disco no debe ser modificado de ninguna manera! Contiene archivos de sistema vitales para MOVI. Cambiarlos hará que MOVI no funcione. La colocación de archivos de actualización no funcionará tampoco. Sin embargo, recuerde la letra de unidad, aquí D:.
  • Para ver la parte derecha de la tarjeta SD, podemos escribir el archivo de actualización y el paquete de idiomas, necesitamos usar BootICE que se mencionó para ser descargado en el paso 1.
  • Abrir BootICE - Seleccione la tarjeta MOVI SD (3.7GB) (la letra de unidad del paso anterior, aquí D:) y haga clic en Parts Manage.
  • Seleccione la partición MOVI UPDATE y haga clic en Set Accesible (ver capturas de pantalla).
  • Vuelva al Explorador de Windows. Ahora debe mostrar una unidad vacía de unos 105 MB. No debe mostrar los archivos uImage y script.bin anteriores. Si los ve, vuelva a hacer y compruebe este paso.

Step 8: Ponga El Archivo De Actualización Y/o El Paquete De Idioma En La Tarjeta SD: Paso II (sólo Windows)

  • Si MOVI no está ejecutando Firmware 1.1 o posterior, copie el archivo de actualización MOVI que descargó anteriormente (update-101.movi). Ver captura de pantalla.
  • Ahora descomprima el archivo spanish-movi.zip donde resida actualmente y mueva el archivo modeldir, así como el directorio spanish en la unidad. Esto debería ocupar alrededor de 39MB de espacio en la unidad ahora.
  • Vuelva a BOOTICE y seleccione la partición MOVI BOOT y haga clic en Set Accesible para restaurar la tarjeta SD en su estado anterior. Este paso es muy importante, de lo contrario MOVI no arrancará. Comparar con las capturas de pantalla.
  • Vuelva al Explorador de Windows. Ahora deberías ver la partición original otra vez que se ve como la primera captura de pantalla del paso anterior.
  • Expulse la unidad y saque la tarjeta SD.
  • Step 9: Arranque MOVI

    • Vuelva a insertar la tarjeta SD en MOVI presionando suavemente la tarjeta hasta que se bloquee.
    • Conecte los altavoces a MOVI, ya que es aconsejable escuchar los mensajes durante el proceso de actualización.
    • No conecte ningún cable USB, sino que encienda la combinación Arduino / MOVI con una fuente de alimentación externa fiable y escuche los mensajes de estado de los altavoces. La actualización se realizará automáticamente. Los altavoces le avisarán cuando finalice el proceso.
    • Es muy importante no desenchufar MOVI mientras la actualización está en curso. Actualizaciones parciales pueden hacer que MOVI sea inutilizable. Si esto ocurre, restaure la tarjeta SD de la copia de seguridad.
    • Con la actualización finalizada, MOVI se reiniciará automáticamente.
    • Con los nuevos modelos instalados, MOVI tardará un poco más en arrancar. Usted sabrá que todo ha sido exitoso cuando escucha MOVI diciendo: "MOVI is ready using alternative models".

    Step 10: Programa MOVI

    Los nuevos modelos de lenguaje se cargan y MOVI estará muy confundido sobre el programa que está en el Arduino ahora mismo, ya que está hablando un idioma que no sabe. La buena noticia es que MOVI se puede utilizar exactamente de la misma manera que antes, pero ahora tenemos que entrenar frases en español. Además, necesitamos cambiar el sintetizador al español si queremos respuestas españolas.

    Como consecuencia, el programa de interruptor de luz estándar necesita cambiarse para que se vea así:

    recognizer.addSentence("Haga luz"); // Add Spanish sentence 1
    recognizer.addSentence("Buneas Noches"); // Add Spanish sentence 2  
    recognizer.train();                      // Train (may take 20seconds) 
    recognizer.setSynthesizer(SYNTH_PICO,"-l=es-ES"); // Switch the synthesizer to the new one and to Spanish. 
    

    El programa completo se puede descargar a continuación. Añadir un LED a PIN13 o simplemente ver el Arduino LED encender y apagar a español - al igual que en el vídeo de introducción.

    ¡Felicitaciones!

    Para obtener consejos y trucos para mejorar la experience con MOVI operando en español en escenarios más complejos, vea el siguiente paso.

    Step 11: Consejos Y Trucos Para Operar MOVI En Español

    Aquì son algunos consejos para mejorar tu experiencia con MOVI en español .

    • El signo de llamada (callsign) seguirá siendo inglés. Consejo que elija un signo de llamada que es independiente de la lengua, por ejemplo, "Arduino", "Mohvee" o algo así.
    • Arduino solo es compatible con ASCII de 7 bits. Esto significa que no hay tildes, no ñ, ni ü. Estos caracteres especiales necesitan ser transcritos de manera fonética:
      EspañolTranscripciónEjemplo
      ñ niespañol -> espaniol
      ü uupengüino -> penguuino
    • Los modelos Voxforge.org han sido entrenados con diferentes oradores, pero son dirigidos al español mexicano y por lo tanto podrían ser un poco diferentes de otras variantes sudamericanas o español europeo (Castellano).
    • También puede usar el sintetizador de voz antiguo (espeak) en español. Para hacer esto, cambiar el comando sintetizador del paso anterior a:
      recognizer.setSynthesizer(SYNTH_ESPEAK,"-ves");
      
    • Usted notará que los modelos españoles son un poco más lentos y peor que los modelos ingleses que vienen con MOVI. La buena noticia es: Usted puede trabajar en mejorarlos. Consulte con la comunidad Voxforge.org para ideas.
    • Si te has cansado de español y quieres que MOVI regrese a inglés, todo lo que tienes que hacer es pulsar el botón de MOVI para realizar un restablecimiento de fábrica (factory default). También puede hacer el restablecimiento de fábrica programáticamente. El restablecimiento de fábrica cambiará el nombre del archivo denominado modeldir a modeldir.disabled. Si quieres volver al español en algún momento, todo lo que tienes que hacer es cambiar el nombre del archivo a modeldirponiendo la tarjeta SD de nuevo en tu PC y siguiendo los pasos de este Instructable desde el paso 6.

    MOVI tiene una comunidad bastante activa en el sitio web del fabricante. Por eso, recomiendo visitar foro de MOVI para discutir problemas y èxitos.