Discusiones sobre Productos NI

cancel
Showing results for 
Search instead for 
Did you mean: 

Detector de Tonos telefónicos

Highlighted
Hola a Todos.
 
Quiero hacer un identificador de Tonos Telefónicos desde una secuaencia *.wav, la cual contiene el sonido de los tonos. Lo de la adquisición de la secuencia ya fue solucionado, pero ¿cámo puedo hacer para elegir adecuadamente los tonos en el dominio del Tiempo?. De lograr esto ya es posible identificar los dos tonos que representan cada tecla del teléfono usando FFT y comparaciones.
 
Gracias.
 
0 Kudos
Message 1 of 10
(7,202 Views)
Hola,
 
Me gustaría saber si entendi lo que estas haciendo y lo que necesitas, me imagino que grabaste los tonos de un telefono en un archivo *.wav, despues de eso obtienes un arreglo de datos con los VI's de manejo de archivos de sonido de LabVIEW, una vez realizado esto aplicas FFT y obtienes los picos de las amplitudes en el dominio de la frecuencia, por lo cual esta no te indica el orden en el que ocurrieron los tonos, solo te marca la frecuencia de los mismos y los puedes identificar.
 
Por lo tanto, creo que una posible solución es que si los tonos que estas utilizando tienen un mismo valor aproximado de tiempo (duración del tono), es decir, suponemos que en una sola secuencia son 8 tonos y el arreglo de datos total que representa los 8 tonos es de 8000 puntos, cada 1000 valores representa un lapso de tono, de tal manera que los podrías analizar de manera independiente tomando cierta parte del arreglo (te recomiendo utilizar el VI "Array Subset") y asi conocer el orden de ejecución de los mismos.
 
Espero que esto te sirva de ayuda, en caso de que sigas teniendo problemas te recomendaría que agregaras a tu post el archivo *.wav y más datos que permitan saber sobre tu problema, así como datos básicos como el lengujae de programación que estas utilizando (inferí que era LabVIEW) y la versión del mismo.
 
Saludos,
Luis Trujillo
NI
0 Kudos
Message 2 of 10
(7,179 Views)

Hola.

Gracias por responder mi mensaje. Hice jústamente lo que me escribiste usando el LabVIEW 8.0 y logré extraer para el número 3317445 la siguente cadena de caracteres:

____________________333______333____#111_____77____444______44____55___________

Obviamente los "_" se consideran espacios de silencio o información trivial. Los conjuntos de números repetidos representan a uno de los dígitos de la secuencia y ese caracter "#" que se coló en el "1" es seguramente un tono colado en el momento de partir el conjunto de muestras en grupos de 40ms (que es el mínimo tiempo para la identificación de un tono DTMF)... Ahora mi problema es ¿cómo puedo hacer para que esa cadena se reduzca a 3-3-1-7-4-4-5 ?... estoy que me rompo la cabeza y no logro encontrar la solución.

Gracias

0 Kudos
Message 3 of 10
(7,145 Views)

Hola,

La verdad nos resulta díficil ayudarte de esta manera, creo que necesitas mandar el código y tu archivo *.wav para verificar que estas haciendo, a simple vista creo que el problema esta en tu asignación de parametros, es decir, cuando asignas un ascii a tu tono, creo que lo haces a sin dar las pautas necesarias.

En caso de que no puedas (por causas de fuerza mayor) poner tu código en el foro, te recomiendo mandarlo por correo a soporte técnico de NI (ni.com/soporte), no olvides poner el número de servicio de tu caso en el título (SR 852435) para saber de que se trata y pueda ser asignado correcatemente, si es posible lo ideal sería que dejaras el programa en el foro, ya que la idea es que el foro sirva de ayuda a más gente, en caso de que lo hagas de esta manera yo subiré al foro cualquier corrección del mismo. Recuerda que estamos para ayudarte y espero que nos mandes tu código para proporcionarte una solución de una manera más agil.

Saludos,

L Trujillo

AE, NI

0 Kudos
Message 4 of 10
(7,120 Views)
Hola.
 
Aquí envío mi software de Tonos DTMF hacho en LabVIEW 8.0. Consta de 2 librerias adicionales.
Nos vemos.
0 Kudos
Message 5 of 10
(7,110 Views)
Hola,
 
La verdad no encuentro cual es el problema con su VI, de acuerdo a los archivos *.wav el programa funciona a la perfección, excepto por el primero, el cual no puede ser reconocido debido a la gran cantidad de ruido, le recomiendo filtrar el ruido de la señal antes de proceder al reconocimiento de tonos.
 
¿Usted al correr su VI con estos mismos archivos tiene el problema que describió anteriormente? Si el problema lo tiene con otro archivo wav diferente a estos, le pido por favor mandarlo.
 
Saludos,
L Trujillo

Mensaje editado por ltrujill

0 Kudos
Message 6 of 10
(7,085 Views)

Hola,

Hice pruebas con otro archivo (*.wav) diferente y creo que encontré un problema, dentro del VI "Char Aconditionator", le hice una pequeña modificación en la parte final, en la cual pregunta por una "x" para salir del ciclo y en algunas ocasiones se esta brincando y por eso no sale del ciclo infinito. Voy a analizar el código detenidamente y le mantendré informado.

Saludos,

L Trujillo

NI

0 Kudos
Message 7 of 10
(7,078 Views)
Hola.
 
Muchas Gracias por hacer el análisis. He tenido ese mismo problema pero no se ya que hacer, ya que no se me ocurre nada para solucionarlo.
 
Gracias de nuevo. 
0 Kudos
Message 8 of 10
(7,074 Views)
Hola, perdón por el retraso en la respuesta, la verdad es que su código es bastante bueno, y las modificaciones realizadas fueron mínimas (solo en el "Char Aconditionator.VI"), realicé pruebas con diferentes archivos de sonido y al parecer trabaja bien con todos, le pido por favor verifique esto, le agradecería que me informara si no está correcto y también sería bueno saber si esto le funcionó.
0 Kudos
Message 9 of 10
(7,000 Views)

Hola.

Muchas Gracias. Me han sacado de un lio que tenia durante una semana. Mi compañero está haciendole otras pruebas y parece que está mejor que antes. Me he dado cuenta que el manejo de cadenas de caracteres ( abc ) no es mi fuerte. Smiley Wink

Nuevamete muchas gracias.

Les escribo pronto. Hasta luego.

0 Kudos
Message 10 of 10
(6,966 Views)