Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Detectar eventos de áudio com o Amazon Rekognition

Quando a maioria das pessoas pensa em usar aprendizado de máquina (ML) com dados de áudio, o caso de uso que geralmente vem à mente é transcrição, também conhecido como fala para texto. No entanto, existem outros aplicativos úteis, incluindo o uso de ML para detectar sons.

O uso de software para detectar um som é chamado detecção de eventos de áudio, e tem uma série de aplicações. Por exemplo, suponha que você queira monitorar os sons de um chão de fábrica barulhento, ouvindo uma campainha de alarme que indica um problema com uma máquina. Em um ambiente de saúde, você pode usar a detecção de eventos de áudio para ouvir passivamente os sons de um paciente que indicam um problema de saúde agudo. As cargas de trabalho da mídia são uma boa opção para essa técnica, por exemplo, para detectar quando o apito de um árbitro é tocado em um vídeo esportivo. E, claro, você pode usar essa técnica em uma variedade de cargas de trabalho de vigilância, como ouvir um tiro ou o som de um acidente de carro de um microfone montado acima de uma rua da cidade.

Este post descreve como detectar sons em um arquivo de áudio, mesmo se houver sons de fundo significativos acontecendo ao mesmo tempo. Além disso, talvez surpreendentemente, usamos técnicas baseadas em visão computacional para fazer a detecção, usando Reconhecimento da Amazônia.

Usando dados de áudio com aprendizado de máquina

A primeira etapa na detecção de eventos de áudio é entender como os dados de áudio são representados. Para os propósitos deste post, lidamos apenas com áudio gravado, embora essas técnicas funcionem com streaming de áudio.

O áudio gravado é normalmente armazenado como uma sequência de amostras de som, que medem a intensidade das ondas sonoras que atingiram o microfone durante a gravação, ao longo do tempo. Há uma grande variedade de formatos para armazenar essas amostras, mas uma abordagem comum é armazenar 10,000, 20,000 ou até 40,000 amostras por segundo, com cada amostra sendo um inteiro de 0 a 65535 (dois bytes). Como cada amostra mede apenas a intensidade das ondas sonoras em um determinado momento, os dados sonoros geralmente não são úteis para processos de ML porque não possuem recursos úteis em seu estado bruto.

Para tornar esses dados úteis, a amostra de som é convertida em uma imagem chamada espectrograma, que é uma representação dos dados de áudio que mostra a intensidade de diferentes bandas de frequência ao longo do tempo. A imagem a seguir mostra um exemplo.

O eixo X desta imagem representa o tempo, o que significa que a borda esquerda da imagem é o início do som e a borda direita da imagem é o fim. Cada coluna de dados dentro da imagem representa diferentes bandas de frequência (indicadas pela escala no lado esquerdo da imagem), e a cor em cada ponto representa a intensidade dessa frequência naquele momento.

A escala vertical para espectrogramas pode ser alterada para outras representações. Por exemplo, a escala linear significa que o eixo Y é dividido uniformemente pelas frequências, a escala logarítmica usa uma escala logarítmica e assim por diante. O problema de usar essas representações é que as frequências em um arquivo de som geralmente não são distribuídas uniformemente, então a maioria das informações em que podemos estar interessados ​​acaba sendo agrupada perto da parte inferior da imagem (as frequências mais baixas).

Para resolver esse problema, nossa imagem de exemplo é um exemplo de Espectrograma Mel, que é dimensionado para aproximar de perto como os seres humanos percebem o som. Observe os indicadores de frequência ao longo do lado esquerdo da imagem - eles dão uma ideia de como estão distribuídos verticalmente e fica claro que é uma escala não linear.

Além disso, podemos modificar a medição de intensidade por frequência por tempo para aprimorar vários recursos do áudio que está sendo medido. Assim como a escala do eixo Y que é implementada por um espectrograma Mel, outros enfatizam características como a intensidade das 12 classes de alturas distintas que são usadas para estudar música (croma). Outra classe enfatiza traços horizontais (harmônicos) ou traços verticais (percussivos). O tipo de som que está sendo detectado deve direcionar o tipo de espectrograma usado para o sistema de detecção.

O espectrograma de exemplo anterior representa um clipe de música com pouco mais de 2 minutos. A ampliação revela mais detalhes, como mostrado na imagem a seguir.

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Os números na parte superior da imagem mostram o número de segundos desde o início do arquivo de áudio. Você pode ver claramente uma sequência de sons que parece se repetir mais de quatro vezes por segundo, indicada pelas cores brilhantes perto da parte inferior da imagem.

Como você pode ver, esse é um dos benefícios de converter áudio em um espectrograma – sons distintos geralmente são facilmente visíveis a olho nu e, mesmo que não sejam, podem ser detectados com frequência usando algoritmos de detecção de objetos de visão computacional. Na verdade, este é exatamente o processo que seguimos para detectar sons.

Procurando por sons discretos em um espectrograma

