IoT e IA

Detecção de Anomalias de Áudio em Máquinas: Ouvindo Falhas na Borda

Máquinas muitas vezes soam diferente antes de falhar. Saiba como funciona a detecção acústica de anomalias, quais modelos cabem em hardware de borda e como publicar pontuações de anomalia compactas via MQTT em vez de transmitir áudio bruto.

Ilustração de detecção de anomalias de áudio mostrando um microfone perto de um motor, um espectrograma e pontuações de anomalia publicadas via MQTT
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

A detecção de anomalias de áudio permite ouvir problemas em motores, bombas, ventiladores e redutores antes que eles se transformem em quebras. Este guia de caso de uso explica como funciona o monitoramento acústico, quais modelos rodam com folga em hardware de borda e como publicar pontuações de anomalia via MQTT para que dashboards e equipes de manutenção recebam um sinal claro sem que ninguém precise transmitir áudio bruto.

Por que ouvir as máquinas

Técnicos experientes diagnosticam máquinas pelo ouvido: um chiado de um rolamento seco, uma batida rítmica de uma fixação solta, um sibilo de uma válvula vazando. O monitoramento acústico automatiza essa habilidade e a aplica 24 horas por dia.

O som tem vantagens práticas em relação a outros sensores:

  • Sem contato. Um microfone não precisa ser montado em um eixo rotativo nem ligado a um controlador, o que facilita retrofits.
  • Ampla cobertura. Um único microfone pode monitorar um pequeno grupo de máquinas ou um trecho inteiro de transportador, como o de uma correia de minério em uma mineradora.
  • Informação rica. As frequências revelam velocidades de rotação, atrito, cavitação, vazamentos de ar e impactos.
  • Hardware barato. Microfones MEMS custam pouco, e os digitais se conectam diretamente a microcontroladores e computadores de placa única.

A desvantagem é o ruído. Fábricas são barulhentas, os sons de fundo mudam o tempo todo e máquinas vizinhas vazam para todas as gravações. Um sistema útil precisa separar "diferente do habitual" de "a empilhadeira passou".

Como funciona a detecção de anomalias de áudio

Quase todos os sistemas práticos seguem o mesmo pipeline.

1. Captura

Grave clipes curtos (normalmente de um a dez segundos) a 16 kHz ou mais. Muitas falhas de máquinas aparecem abaixo de 8 kHz, mas vazamentos de ar e algumas falhas de rolamento produzem conteúdo ultrassônico ou de alta frequência, então ajuste a taxa de amostragem e o microfone à falha que interessa.

2. Extração de features

Formas de onda brutas são difíceis de comparar. Converta cada clipe em um espectrograma log-mel: uma imagem tempo-frequência em que as bandas de frequência são espaçadas da forma como a audição humana percebe a altura, com a energia em escala logarítmica. Alternativas mais simples incluem energias por banda, centroide espectral e nível RMS.

3. Aprender o normal

Como as falhas são raras, os modelos são treinados apenas com gravações normais. O objetivo não é reconhecer uma falha específica, mas medir o quanto um novo clipe está distante de tudo o que o modelo ouviu durante a operação normal.

4. Pontuar e decidir

Cada clipe recebe uma pontuação de anomalia. Um limite, definido a partir da distribuição de pontuações de gravações normais separadas, decide se o clipe é incomum. Regras de persistência (vários clipes incomuns seguidos) suprimem ruídos isolados.

Opções de modelos para a borda

Abordagem Como pontua Hardware Pontos fortes Pontos fracos
Linha de base por energia de banda Distância da média e variância por banda Microcontrolador ou Pi Minúsculo, explicável Deixa passar mudanças sutis de padrão
Mistura gaussiana sobre features Log-verossimilhança negativa Classe Raspberry Pi Lida com vários modos de operação Exige escolha cuidadosa das features
Isolation Forest sobre features Comprimento do caminho Classe Raspberry Pi Multivariado, rápido de treinar Exige engenharia de features
Autoencoder convolucional Erro de reconstrução sobre espectrogramas Pi com acelerador, Jetson Aprende padrões complexos Mais dados, mais difícil de explicar
Embedding pré-treinado mais distância Distância até embeddings normais Jetson ou edge box com GPU Forte com poucos dados de treinamento Modelo maior

