Correção de bug: distorção de áudio e travamento do PipeWire (Linux)

Este documento descreve como resolver distorções de áudio (“klirren”), artefatos de voz robótica e travamentos de áudio do sistema que podem ocorrer ao usar o SL5-aura-service junto com outros aplicativos de mídia como OBS, AnyDesk ou fluxos TTS de alta frequência.

Sintomas

  • A saída/entrada de voz soa distorcida, metálica ou “cliring”.

  • O áudio do sistema trava com a mensagem: Estabelecendo conexão com PulseAudio ou Aguarde.

  • Perda total de áudio após alta carga de CPU ou uso de stream simultâneo.

  • Os registros do diário mostram: spa.alsa: hw:X: snd_pcm_status error: Esse dispositivo não existe.

Causa raiz

No Manjaro e em outras distribuições Linux modernas, o PipeWire gerencia o áudio. A distorção geralmente decorre de:

  1. Buffer Underruns: Conflito entre streams simultâneos (por exemplo, AnyDesk capturando áudio enquanto o TTS/OBS está em execução).

  2. Incompatibilidade de taxa de amostragem: Troca frequente entre 44,1kHz e 48kHz.

  3. Problemas de temporização de USB: Alta carga de barramento fazendo com que fones de ouvido USB (como Plantronics/Poly) se desconectem temporariamente.


Soluções

1. Recuperação Imediata (A Reinicialização “Nuclear”)

Se a pilha de áudio estiver congelada ou distorcida, elimine todos os processos relacionados ao áudio. Eles serão reiniciados automaticamente imediatamente.

# Force kill PipeWire and its PulseAudio compatibility layer
killall -9 pulseaudio pipewire pipewire-pulse

2. Configurações de prevenção e estabilidade

Desativar áudio AnyDesk

AnyDesk frequentemente tenta se conectar ao dispositivo de áudio, causando conflitos de hardware.

  • Ação: Abra Configurações do AnyDesk -> Áudio -> Desative “Transmitir áudio” e “Reproduzir áudio”.

Corrigir taxa de amostragem do PipeWire (recomendado)

Force o PipeWire a permanecer em 48kHz para evitar artefatos de reamostragem durante a reprodução do TTS.

  1. Crie o diretório de configuração: mkdir -p ~/.config/pipewire

  2. Copie a configuração padrão: cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/

  3. Edite ~/.config/pipewire/pipewire.conf e defina:

    default.clock.rate = 48000
    
  4. Reinicie os serviços:

    systemctl --user restart pipewire pipewire-pulse wireplumber
    

3. Recuperação pós-produção (FFmpeg)

Se você gravou uma sessão e o áudio está distorcido (“cliring”), use a seguinte cadeia de filtros ffmpeg para reparar o arquivo.

Comando de reparo recomendado

Este comando aplica um descortador, redução de ruído e um filtro passa-baixa para remover artefatos digitais de alta frequência sem recodificar o vídeo.

testado e muito bom:

CODE_BLOCO_3

pode ser melhor com (não testado):

ffmpeg -i input_video.mp4 
    -af "adeclip, afftdn, lowpass=f=5000, volume=1.5" \
    -c:v copy reparatur_output.mp4  

não testado: CODE_BLOCO_5

Detalhamento do filtro:

  • adeclip: Arredonda os picos de recorte digital.

  • afftdn: Reduz o ruído digital baseado em FFT.

  • lowpass=f=3500: Corta frequências acima de 3,5kHz onde ocorre a maior parte do “cliring” (torna a voz mais clara/quente).

  • volume=1.8: Compensa a perda de volume durante a filtragem.

  • -c:v copy: Mantém a qualidade original do vídeo (extremamente rápido).


Ferramentas de depuração

Para monitorar a integridade do áudio em tempo real durante o desenvolvimento:

  • pw-top: Mostra erros em tempo real (coluna ERR) e status do buffer.

  • journalctl --user -u pipewire: Verifica se há desconexões de hardware.