Path: blob/master/site/es-419/io/tutorials/audio.ipynb
38547 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.
Ver en TensorFlow.org
Ejecutar en Google Colab
Ver código fuente en GitHub
Descargar el bloc de notas