Sin embargo, la incorporación de voz ha sido considerada una tarea desalentadora por su alto coste y dificultad. Este artículo demuestra que la utilización de un microcontrolador PIC® de 8 bit con un periférico modulador de ancho de pulso (PWM) puede proporcionar una forma sencilla y de bajo coste de añadir voz a un proyecto embebido.
Un método para codificar la voz es la denominada Modulación Diferen-cial Adaptativa de Código de Pulso (Adaptive Differential Pulse Code Modulation, ADPCM), una técnica que digitaliza las señales analógicas. La ADPCM aprovecha la alta correlación entre muestras de voz consecutivas y codifica la diferencia entre una muestra prevista y la muestra de voz. Cuando se reproduce o se decodifica se pueden prever las muestras futuras. La ADPCM proporciona una compresión eficiente con reproducción de voz de calidad.
Existen varios tipos de algoritmos ADPCM. El algoritmo de la Interactive Multimedia Association (IMA) reduce significativamente la complejidad matemática mediante la simplificación de algunas de las operaciones y utilizando tablas de consulta cuando sea apropiado, por lo que es una buena elección para los microcontroladores de 8 bit. Dado que la reproducción es el principal objetivo, se utilizará un programa en PC para la codificación, mientras que las tareas de decodificación se gestionarán por medio del microcontrolador.
Para lograr que la reproducción sea interactiva, los recortes de voz se separan en archivos individuales y direccionables. Por ejemplo, para pronunciar el valor numérico de la temperatura, los números de uno a nueve, diez a diecinueve, veinte a veintinueve, treinta, cuarenta, cincuenta, sesenta, setenta, ochenta y noventa se almacenan en archivos separados. Por tanto, cuando la temperatura sea de 32 grados, la voz reproducirá dos archivos, uno después del otro: treinta-y-dos. Se emplea un sencillo sistema de archivos para almacenar y extraer los archivos con las voces individuales.
La cantidad de memoria necesaria para almacenar los archivos de voz depende del número de bits, la velocidad de muestreo y la cantidad almacenada. Para una calidad de sonido de conferencia, el número de bits necesarios es de 16 con una velocidad de 8000 muestras por segundo, que equivale a un ancho de banda de 4000 Hz. Por tanto, el tamaño de un segundo de voz es de 16.000 bytes.
Una vez codificado el archivo de voz con el algoritmo ADPCM de IMA, el tamaño comprimido es 1/4 de su tamaño original. Dependiendo de la cantidad de voz necesaria para un proyecto, se puede almacenar en la memoria de programa del microcontrolador o en una memoria Flash serie externa. Un megabit (128 Kbytes) de memoria Flash serie puede contener aproximadamente 32 segundos de voz.
El diagrama de flujo mostrado en la Figura 1 resume los pasos que se han dado. Primero, la voz se guarda en un PC como un archivo WAV. Segundo, utilizando un programa de edición de sonido, el archivo de voz original se ajusta y se re-muestrea a 8000 Hz, y a continuación se guarda como un archivo mono en formato ‘little-endian’ de 16 bit sin firma. Tercero, se codifica el archivo utilizando el algoritmo ADPCM y se guarda como un archivo binario. Cuarto, se recopilan todos los archivos juntos en un sistema de archivos. Finalmente, se almacenan los archivos en un microcontrolador o en una memoria externa.
La Figura 2 muestra el hardware para este sistema. El microcontrolador dirige el archivo de voz para su reproducción desde memoria y decodifica el archivo utilizando el módulo PWM. La salida del módulo PWM se filtra en un filtro paso bajo con un paso de banda de 4000 Hz. La señal analógica resultante se puede amplificar y reproducir por medio de un altavoz.
Con un pequeño esfuerzo destinado a la grabación de voces, su codificación en formato ADPCM y su almacenamiento en la memoria, un proyecto embebido puede incorporar una voz natural. Pero esto no se acaba aquí. Dado que los archivos son meras grabaciones, también se pueden introducir tintineos, tonos o zumbidos. El único límite para mejorar la experiencia de usuario de un diseño embebido es la imaginación del ingeniero.
Nota: El nombre y el logo de Microchip, PIC y MPLAB son marcas registradas de Microchip Technology Inc. en EE.UU. y en otros países. Las restantes marcas citadas pertenecen a sus respectivas compañías.
Referencias:
Se puede encontrar una Nota de Aplicación de Microchip AN643, con código fuente para un algoritmo ADPCM simplificado, en: http://www.microchip.com/stellent/idcplg
?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011118