Dependendo da duração do arquivo de áudio que estamos procurando, encontrar um som discreto que dure apenas um ou dois segundos é um desafio. Consulte o primeiro espectrograma que compartilhamos - porque estamos visualizando 3:30 minutos inteiros de dados, detalhes que duram apenas um segundo ou mais não são visíveis. Demos um grande zoom para ver o ritmo que é mostrado na segunda imagem. Claramente, com arquivos de som maiores (e, portanto, espectrogramas muito maiores), rapidamente nos deparamos com problemas, a menos que usemos uma abordagem diferente. Essa abordagem é chamada janela.

Windowing refere-se ao uso de uma janela deslizante que se move por todo o espectrograma, isolando alguns segundos (ou menos) de cada vez. Ao isolar repetidamente partes da imagem geral, obtemos imagens menores que são pesquisáveis ​​para detectar a presença do som. Como cada janela pode resultar em apenas parte da imagem que estamos procurando (como no caso de procurar um som que não começa exatamente no início de uma janela), o windowing geralmente é executado com as janelas sucessivas sendo sobrepostas. Por exemplo, a primeira janela começa às 0:00 e se estende por 2 segundos, a segunda janela começa às 0:01 e se estende por 2 segundos, e a terceira janela começa às 0:02 e se estende por 2 segundos e assim por diante.

A janela divide uma imagem de espectrograma horizontalmente. Podemos melhorar a eficácia do processo de detecção isolando certas bandas de frequência cortando ou pesquisando apenas certas partes verticais da imagem. Por exemplo, se você sabe que a campainha de alarme que deseja detectar cria sons que variam de uma frequência específica para outra, você pode modificar a janela atual para considerar apenas essas faixas de frequência. Isso reduz muito a quantidade de dados a serem manipulados e resulta em uma pesquisa muito mais rápida. Também melhora a precisão, pois elimina possíveis correspondências de falsos positivos que ocorrem em bandas de frequência fora da faixa desejada. As imagens a seguir comparam um eixo Y completo (esquerda) com um eixo Y limitado (direita).

Eixo Y completo

Eixo Y completo

Eixo Y limitado

Eixo Y limitado

Agora que sabemos como iterar em um espectrograma com uma abordagem de janela e filtrar para determinadas bandas de frequência, o próximo passo é fazer a busca real pelo som. Para isso, usamos Rótulos personalizados do Amazon Rekognition. O recurso Rekognition Custom Labels baseia-se nos recursos existentes do Amazon Rekognition, que já é treinado em dezenas de milhões de imagens em várias categorias. Em vez de milhares de imagens, basta fazer upload de um pequeno conjunto de imagens de treinamento (normalmente algumas centenas de imagens, mas o tamanho ideal do conjunto de dados de treinamento deve ser obtido experimentalmente com base no caso de uso específico para evitar o treinamento insuficiente ou excessivo do modelo ) que são específicos para seu caso de uso por meio do console Rekognition Custom Labels.

Se suas imagens já estiverem rotuladas, o treinamento do Amazon Rekognition pode ser acessado com apenas alguns cliques. Como alternativa, você pode rotular as imagens diretamente na interface de rotulagem do Amazon Rekognition ou usar Verdade no solo do Amazon SageMaker para rotulá-los para você. Quando o Amazon Rekognition começa a treinar com seu conjunto de imagens, ele produz um modelo de análise de imagem personalizado para você em apenas algumas horas. Nos bastidores, o Rekognition Custom Labels carrega e inspeciona automaticamente os dados de treinamento, seleciona os algoritmos de ML corretos, treina um modelo e fornece métricas de desempenho do modelo. Você pode então usar seu modelo personalizado através do API de rótulos personalizados do Rekognition e integrá-lo em seus aplicativos.

Montando dados de treinamento e treinando um modelo de rótulos personalizados do Rekognition

No Repo GitHub associado a esta postagem, você encontrará um código que mostra como ouvir o som de um alarme de fumaça disparando, independentemente do ruído de fundo. Nesse caso, nosso modelo Rekognition Custom Labels é um modelo de classificação binária, o que significa que os resultados são "o som do alarme de fumaça foi detectado" ou "o som do alarme de fumaça não foi detectado".

Para criar um modelo personalizado, precisamos de dados de treinamento. Esses dados de treinamento são compostos de dois tipos principais: sons ambientais e os sons que você deseja detectar (como um alarme de fumaça disparando).

Os dados ambientais devem representar uma ampla variedade de paisagens sonoras típicas do ambiente em que você deseja detectar o som. Por exemplo, se você deseja detectar um som de alarme de fumaça em um ambiente de fábrica, comece com sons gravados nesse ambiente de fábrica em uma variedade de situações (sem o alarme de fumaça soar, é claro).

Os sons que você deseja detectar devem ser isolados, se possível, o que significa que as gravações devem ser apenas o próprio som, sem nenhum som de fundo ambiental. Para o nosso exemplo, é o som de um alarme de fumaça disparando.