Um caminho sensato é começar com a linha de base por energia de banda, provar que o som carrega sinal para a sua máquina e depois passar para um autoencoder, se necessário. O tutorial de Isolation Forest para dados de sensores mostra a abordagem baseada em features em detalhes, e o mesmo padrão vale para features de áudio.

Um ouvinte mínimo na borda com saída MQTT

O script abaixo roda em um Raspberry Pi ou em qualquer máquina Linux com microfone. Ele grava clipes de dois segundos, calcula energias logarítmicas em bandas espaçadas na escala mel, aprende uma linha de base nos primeiros minutos e depois publica uma pontuação de anomalia para cada clipe.

pip install "paho-mqtt>=2.0" numpy sounddevice
# On Raspberry Pi OS you may also need: sudo apt install libportaudio2
import json
import time
import uuid

import numpy as np
import paho.mqtt.client as mqtt
import sounddevice as sd

PREFIX = "connectmq/demo/snd-4be0/plant1/line2/fan3"
RATE, CLIP_S, BANDS = 16_000, 2.0, 32
LEARN_CLIPS = 60          # about two minutes of normal sound
THRESHOLD = 4.0           # mean absolute z across bands


def mel_edges(n_bands, fmin=50, fmax=7_800):
    mel = lambda f: 2595 * np.log10(1 + f / 700)
    inv = lambda m: 700 * (10 ** (m / 2595) - 1)
    return inv(np.linspace(mel(fmin), mel(fmax), n_bands + 1))


EDGES = mel_edges(BANDS)


def band_features(clip):
    spec = np.abs(np.fft.rfft(clip * np.hanning(len(clip)))) ** 2
    freqs = np.fft.rfftfreq(len(clip), 1 / RATE)
    feats = [spec[(freqs >= lo) & (freqs < hi)].sum() for lo, hi in zip(EDGES[:-1], EDGES[1:])]
    return np.log10(np.array(feats) + 1e-10)


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2,
                     client_id=f"listener-{uuid.uuid4().hex[:8]}")
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_start()

history, mean, std, streak = [], None, None, 0
while True:
    clip = sd.rec(int(RATE * CLIP_S), samplerate=RATE, channels=1, dtype="float32")
    sd.wait()
    feats = band_features(clip[:, 0])
    rms_db = float(20 * np.log10(np.sqrt(np.mean(clip ** 2)) + 1e-9))

    if len(history) < LEARN_CLIPS:
        history.append(feats)
        if len(history) == LEARN_CLIPS:
            mean = np.mean(history, axis=0)
            std = np.std(history, axis=0) + 1e-3
            client.publish(f"{PREFIX}/audio/status",
                           json.dumps({"state": "monitoring", "bands": BANDS}),
                           qos=1, retain=True)
        continue

    z = np.abs((feats - mean) / std)
    score = float(np.mean(z))
    top_band = int(np.argmax(z))
    streak = streak + 1 if score > THRESHOLD else 0
    msg = {"ts": time.time(), "score": round(score, 2), "threshold": THRESHOLD,
           "rmsDb": round(rms_db, 1),
           "topBandHz": [round(EDGES[top_band]), round(EDGES[top_band + 1])],
           "isAnomaly": streak >= 3, "model": "band-baseline-v1"}
    client.publish(f"{PREFIX}/audio/score", json.dumps(msg), qos=0)

A mensagem carrega propositalmente a banda de frequência que mais se desviou. Um técnico que vê "anomalia, maior mudança entre 2,1 e 2,4 kHz" tem um ponto de partida muito melhor do que um que vê apenas uma luz vermelha.

Rode o script em uma sala silenciosa, deixe-o aprender por dois minutos, depois toque um tom ou bata na mesa perto do microfone e veja a pontuação subir:

mosquitto_sub -h broker.connectmq.com -p 1883 -i snd-watch-4be0 -t "connectmq/demo/snd-4be0/#" -v

Por que publicar pontuações, e não áudio

Transmitir áudio bruto de cada máquina é caro, sensível do ponto de vista da privacidade (microfones podem captar conversas) e desnecessário. Pontuar na borda e publicar uma mensagem JSON compacta a cada poucos segundos mantém o uso de banda mínimo e o som dentro da unidade.

