Archivo de la etiqueta: Windows IoT Core

Instalar reconocimiento de voz en Español en Windows 10 IoT Core

Windows 10 IoT core es un sistema operativo que promete. Para mí es una combinación perfecta entre simplicidad y potencia, porque nos ofrece acceso casi total a las API .NET en dispositivos con los mismos lenguajes y entornos que usado para programar en PC y además tiene herramientas para hacer cualquier tipo de interfaz gráfica y interacción de todo tipo con los usuarios.

Entre ellas está el reconocimiento de voz, pero al instalar Windows IoT Core veremos que sólo incluye el idioma Inglés tanto para el reconocimiento como para el Texto-a-Voz. Por suerte es una limitación relativamente fácil de resolver.

Los archivos de reconocimiento de voz y Texto-a-Voz de Windows 10 IoT y su hermano mayor de PC son intercambiables. Se puede copiar los archivos del reconocimiento de voz de un idioma de PC tal cual a Windows IoT Core y funcionarán.

Requisitos:

  • PC con Windows 10 en Español o con language pack Español. Recomiendo que en el PC y en el dispositivo IoT usen la misma versión de Windows. He usado la versión 14393 (Windows 10 Anniversary Update)
  • Dispositivo con Windows IoT Core. He usado una Raspberry Pi 3.
  • Un PC con lector de tarjetas.
  • Live CD o USB de Ubuntu (En serio, más adelante veremos porque)

Procedimiento:

Los pasos los explico para Español de España pero debería servir para cualquier otro idioma, solo hay que sustituir en las rutas ‘es-ES’ por el código de idioma que corresponda.

Desde el PC con Windows 10 conéctate a tu dispositivo Windows IoT Core por compartición de archivos a la carpeta \\[IP_DISPOSITIVO]\C$\. Usa el usuario Administrator, la contraseña por defecto es p@ssw0rd.

Copia las siguientes carpetas desde tu PC Windows 10 a tu dispositivo Windows 10 IoT Core:

  • C:\Windows\Speech_OneCore\Engines\TTS\es-ES a \\[IP_DISPOSITIVO]\C$\Windows\Speech_OneCore\Engines\TTS\
  • C:\Windows\Speech_OneCore\Engines\SR\es-ES-N a \\[IP_DISPOSITIVO]\C$\Windows\Speech_OneCore\Engines\SR\
  • C:\Windows\Speech_OneCore\Engines\Lexicon\es-ES a \\[IP_DISPOSITIVO]\C$\Windows\Speech_OneCore\Engines\Lexicon\
  • C:\Windows\System32\Speech_OneCore\Common\es-ES a \\[IP_DISPOSITIVO]\C$\ Nota: no será la ubicación definitiva de esta carpeta, como veremos más adelante.

Ahora viene la parte complicada: para que Windows detecte el nuevo idioma hemos de copiar algunos archivos a la carpeta System32, pero esa carpeta tiene unos permisos especiales y no se pueden modificar por red.
Tampoco se puede modificar desde el PC conectando la tarjeta SD porque Windows sólo reconoce la primera partición de las unidades flash.

Mi workaround a ese problema ha sido descargar un live cd de Ubuntu porque lee todas las particiones de la tarjeta SD y no respeta los permisos de NTFS, así tenemos control total sobre el sistema de archivos de Windows 10 IoT Core.

El último paso es ejecutar Ubuntu, abrir la unidad etiquetada como ‘MainOS’ que contiene los archivos de Windows 10 IoT Core y mover la carpeta \es-ES (la última que hemos copiado en el paso anterior) a \Windows\System32\Speech_OneCore\Common\

Para verificar que la instalación es correcta descárgate un proyecto de ejemplo de uso de reconocimiento de voz y ejecútalo en Windows 10 Iot Core. Si está todo correcto debería aparecer Español como opción en Text-to-Speech y Speech Recognition.