Depois de coletar esses sons, o código no repositório do GitHub mostra como combinar os sons ambientais com os sons de alarme de fumaça de várias maneiras (e depois convertê-los em espectrogramas) para criar várias imagens que representam os sons ambientais com e sem o alarme de fumaça soa sobre eles. A imagem a seguir é um exemplo de alguns sons ambientais com um som de alarme de fumaça (as barras horizontais brilhantes) sobrepostos.

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Os dados de treinamento e teste são armazenados em um Serviço de armazenamento simples da Amazon (Amazon S3). A estrutura de diretórios a seguir é um bom ponto de partida para organizar os dados no bucket.

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O código de exemplo no repositório do GitHub permite que você escolha quantas imagens de treinamento criar. Os rótulos personalizados do Rekognition não exigem um grande número de imagens de treinamento. Um conjunto de treinamento de 200 a 500 imagens deve ser suficiente.

A criação de um projeto de Rótulos personalizados do Rekognition requer que você especifique os URIs da pasta do S3 que contém os dados de treinamento e (opcionalmente) os dados de teste. Ao especificar as fontes de dados para o trabalho de treinamento, uma das opções é Etiquetagem automática, como mostrado na captura de tela a seguir.

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Usar essa opção significa que o Amazon Rekognition usa os nomes das pastas como os nomes dos rótulos. Para nosso caso de uso de detecção de alarme de fumaça, a estrutura de pastas dentro das pastas train e test se parece com a captura de tela a seguir.

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

As imagens de dados de treinamento vão para essas pastas, com espectrogramas contendo o som do alarme de fumaça na pasta de alarmes e espectrogramas que não contêm o som do alarme de fumaça na pasta no_alarm pasta. O Amazon Rekognition usa esses nomes como nomes de classe de saída para o modelo de rótulos personalizados.

O treinamento de um modelo de etiqueta personalizado geralmente leva de 30 a 90 minutos. Ao final desse treinamento, você deve iniciar o modelo treinado para que fique disponível para uso.

Arquitetura de ponta a ponta para detecção de som

Depois de criarmos nosso modelo, o próximo passo é configurar um pipeline de inferência, para que possamos usar o modelo para detectar se um som de alarme de fumaça está presente em um arquivo de áudio. Para isso, o som de entrada deve ser transformado em um espectrograma e então janelado e filtrado por frequência, como foi feito para o processo de treinamento. Cada janela do espectrograma é dada ao modelo, que retorna uma classificação que indica se o alarme de fumaça soou ou não.

O diagrama a seguir mostra um exemplo de arquitetura que implementa esse pipeline de inferência.

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Essa arquitetura espera que um arquivo de áudio seja colocado em um bucket do S3, o que causa um AWS Lambda função a ser invocada. O Lambda é um serviço de computação sem servidor e orientado a eventos que permite executar código para praticamente qualquer tipo de aplicativo ou serviço de back-end sem provisionar ou gerenciar servidores. Você pode acionar uma função Lambda de mais de 200 serviços da AWS e aplicativos de software como serviço (SaaS) e pagar apenas pelo que usar.

A função Lambda recebe o nome do bucket e o nome da chave (ou nome do arquivo) do arquivo de áudio. O arquivo é baixado do Amazon S3 para a memória da função, que então o converte em um espectrograma e executa janelas e filtragem de frequência. Cada parte em janela do espectrograma é então enviada ao Amazon Rekognition, que usa o modelo Amazon Custom Labels previamente treinado para detectar o som. Se esse som for encontrado, a função Lambda sinaliza que, usando um Serviço de notificação simples da Amazon (Amazon SNS). O Amazon SNS oferece uma abordagem pub/sub em que as notificações podem ser enviadas para Serviço de fila simples da Amazon (Amazon SQS), funções Lambda, endpoints HTTPS, endereços de e-mail, push móvel e muito mais.

Conclusão

Você pode usar o aprendizado de máquina com dados de áudio para determinar quando determinados sons ocorrem, mesmo quando outros sons estão ocorrendo ao mesmo tempo. Fazer isso requer converter o som em uma imagem de espectrograma e, em seguida, localizar diferentes partes desse espectrograma por janelas e filtragem por banda de frequência. O Rekognition Custom Labels facilita o treinamento de um modelo personalizado para detecção de som.

Você pode usar o GitHub repo contendo o código de exemplo para esta postagem como ponto de partida para seus próprios experimentos. Para obter mais informações sobre a detecção de eventos de áudio, consulte Detecção de eventos de som: um tutorial.


Sobre os autores

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Greg Sommerville é arquiteto de prototipagem sênior na equipe de prototipagem e engenharia de nuvem da AWS, onde ajuda os clientes da AWS a implementar soluções inovadoras para problemas desafiadores com aprendizado de máquina, IoT e tecnologias sem servidor. Ele mora em Ann Arbor, Michigan e gosta de praticar ioga, cuidar de seus cães e jogar pôquer.

Detecte eventos de áudio com o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Jeff Harman é arquiteto de prototipagem sênior na equipe de prototipagem e engenharia de nuvem da AWS, onde ajuda os clientes da AWS a implementar soluções inovadoras para problemas desafiadores. Ele mora em Unionville, Connecticut e gosta de marcenaria, ferraria e Minecraft.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS