# Generacion de comandos de voz por medio del microcontrolador



## Donovan (Dic 4, 2005)

*DESCRIPCION DEL SISTEMA:*

Estoy trabajando en un * "sistema automático de atención al usuario", *similar al que ofrecen los operadores de celulares  o como el que ofrecen las empresas de "atención al usuario" a través de la línea telefónica, que brindan información a la persona que llama, oprimiendo las teclas que solicita el sistema mediante *MENSAJES DE VOZ* . 

El sistema utiliza un *celular receptor* empleado para contestar la llamada del usuario que desea conocer cierta información, y una vez establecida la comunicación con el usuario, el sistema *envia mensajes *que solicitan pulsar la tecla adecuada según sus deseos (por ejemplo: El sistema diría "estimado usuario pulse 1 si desea saber el estado de su cuenta bancaria o 2 si desea salir"). 

*INCONVENIENTES*

Estoy atorado en la parte que debe *enviar los mensajes de voz *(que deben estar previamente digitalizados y grabados como unos y ceros en una memoria), pues uso un *microcontrolador *que debe dirigir la *memoria sdCARD* donde estan guardados los comandos de voz digitalizados y un *conversor digital Analogo *para poder transmitir las señales de voz al usuario (lo hago mandando las señales al manos libres del celular receptor), y no se ni *DIGITALIZAR LA VOZ* ni encuentro el *CONVERSOR D/A ADECUADO *para que se escuchen adecuadamente los mensajes. 


Agradezco su participación y ayuda en este tema que es muy interesante!!!!


----------



## Rafael Martinez (Ene 9, 2006)

Pues la verdad yo tampoco se mucho del tema pero creo que todo depende del tipo de pic que utilizaras yo en la universidad queria hacer algo relacionado con sonido implementando pics pero no se si te funcionara, un amigo encontro información a cerca del tema talvez si te interesa se la puedo pedir o la puedes buscar creo que el proyecto era hacer un mp3 player implementado con pic y al parecer les habia funcionado lo puedes buscar por internet si lo deseas o si kieres le digo que me envie la información, y al respecto del dac que preguntas creo q eso depende del modelo de pic a implementar pues creo que hay unos pic que ya traen incorporado un dac para esos propositos que tu kieres yo nunca los he utilizado como tal unicamente estoy trabajando en el dac pero de otro microcontrolador de hitachi. bueno espero captes este mensaje  saludos...

tmk


----------



## Donovan (Ene 15, 2006)

*Me gustaria mucho compartir la información que tienes del proyecto. *Estoy intentando desarrollar este proyecto, pero nada que puedo con la grabada de los datos digitalizados en una memoria SD card u otra (pues la del PIC es muy pequeña para ello). Cualquier luz acerca del proyecto me ayudaría mucho.


Te agradezco de antemano, tu ayuda...... gracias


----------



## Betomelo (Ene 23, 2006)

HOla.
Yo realize algo asi como un "Diccionario de Voz" con un microcontrolador de Hitachi que relativamente tenia bastante memoria por lo que los comandos de voz se podial almacenar directamente en el micro, ademas este poseia un conversor D/A integrad.

Sinembargo hay varias alternativas para realizar esto si no se tiene un hardware como el anterior, ademas hay varios puntos por resolver.

1 - Digitalizacion de la señal de audio.

La forma mas facil para no rompernos la cabeza al utilizar voz, es no comprimirla. Para digitalizar la voz que vas a introducir a un micrcontrolador, podrias utilizar un archivo WAV, comun grabado en un pc. pero este tiene el inconveniente que tiene una cabecera, y otra cierta información que podrian hacer que suene "raro". Estoy seguro que en internet deben existir programas para tomar un archivo WAV y convertirlo en un archivo tipo RAW (datos de audio puros, sin cabeceras ni otra información). yo personalmente hice un pequeño programa para que me hiciera esto, si estas interesado con gusto te lo facilito.

2 - Para la conversion Digital a Analoga, puedes utilizar un simple conversor R-2R hecho con resistencias y al final le agregas un  amplificador operacional.