Quando um clipe é sinalizado, você ainda pode querer evidências. Um bom meio-termo é guardar o clipe sinalizado localmente e publicar apenas os seus metadados, ou enviar trechos curtos sob demanda por meio de um topic de comando, respeitando o limite de tamanho de mensagem do broker.

Da linha de base ao autoencoder

Se a linha de base por energia de banda provar que o som carrega sinal, mas deixar passar falhas mais sutis, o próximo passo habitual é um pequeno autoencoder convolucional treinado com espectrogramas log-mel de clipes normais. Treine-o em uma estação de trabalho, converta-o para TensorFlow Lite ou ONNX e rode-o no dispositivo de borda no lugar da linha de base. O lado MQTT não muda nada: o ouvinte continua publicando uma pontuação, um limite e a versão do modelo no mesmo topic. Dashboards e regras de alerta continuam funcionando, e você pode comparar os dois modelos rodando-os lado a lado por uma semana, cada um publicando no próprio topic de pontuação.

Checklist de implantação

  1. Fixe o microfone sempre na mesma posição. Mover o microfone altera a linha de base; fixe-o no lugar e documente a posição.
  2. Grave todos os modos normais. Ociosa, meia carga, carga total e partida soam diferentes; aprenda todos ou condicione ao estado da máquina.
  3. Use o estado da máquina como contexto. Assine o topic de estado da máquina e pule a pontuação durante trocas de produto ou limpezas.
  4. Defina os limites a partir de dados normais separados, e não dos próprios clipes de treinamento.
  5. Exija persistência antes de alertar.
  6. Proteja a privacidade. Processe o áudio localmente e nunca publique clipes brutos em topics compartilhados ou públicos.
  7. Reaprenda após a manutenção. Uma correia ou um rolamento novo muda legitimamente o som.

Da pontuação à ação de manutenção

As pontuações de anomalia ganham valor quando se juntam a outros sinais. Uma pontuação acústica em alta junto com vibração e temperatura em alta é uma evidência forte; um pico acústico isolado durante a passagem de uma empilhadeira não é. Essa fusão e o passo seguinte, estimar o momento da falha, são abordados em manutenção preditiva com machine learning, enquanto métodos de detecção de anomalias em IoT explica onde cada detector deve rodar. O guia de IA e IoT coloca o monitoramento acústico no contexto mais amplo da edge AI.

Conectando os ouvintes à fábrica

Cada ouvinte é apenas um cliente MQTT, então adicionar mais uma máquina significa implantar mais um dispositivo com o próprio topic. Para experimentos, a área do servidor MQTT público (gratuito) serve bem com sons sintéticos, mas não com dados de produção. Para máquinas reais, use um broker MQTT gerenciado privado, ou seja, um broker MQTT na nuvem com TLS na porta 8883 e credenciais por ouvinte. O ConnectMQ mostra cada ouvinte na visão de dispositivos organizada por níveis ISA-95, permite acompanhar as pontuações no explorador de topics ao vivo e pode gerar alertas por limite no campo score sem código adicional.

Comece a ouvir com o ConnectMQ

Crie um broker ConnectMQ no plano Serverless gratuito em app.connectmq.com, sem cartão de crédito, troque o host e as credenciais no script do ouvinte e veja a pontuação acústica da sua primeira máquina aparecer em tempo real.

Perguntas frequentes

Que microfone devo usar para detecção de anomalias de áudio?

Um microfone MEMS digital ou um bom microfone USB é suficiente para a maioria das falhas audíveis. Para vazamentos de ar e danos iniciais em rolamentos, considere microfones e taxas de amostragem que capturem frequências mais altas.

A detecção de anomalias de áudio pode rodar em um microcontrolador?

Linhas de base simples por energia de banda e pequenos modelos TinyML rodam em microcontroladores capazes, como o ESP32-S3. Autoencoders sobre espectrogramas completos geralmente precisam de um Raspberry Pi com acelerador ou de um dispositivo da classe Jetson.

Como lidar com ruído de fundo alto?

Posicione o microfone perto da máquina, aprenda a linha de base em condições realistas de ruído de fundo e exija vários clipes anômalos consecutivos antes de alertar. Microfones direcionais também ajudam.

É seguro enviar áudio via MQTT?

Prefira enviar pontuações e metadados em vez de áudio. Se precisar enviar clipes, use um broker privado com TLS e credenciais, nunca o servidor MQTT público.

Artigos relacionados

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.