Path: blob/master/site/pt-br/io/tutorials/audio.ipynb
25118 views
Copyright 2020 The TensorFlow IO Authors.
Preparação e ampliação de dados de áudio
Visão geral
Um dos maiores desafios no Reconhecimento de Fala Automático é a preparação e ampliação dos dados de áudio. A análise dos dados de áudio pode ser feita no domínio de tempo ou frequência, o que traz uma complexidade adicional em comparação a outras fontes de dados, como imagens.
Como parte do ecossistema do TensorFlow, o pacote tensorflow-io
conta com algumas APIs relacionadas a áudio bastante úteis, que ajudam a preparar e ampliar os dados de áudio.
Configuração
Instale os pacotes necessários e reinicie o runtime
Uso
Leia um arquivo de áudio
No TensorFlow IO, a classe tfio.audio.AudioIOTensor
permite ler um arquivo de áudio em um IOTensor
carregado de forma lazy (postergada):
No exemplo acima, o arquivo brooklyn.flac
vem de um clipe de áudio acessível publicamente no Google Cloud.
O endereço gs://cloud-samples-tests/speech/brooklyn.flac
do GCS é usado diretamente porque o GSC é um sistema de arquivo compatível com o TensorFlow. Além do formato Flac
, os formatos WAV
, Ogg
, MP3
e MP4A
também são compatíveis com AudioIOTensor
com detecção automática do formato de arquivo.
AudioIOTensor
é carregado de maneira lazy, então somente o formato, o dtype e a taxa de amostragem são exibidos inicialmente. O formato do AudioIOTensor
é representado como [samples, channels]
(amostras, canais), ou seja, o clipe de áudio carregado tem um canal, com 28979
amostras int16
.
O conteúdo do clipe de áudio só será lido conforme necessário, seja convertendo AudioIOTensor
em um Tensor
por meio de to_tensor()
, seja recortando. O recorte é especialmente útil quando somente uma pequena parte de um clipe de áudio grande é necessário.
O áudio pode ser reproduzido da seguinte forma:
É mais conveniente converter o tensor em números de ponto flutuante e exibir o clipe de áudio em um grafo:
Retire o ruído
Às vezes, pode fazer sentido retirar o ruído do áudio, o que pode ser feito usando a API tfio.audio.trim
. A API retorna um par de posição [start, stop]
(início, fim) do segmento:
Desvanecimento de início e fim
Uma técnica de engenharia de áudio muito útil é o desvanecimento, que aumenta ou diminui gradualmente os sinais de áudio. Isso pode ser feito usando tfio.audio.fade
. tfio.audio.fade
conta com diferentes formatos de desvanecimento, como linear
, logarithmic
(logarítmico) ou exponential
(exponencial):
Espectrograma
O processamento avançado de áudio costuma funcionar com alterações de frequência ao longo do tempo. No tensorflow-io
, uma forma de onda pode ser convertida em um espectrograma por meio de tfio.audio.spectrogram
:
Também é possível transformar em diferentes escalas:
SpecAugment
Além das APIs de preparação e ampliação de dados mencionadas acima, o pacote tensorflow-io
também conta com ampliações avançadas de espectrograma, principalmente Mascaramento de Frequência e Mascaramento de Tempo discutidas em SpecAugment: Um método simples de ampliação de dados para Reconhecimento de Fala Automático (Park et al., 2019).
Mascaramento de Frequência
No mascaramento de frequência, os canais de frequência [f0, f0 + f)
são mascarados, em que f
é escolhido em uma distribuição uniforme de 0
até o parâmetro de máscara de frequência F
, e f0
é escolhido no intervalo (0, ν − f)
em que ν
é o número de canais de frequência.
Mascaramento de Tempo
No mascaramento de tempo, t
passos de tempo consecutivos [t0, t0 + t)
são mascarados, em que t
é escolhido em uma distribuição uniforme de 0
até o parâmetro de máscara de tempo T
, e t0
é escolhido no intervalo [0, τ − t)
, em que τ
são os passos de tempo.