Path: blob/master/site/es-419/io/tutorials/audio.ipynb
25118 views
Copyright 2020 The TensorFlow IO Authors.
Preparación y aumento de datos de audio
Descripción general
Uno de los mayores desafíos del reconocimiento automático de voz es la preparación y el aumento de datos de audio. El análisis de datos de audio puede realizarse en el dominio del tiempo o de la frecuencia, lo que agrega más complejidad en comparación con otras fuentes de datos, como las imágenes.
Como parte del ecosistema TensorFlow, el paquete tensorflow-io
proporciona bastantes API útiles relacionadas con el audio que ayudan a facilitar la preparación y el aumento de datos de audio.
Preparación
Instale los paquetes necesarios y reinicie el tiempo de ejecución
Uso
Leer un archivo de audio
En TensorFlow IO, la clase tfio.audio.AudioIOTensor
le permite leer un archivo de audio en un IOTensor
con carga diferida:
En el ejemplo anterior, el archivo Flac brooklyn.flac
proviene de un clip de audio de acceso público en Google Cloud.
La dirección de GCS gs://cloud-samples-tests/speech/brooklyn.flac
se usa directamente porque GCS es un sistema de archivos compatible con TensorFlow. Además del formato Flac
, AudioIOTensor
también admite WAV
, Ogg
, MP3
y MP4A
con detección automática de formato de archivo.
AudioIOTensor
tiene carga diferida, por lo que inicialmente solo se muestran la forma, el dtype y la frecuencia de muestreo. La forma del AudioIOTensor
se representa como [samples, channels]
, lo que significa que el clip de audio que usted cargó es un canal mono con 28979
muestras en int16
.
El contenido del clip de audio solo se leerá según sea necesario, ya sea convirtiendo AudioIOTensor
en Tensor
mediante to_tensor()
o mediante segmentación. La segmentación es especialmente útil cuando sólo se necesita una pequeña porción de un clip de audio grande:
El audio se puede reproducir a través de:
Es más conveniente convertir el tensor en números flotantes y mostrar el clip de audio en un gráfico:
Recorte el ruido
A veces tiene sentido recortar el ruido del audio, lo que se puede hacer mediante la API tfio.audio.trim
. La API devuelve un par de posiciones [start, stop]
del segmento:
Fundido de entrada y de salida
Una técnica útil de ingeniería de audio es el fundido, que aumenta o disminuye gradualmente las señales de audio. Esto se puede hacer a través de tfio.audio.fade
. tfio.audio.fade
admite diferentes formas de fundido, como linear
, logarithmic
o exponential
:
Espectrograma
El procesamiento avanzado de audio suele funcionar con cambios de frecuencia en un lapso tiempo. En tensorflow-io
una forma de onda se puede convertir en espectrograma a través de tfio.audio.spectrogram
:
También es posible realizar transformaciones adicionales a diferentes escalas:
SpecAugment
Además de las API de aumento y preparación de datos mencionadas anteriormente, el paquete tensorflow-io
también proporciona aumentos de espectrograma avanzados, en particular el enmascaramiento de frecuencia y tiempo que se analiza en SpecAugment: un método simple de aumento de datos para el reconocimiento automático de voz (Park et al., 2019).
Enmascaramiento de frecuencia
En el enmascaramiento de frecuencia, los canales de frecuencia [f0, f0 + f)
están enmascarados donde f
se elige de una distribución uniforme de 0
para el parámetro de máscara de frecuencia F
, y f0
se elige de (0, ν − f)
donde ν
es la cantidad de canales de frecuencia.
Enmascaramiento de tiempo
En el enmascaramiento de tiempo, se enmascaran t
pasos de tiempo consecutivos [t0, t0 + t)
donde t
se elige de una distribución uniforme de 0
para el parámetro de máscara de tiempo T
, y t0
se elige de [0, τ − t)
donde τ
es los pasos de tiempo.