TRABAJO COMPLEMENTARIO 1:
Laboratorio de Procesamiento Digital de Señales
Tema: IMPLEMENTACIÓN DE UN SISTEMA
DECODIFICADOR DE TONOS (DTMF) EMPLEANDO
HERRAMIENTAS SOFTWARE DE LIBRE
DISTRIBUCIÓN
Luis Ordoñez
1
Universidad de Cuenca Facultad de Ingeniería
2
Escuela de Electrónica y Telecomunicaciones
[email protected]
Abstract. In the present practice, the decoding of DTMF tones was developed
through a script made in the free software tool Octave. In addition to this, it is
important to note that we are also working with a Linux operating system, in this
case Ubuntu 20.04. This is the last version available to date. The capture of the
audio signal was generated from the cell phone keyboard and was captured by
means of the audio press tool, which is a Linux-compatible software that can be
executed from the cell phone terminal. It does not require a graphical environ-
ment and is a tool that allowed us to identify the so-nest card inputs and choose
the one of preference. For this practice we configured the microphone of a basic
Sckullcandy headset as input. Another option is that it allowed us to choose the
stereo recording mode to have better audio quality and a much more defined sig-
nal, to be able to perform the processes of transforming to frequency domain and
identify the frequencies that define each number and be able to display this infor-
mation in the command window. After this, the respective analysis of the whole
implementation and the results obtained is carried out.
Keywords: Decodificador DTMF, Software libre, pulse audio, Octave.
1 Introducción
2
Es muy importante poder realizar implantaciones en software libre, ya que hoy en
día la mayoría de las aplicaciones y programas que se diseñar en la comunidad tecno-
logía es en este tipo de entorno, con el objetivo de que más investigadores puedan con-
tribuir a desarrollos tecnológicos. A la vez que se asegure que todas estas herramientas
estén a disposición de todos, sin que el factor económico sea un limitante. Dentro de
estos entornos de software libre se destaca el sistema operativo Ubuntu, el cual es uno
de los más usados de Linux debido a sus múltiples prestaciones. De igual forma para el
desarrollo de scripts y por su gran compatibilidad con Matlab, otra herramienta funda-
mental es Octave el cual cuanta con varias librerías dirigidas a distintos campos de
proyectos. Y la gran diferencia con Matlab es que son gratis, lo cual nos impulsa a
desarrollar mayor cantidad de proyectos con una gran variedad de herramientas.
Dentro de los softwares que son compatibles con Linux en cuanto al tratamiento de
señales de audio se destaca pulse audio la cual ofrece una gran cantidad de paquetes
que realizan un manejo óptimo de señales de audio y recursos del computador que se
cuenta para el procesamiento de estas señales. No requiere de un entorno gráfico, para
su ejecución se la puede realizar a partir del terminal. Esta herramienta permite escoger
la tarjeta de audio con la que se requiere realizar la captura. También nos ofrece la
opción de escoger el tipo de grabación, ya sea mono recomendado para grabar voz o
estéreo para grabar música.
Es importante poder contar con una opción que nos ayude a suavizar la señal de
entrada, ya que como bien se conoce por más perfecto que se quiera realizar la captura
de sonido. Siempre va a existir ruido, ya sea por el ambiente o los dispositivos de gra-
bación entre otros muchos factores que hacen que la señal capturada no sea la misma.
Por lo cual un proceso que nos ayuda a este tratamiento de la señal es el filtro prome-
diado móvil, el cual ya fue utilizado en prácticas anteriores y se pudo comprobar la
efectividad del mismo en distintas señales y probando con diferentes tamaños de ven-
tana según las condiciones que presente las señales de entrada. A continuación se pre-
senta información teórica de los métodos de captura de audio en Linux, posterior a esto
se realiza la implementación y se destacan los resultados.
2 Marco Teórico
ADQUISICIÓN DE SEÑALES DE AUDIO EN LINUX
Octave
Cuenta una serie de funciones y comandos que permiten la adquisición, grabación,
reproducción y posterior procesamiento de señales de audio que a su vez tienen muchas
aplicaciones de entretenimiento, investigación, médicos, o cualquier otra área de la
ciencia que haga uso de estas señales.
3
Leer un archivo de audio a través del comando 'audioread' siguiendo la sintaxis:
>> [y, fs]=audioread('archivo.ogg');
y = señal.
fs = frecuencia de muestreo.
Crear y utilizar objetos de grabación de audio. Estos objetos se pueden utilizar para
grabar datos de audio de varios dispositivos disponibles para el sistema. Hay disponi-
bles métodos para bloquear y no bloquear la grabación, pausar y reanudar la grabación
entre otras funciones.
>> recorder = audiorecorder ()
>> recorder = audiorecorder (fs, nbits, channels)
>> recorder = audiorecorder (fs, nbits, channels, id)
Cree un objeto grabador de audio que grabe audio mono de 8 bits a una frecuencia de
muestreo de 8000 Hz.
fs = frecuencia de muestreo.
nbits = profundidad de bits.
canales = número de canales.
id = identificación del dispositivo de grabación.
PulseAudio
Es un servidor de sonido para Linux funciona como un proxy, lo que nos indica que
los sonidos de sus aplicaciones pasan por PulseAudio. Utiliza varias técnicas para ma-
nipular estos sonidos antes de que pueda escucharlos. Puede combinar sonidos de múl-
tiples fuentes. Adicional esto puede cambiar el formato de sonido, aumentar o disminuir
los canales de sonido. También enviar el sonido de una computadora a otra.
instalar PulseAudio
$ sudo apt instalar pulseaudio
identificar en la misma nuestros dispositivos de grabación.
$ pacmd list-sources | egrep '^\s+name: .*alsa_input'
Grabando el flujo de entrada de audio o micrófonos.
$ parecord --channels=1 -d stream_name nombre_de_archivo.wav
parecord: Estamos ordenando a PulseAudio que grabe.
4
channels: Forzamos que la grabación sea tipo mono o estéreo.
stream_name: Indicamos nuestro dispositivo de entrada o salida de audio.
nombre_de_archivo.wav: Nombre del archivo de audio resultante de la grabación
en formato .wav.
3 Desarrollo
Instalar Pulse Audio
Configuración del micrófono, en este caso el micrófono externo de un auricu-
lar. Se tiene que especificar en la ventana de configuraciones tanto la entrada
como la sensibilidad al sonido y realizar pruebas.
Fig. 1 Configuración micrófono externo
Identificar los dispositivos de grabación.
Ejecutar el comando de captura de mensaje, especificando el canal de audio
de entrada, el nombre del archivo así como su formato con el que se va a guar-
dar.
5
Fig. 2 Dispositivos de grabación y comando captura de audio.
Generar el tono mediante el teclado numérico del teléfono móvil, asegu-
rarse que se encuentre en máximo el volumen de salida del altavoz del dis-
positivo. Colocar el micrófono externo bastante cercano al altavoz, para
poder tener una buena captura de señal.
Fig. 3 Grabación del tono
Implementación del algoritmo que lee la señal capturada y guarda en un
arreglo las componentes junto con la frecuencia muestreada. Para luego re-
producirla. Además se realizó la implementación del filtro promediado mó-
vil con un tamaño de ventana que mejoro la señal de ingreso en base a las
distintas pruebas que se realizaron.
6
Fig. 4 Manejo de la señal capturada
Implementación de la trasformada rápida de Fourier, almacenarla en una
variable para poder graficarla. Además se definió las frecuencias específi-
cas de los tonos DTMF en un vector para poder aplicar el algoritmo de
Goertzel. Para pode identificar los dos pulsos característicos de la señal en
frecuencia y reconocer en a que frecuencias corresponden. Se gurdo estas
frecuencias en un vector, el primer pulso que detecte se va amostrar como
la frecuencia baja, y el segundo como la frecuencia alta.
Fig. 5 Aplicación del GGA y algoritmo de detección de frecuencias
Con las frecuencias perfectamente identificadas y almacenadas en una va-
riable se aplica el algoritmo de identificación del número en bases a sen-
tencias que tienen como parámetros las frecuencias de un sistema de tonos
DTMF regular. Y se muestran en pantalla la tecla pulsada.
7
Fig. 6 Identificador de tecla pulsada en base a las frecuencias detectadas
Generan las gráficas de la señal de audio captada, luego aplicada la trasfor-
mada de Fourier y por último de la trasformada aplicando el algoritmo de
Goertzel, para las frecuencias específicas.
Fig. 7 Graficas resultantes.
Mensajes en la pantalla de comandos con la identificación de las frecuen-
cias y la tecla pulsada.
8
Fig. 8 Resultado en pantalla.
4 Conclusiones
Por lo tanto con las gráficas resultantes se pudo evidenciar la presencia del ruido en las
señales capturadas mediante el micrófono externo, ya que comparando con las gráficas
de los tonos pregrabados con los que se realizó la practica 4. Se puedo notar evidente
la diferencia tanto en el dominio temporal como en el de frecuencia. En este caso existió
mucho rizado y varios puntos alrededor de la frecuencias específicas que nos interesa-
ban. Cabe recalcar que se hicieron pruebas con el micrófono interno de la computadora
y se obtuvo resultados aún peores, por lo cual se tomó la decisión de capturar la señal
con el micrófono externo, el cual estuvo a milímetros del altavoz del móvil, de esta
manera se captó de mejor forma la señal con un amplificación más óptima y con mayor
calidad que el primer caso mencionado. Por otra parte una herramienta que ayudo al
suavizado de la señal, eliminado de cierta manera una cantidad de ruido que se generó.
Fue el filtro promediado móvil el cual dio resultado y a partir de la señal de salida de
esta herramienta se aplicó las transformadas al domino temporal en forma general y en
las frecuencias específicas. De igual forma se desatada el algoritmo de Goertzel es fun-
damental en la detección de las frecuencias, ya que como se había mencionado existen
varios impulsos que rodean las frecuencias que se desean detectar en el diagrama de la
señal en frecuencias producto de ruido y otros apartados por ser unas señales con poco
procesamiento es decir no se pudo aplicar filtros que reduzcan el ruido debido a que
aún no se tiene el conocimiento para ello. Entonces con la función GGA una vez defi-
nidas las frecuencias se tiene la señal en frecuencia únicamente con los pulsos respec-
tivos. El software aplicado para la captura del audio también fue bastante efectivo para
realizar las capturas y realizar las operaciones desde el terminal sin necesidad de una
interfaz gráfica.
Referencias
[1] Yoyo Fernández, «Cómo grabar audio en Linux, entrada y salida, desde la Ter-
minal usando PulseAudio», Salmorejo Geek, jul. 22, 2017. https://salmore-
jogeek.com/2017/07/22/como-grabar-audio-en-linux-entrada-y-salida-desde-la-termi-
nal-usando-pulseaudio/ (accedido dic. 02, 2020).
9
[2] Xeleniumtec, «Matematicas del Audio: Leer/Escribir archivos de audio digi-
talizado en Matlab/Octave», Matematicas del Audio, feb. 16, 2016. http://audi-
omath.blogspot.com/2016/02/leerescribir-archivos-de-audio.html (accedido dic. 02,
2020).
[3] John W. Eaton, «GNU Octave: Audio Recorder». https://oc-
tave.org/doc/v4.2.1/Audio-Recorder.html#Audio-Recorder (accedido dic. 02, 2020).
[4] Shahriar Shovon, «How to Use PulseAudio to Manage Sounds on Ubuntu
18.04», 2018. https://linuxhint.com/pulse_audio_sounds_ubuntu/ (accedido dic. 02,
2020).