De todas formas si quieres información mas especifica, necesitaria mas información acerca del micro usado, pines, conexiones, diagraba de bloques, etc


----------



## maunix (Ene 23, 2006)

Asi es, un formato no comprimido debiera funcionar bien.  En muchas ocasiones si la velocidad de sampleo es rapida se puede incluso digitalizar con sigma delta de 1 bit lo cual en algunos casos puede redundar en un audio más que aceptable.  No hice pruebas con grabaciones para luego ser oídas por teléfono pero sí con audio grabado de un discman y funcionó bien, al menos el sonido era bueno y se entendía.

En cuanto a la analogización de la salida digital, no hay que olvidarse que el audio necesita una referencia sobre la cual oscilar.  Es por eso que deberás eliminar el punto medio de continua, un simple capacitor en serie funciona para esto y luego podrias amplificar el audio con técnicas clásicas con amplificador clase A.


----------



## Mario Alejandro (Abr 3, 2006)

Yo estoy trabajando en algo parecido pero en otra marca de telefono en la linea de SONY ERICCSON T62U  de los cuales dispongo los comandos at si a alguien le interesa me avisa y os mando yo necesito algo de comandos At de motorola C236 alguien tiene algo ??


----------



## EinSoldiatGott (Abr 3, 2006)

Donovan dijo:
			
		

> *DESCRIPCION DEL SISTEMA:*
> 
> Estoy trabajando en un * "sistema automático de atención al usuario", *similar al que ofrecen los operadores de celulares  o como el que ofrecen las empresas de "atención al usuario" a través de la línea telefónica, que brindan información a la persona que llama, oprimiendo las teclas que solicita el sistema mediante *MENSAJES DE VOZ* .
> 
> ...



Bueno tal vez este le sirva, permite grabar 60 segundos de voz en varios mensajes es el APR9600

Saludos


----------



## eduardo.bonilla (Abr 4, 2006)

Hola Donovan,

Respondiendo a:


			
				Donovan dijo:
			
		

> *DESCRIPCION DEL SISTEMA:*
> 
> *INCONVENIENTES*
> 
> ...



Para digitalizar las señales de voz puedes utilizar cualquier convertidor análogo Digital con una frecuencia de muestreo mayor a 8Khz para que no se distorsione tanto la voz.  Si quieres utilizar señales de mejor calidad te recomiendo que utilices frecuencias de sampleo de 44.1 Khz o 48Khz que son las que normalment son utilizadas en las computadoras y las señales digitales de los CD players.   Pero con 8Khyz tienes suficiente.

Ahora para poder escuchar la señal que digitalizas en una computadora es necesario hacer conversiones de las señales directamente adquiridas por un conversor análogo digital a una señal que pueda leer la computadora (no necesariamente comprimida) como WAV.  El ADC no te da direcamente una señal que pueda interpretar la computadora como de sonido, generalmente tienes que cambiar los datos directos del ADC a codificación por pulsos como PCM o un derivado.

Para mayor información del formato wav te paso las ligas:
http://www.monografias.com/trabajos7/sodi/sodi.shtml
http://www.borg.com/~jglatt/tech/wave.htm

Puedes utilizar también un codec de audio para que puedas hacer la conversión de las señales del ADC a señales de audio, si optas por hacer esto te recomiendo el chip de bajo costo:
UDA1345TS
Con el codec de audio ya puedes controlar direcamente la adquisición de datos a formato de sonido.

Pero en teoría debes poder hacer una adquisición de datos por el ADC y si la señal la sacas igal que como la lees por el DAC debes poder escuchar el sonido.


----------



## EinSoldiatGott (Abr 4, 2006)

eduardo.bonilla dijo:
			
		

> Hola Donovan,
> 
> Respondiendo a:
> 
> ...



Me interesó eso de reproducir voz, pero no estoy seguro de haber entendido bien. Se me ocurre hacerlo de esta manera.

1.- Con un conversor a/d de unos 5 bits, almaceno los datos de la voz en el PC, con algún programilla que lea el puerto paralelo y grabe el dato que tiene, pero a que frecuencia debo hacerlo????
2.-Ya con todos los datos almacenados, hago mi programa en ensamblador, diciéndole que dato poner en la salida con la misma frecuencia de adquisición.
3.-A las salidas del pic que deben ser 5, pongo un conversor d/a y ya tengo la voz???

Además me surgen las siguientes dudas
*Se me hace que será bastante tardado, estar copiendo dato por dato, no hay otra manera más eficiente??
*por que debe ser en .wav???
*en mi caso que pienso grabar mis propis sonidos desde un micrófono ya amplificado, si podré o deberé pasarlo a wav en la pc???

Saludos y gracias


----------



## eduardo.bonilla (Abr 6, 2006)

> Me interesó eso de reproducir voz, pero no estoy seguro de haber entendido bien. Se me ocurre hacerlo de esta manera.
> 
> 1.- Con un conversor a/d de unos 5 bits, almaceno los datos de la voz en el PC, con algún programilla que lea el puerto paralelo y grabe el dato que tiene, pero a que frecuencia debo hacerlo????



Puedes utilizar el conversor de a/d de 5 bits, pero la calidad de señal se va a reducir notablemente.  Generalmente se utilizan más de 8-bits para no perder tantos datos de la señal de voz en la discretización.   Sí puedes crear un programa para grabar el dato, recuerda que el conversor A/D debe poder enviar los datos a mayor frecuencia de 8Khz.   Si vas a grabar señales de voz solamente, te recomiendo 8Khz, si vas a grabar sonidos y música debes utilizar frecuencias de 44.1Khz básicamente.  Recuerda de sincronizar la salida de los datos en el puerto paralelo con el algún bit de "dato disponible" o algo así para que no encuentres errores de sincronización entre la PC y el conversor A/D.  Vas a ocupar mucha memoria para guardar todos los datos.



> 2.-Ya con todos los datos almacenados, hago mi programa en ensamblador, diciéndole que dato poner en la salida con la misma frecuencia de adquisición.


Una vez que lo obtienes de los datos por el puerto paralelo de la señal, debes almacenarlos en el mismo órden que entraron.   La frecuencia que utilizarías en la salida sería igual que la que utilizastes en la entrada de datos.  Te recomiendo que cuando tengas los datos de voz en la PC los gráfiques y debes tener una señal de voz limpia.  



> 3.-A las salidas del pic que deben ser 5, pongo un conversor d/a y ya tengo la voz???


Si le pones un conversor D/A a la misma frecuencia en la que capturastes los datos, vas a tener una señal de voz.   Recuerda que luego que tienes la señal de audio debes amplificarla para escucharla en las bocinas.  Generalmente los amplificador de audio reciben de entrada máximo 1Vrms, por lo que debes verificar que el converso D/A te entregue 1Vrms en la salida si piensas utilizar un amplificador comercial (cómo las bocinas portátiles).



> Además me surgen las siguientes dudas
> *Se me hace que será bastante tardado, estar copiendo dato por dato, no hay otra manera más eficiente??


Exactamente por ésto existen los codificadores de audio.  Los codificadores de audio convierten los datos A/D a en diferentes señales que reducen el tamaño de los datos y por lo tanto la memoria.  Así el tiempo de procesamiento también se reduce.



> *por que debe ser en .wav???


No necesariamente tiene que ser formato .wav, existen muchísimos tipos de formato, pero el formato wav es el más difundido y por lo tanto sería más fácil encontrar programas que puedan reproducir tus sonidos e inclusive convertirlos a otro tipo de formato como el MP3 u otros.



> *en mi caso que pienso grabar mis propis sonidos desde un micrófono ya amplificado, si podré o deberé pasarlo a wav en la pc???



Saludos


----------



## nietzche (Feb 20, 2011)

llegue muy tarde para comentar que para sacar audio de un microcontrolador es tan sencillo sacarlo por PWM y pasarle un filtro pasabajas y despues amplificarlo


----------

