Reduzca el impacto del ruido gaussiano en el decodificador DTMF

1

Tengo un código Matlab para decodificar dígitos de un archivo de audio DTMF determinado (formato wav). Si consideramos que la señal de entrada tiene la forma de x (n) + αv (n), donde x (n) es la señal sin ruido (es decir, el archivo de audio DTMF dado), v (n) es ruido gaussiano blanco y α es una constante que controla la cantidad de ruido que se agrega, a continuación se muestra el diagrama de bloques de mi código:

Elalgoritmodemidecodificadorfuncionabastantebien,peromepidieronquepropusieraideasparamejoraraúnmásmialgoritmo.¿Cómopuedoreducirelimpactodelruido?Estabapensandoenenviarmiseñaldeentradaaotrobloque(quesemuestraencolorROJOacontinuación)antesdeenviarloaldecodificador.

Peronosécómolograreso.¿Alguienpuedeayudarenestoporfavor?

(TengaencuentaquenotengoningunadelascajasdeherramientasdeMatlabinstaladasenmimáquina.Porlotanto,cualquiersugerenciadeberíapoderimplementarseconloscomandosnativosdeMatlab)

Sisenecesitaelalgoritmodedecodificaciónpararesponderaestapregunta,hepublicadounacopiadeél aquí .

    
pregunta Kaiko

2 respuestas

0

Parte de tu problema es la FFT.

Dado que las bandejas de la FFT no se alinearán perfectamente con las frecuencias DTMF, algunos de los tonos no se detectarán correctamente ya que se "mancharán" en dos o más bandejas (no se menciona la velocidad de muestreo o el tamaño de su FFT, así que no puedo decir con seguridad qué tamaños de contenedores tendrá.)

Puede mejorar la separación de frecuencia utilizando bloques FFT más largos, pero luego el tiempo de retardo aumenta. Los bloques más largos también ayudarán con el ruido, pero si los bloques son demasiado largos, entonces no se detectarán señales DTMF cortas (demasiado cortas). Puede evitarlo utilizando superposición en sus bloques.

También hay muchas otras cosas que podrías hacer. Dado que la decodificación DTMF es un campo antiguo y bien investigado, puede comenzar por ver cómo se ha hecho en el pasado. También debe diseñar un método confiable para determinar la confiabilidad de sus métodos. Busque el término "relación señal / ruido".

Los antiguos decodificadores DTMF basados en microprocesadores utilizaron el Goertzel algorithm / > que es un método para calcular la transformada de Fourier a una frecuencia específica. Use un puñado de ellas con las frecuencias adecuadas y vea qué tipo de rendimiento obtiene.

Los decodificadores DTMF más antiguos sin microprocesadores utilizaron un banco de filtros y luego detectaron la amplitud en la salida de cada filtro.

En cualquier caso, tu primer paso debería ser ir a la biblioteca (o google) y ver lo que se ha hecho en el pasado.

    
respondido por el JRE
1

Una forma de reducir el efecto del ruido es reducir el ancho de banda, ya sea la detección previa o promediando después de la detección.

El módulo que ha dibujado está antes de la detección, por lo que sería mediante la adición de un filtro de banda estrecha en cada uno de los 7 tonos DTMF que luego se recombinan en una sola señal del decodificador DTMF, o le dan a cada tono su propio decodificador.

El ancho del filtro dependerá de cuánto tiempo estén presentes los tonos en la señal original.

Puede haber algún parámetro del decodificador DTMF que se pueda ajustar para optimizarlo para que coincida con la longitud de la señal entrante. Sin embargo, en algún momento no podrá mejorar la respuesta.

También puede poner promedios después del decodificador DTMF para requerir que una señal esté presente durante un tiempo definido antes de que se muestre.

    
respondido por el Kevin White

Lea otras preguntas en las etiquetas