A supressão de ruído realmente ajuda o speech-to-text? Nós medimos.
A Krisp divulga uma redução de 46% na WER. Rodamos dez engines de aprimoramento em dezoito condições contra um controle bruto. Nenhuma venceu não fazer nada na taxa de erro de palavras agregada, embora pelo menos uma engine tenha vencido o bruto em 11 das 18 condições individuais — e as inserções subiram, em vez de descer.
Atualizado em 14 de agosto de 2026. A versão original deste post argumentava que a área era sub-medida e descrevia o harness que estávamos construindo. O harness desde então rodou duas vezes: o exemplo ilustrativo que ficava no meio foi substituído por números reais, e esses números agora foram regenerados em dezoito condições, em vez de treze. Os valores absolutos se moveram, a ordenação não, e cada número aqui é citado do benchmark.json publicado.
Dois fornecedores comercializam aprimoramento de fala (speech enhancement) como uma forma de cortar as taxas de erro de speech-to-text aproximadamente pela metade. Um grande provedor de STT diz aos seus clientes para desligá-lo. Se você está colocando um agente de voz em produção, um desses campos está te custando acurácia ou dinheiro, e, quando escrevemos isto pela primeira vez, ninguém tinha publicado a evidência que resolve a questão.
Então construímos o harness e o rodamos. A resposta curta, nos nossos dados: nenhuma engine de aprimoramento que testamos venceu o áudio bruto na taxa de erro de palavras (WER) agregada, os erros que ela adicionou foram majoritariamente o reconhecedor inventando palavras que nunca foram ditas, e existe uma faixa substancial de condições em que a alegação dos fornecedores se sustenta de forma limpa — 11 das nossas 18 tiveram uma engine que venceu o bruto. As três coisas merecem mais do que uma manchete, e a terceira é a que some quando este post é citado.
As alegações que não podem ser todas verdadeiras
| Fonte | Alegação como publicada | Como lemos o que ela mede |
|---|---|---|
| Krisp | redução de aproximadamente 46% na WER com o seu cancelamento de ruído | avaliação conduzida pelo fornecedor; condições, corpus e engine de STT não reproduzíveis de forma independente |
| ai-coustics | redução de aproximadamente 43% na WER | mesmo formato de alegação, outra família de modelo e outro corpus |
| Chondhekar et al., arXiv:2512.17562 | "Original noisy audio achieves lower semWER than enhanced audio in all 40 tested configurations", com degradações de 1.1%–46.6% absolutos | trabalho acadêmico independente — mas note o escopo: somente MetricGAN+, um modelo de pesquisa de 2021, não-streaming, em fala médica, pontuado em WER semântica. Não é um aprimorador de produção em tempo real. |
| AssemblyAI | citou o estudo acima e, separadamente, relatou que o cancelamento de ruído da Krisp cortou os disparos falsos de detecção de atividade de voz (VAD) em ~3.5x, enquanto aproximadamente dobrava a WER quando a saída dele era alimentada no STT | um fornecedor de STT avaliando aprimoramento como etapa de pré-processamento na frente dos próprios modelos |
| Deepgram | publicou a posição de que o aprimoramento prejudica a acurácia do STT | uma posição declarada; não encontramos dados que a acompanhem |
Leia essas linhas com cuidado e o desacordo é menor do que parece. Ninguém está rodando o mesmo corpus, as mesmas condições acústicas, a mesma configuração de aprimoramento ou o mesmo reconhecedor. Não há controle compartilhado. Cada número naquela tabela é defensável dentro do seu próprio experimento e inútil para comparar entre eles.
Isso não é um escândalo. É a cara que uma área tem antes de ter um benchmark.
Cinco variáveis ocultas que invertem o sinal
Cada uma delas é suficiente, sozinha, para transformar uma melhora de 40% em uma regressão de 40%.
1. O objetivo do aprimoramento não é o objetivo do STT. Modelos de supressão são treinados contra alvos de nível de sinal ou perceptuais: SI-SDR, PESQ, STOI. Esses alvos recompensam uma forma de onda próxima de uma referência limpa e agradável ao ouvido humano. Nenhum deles recompensa preservar as pistas específicas que um modelo acústico usa para discriminar fonemas. Um modelo pode melhorar o PESQ em meio ponto enquanto borra exatamente a energia de fricativa que separa "six" de "fix". A função de perda nunca foi consultada sobre isso.
2. O reconhecedor é uma variável oculta. Modelos modernos de STT são treinados com quantidades enormes de áudio do mundo real, boa parte dele ruidoso. Ruído está dentro da distribuição para eles. Os artefatos de um supressor neural — buracos espectrais, ruído musical, borrão de transientes, um piso de ruído anormalmente silencioso entre as palavras — não estão. Um reconhecedor treinado em áudio real e bagunçado pode ser mais robusto ao ruído original do que à limpeza.
3. A condição é uma variável oculta. Em áudio já limpo, o aprimoramento só pode remover informação; o melhor desfecho possível é um empate. O caso a favor do aprimoramento vive em SNR baixo, onde o ruído está genuinamente destruindo pistas fonéticas. Um benchmark com peso em gravações limpas vai concluir que o aprimoramento é nocivo; um com peso em burburinho de café a 0 dB vai concluir que ele é essencial. Os dois estão "medindo WER".
4. Processamento duplo. Quando o áudio chega ao seu agente, ele muitas vezes já passou por um supressor de ruído do aparelho, um codec e um cancelador no nível da plataforma. Adicionar outro supressor por cima não é um passe de aprimoramento, é uma cascata que ninguém caracterizou. Isso é especialmente verdadeiro em caminhos de telefonia, cobertos em 8 kHz é onde a IA de voz realmente quebra.
5. Agregação. A WER de um corpus é dominada pelos seus arquivos mais difíceis. Um único escalar, tirado como média entre condições, pode ficar estável enquanto esconde uma vitória grande em uma condição e uma derrota igualmente grande em outra.
A WER agregada esconde o mecanismo
A WER é (S + D + I) / N — substituições mais deleções mais inserções, sobre os tokens de referência. É um número carregando três mecanismos de falha diferentes, e para um agente de voz esses mecanismos não são igualmente ruins.
A supressão agressiva demais tem uma assinatura característica. Ela tende a deletar em vez de substituir, e o que ela deleta primeiro são palavras funcionais curtas e átonas — "a", "the", "of", "to", "not" — porque carregam pouca energia e duração curta, e porque decisões de gating construídas em torno de uma probabilidade de presença de fala as tratam como ruído.
O ruído não tratado tem outra assinatura: substituições onde um fonema é mascarado, e inserções onde fala de fundo ou ruído transiente é decodificado como palavras. Modelos baseados em atenção são particularmente dispostos a alucinar texto fluente a partir de burburinho.
Então dois sistemas podem registrar WER idêntica e estar em apuros completamente diferentes. Um pipeline cujos erros são inserções de conversa de fundo é irritante, mas em geral sobrevivível, porque um LLM mais adiante descarta o fragmento incoerente. Um pipeline cujos erros são deleções de palavras funcionais é perigoso, porque derrubar o "not" de "I do not want to renew" produz uma frase fluente, confiante e invertida, sobre a qual o LLM vai agir. É por isso que registramos inserções, deleções e substituições separadamente em cada célula, e é por isso que uma alegação só de WER — de quem quer que seja, inclusive nossa — não é informação suficiente para agir.
O que medimos
Procedência primeiro, porque esses números valem exatamente o que vale o método. Um único reconhecedor, faster-whisper base.en (CTranslate2 int8 CPU, greedy), Silero VAD, 10 locutores / 180 clipes / aproximadamente 1406 segundos de áudio, cerca de 190 palavras de referência por condição e 3420 no total, 18 condições acústicas, 12 backends, Apple M1 Max, onnxruntime 1.28.0 fixado em uma única thread intra-op. Agregado pelas 18 condições:
| Backend | WER | Inserções | Deleções | RTF | Latência |
|---|---|---|---|---|---|
| Bruto (sem processamento) | 14.77% | 101 | 60 | — | 0 ms |
| ai-coustics Quail L | 15.56% | 126 | 57 | 0.124 | 30 ms |
| ai-coustics Quail VF 2.2 L | 18.10% | 161 | 75 | 0.076 | 30 ms |
| GTCRN (MIT) | 20.26% | 210 | 40 | 0.050 | 16 ms |
| FastEnhancer-L (MIT) | 20.44% | 159 | 107 | 0.376 | 25.8 ms |
| FastEnhancer-M (MIT) | 22.40% | 217 | 83 | 0.110 | 22 ms |
| FastEnhancer-T (MIT) | 22.46% | 145 | 109 | 0.013 | 16 ms |
| DeepFilterNet3 | 35.18% | 380 | 197 | 0.133 | 100 ms |
Nenhum aprimorador venceu o bruto na WER agregada. O melhor resultado que qualquer engine registrou foi o ai-coustics Quail L a 15.6% contra os 14.8% do bruto — ainda pior, por oito décimos de ponto, o que neste tamanho de amostra é um empate. Todo o resto foi pior por cinco pontos ou mais, e esses não são empates.
As inserções subiram, não desceram. O bruto produziu 101. O GTCRN produziu 210. O DeepFilterNet3 produziu 380. Vale se demorar nisso, porque é o oposto preciso da alegação de marketing. Uma inserção não é uma palavra mutilada; é o reconhecedor emitindo uma palavra que ninguém disse. A história da indústria é que o aprimoramento remove o ruído que causa texto alucinado. Nos nossos dados, o aprimoramento produziu texto alucinado — aproximadamente o dobro para o GTCRN, perto de quatro vezes para o DFN3, contra um controle sem processamento. A nossa leitura é que o resíduo do supressor, o ruído musical e os silêncios abruptos do gating, é mais decodificável-como-fala do que o ruído que ele removeu.
Note a linha do GTCRN em particular: 210 inserções, mas só 40 deleções, contra 101 e 60 do bruto. Ele não está deletando as suas palavras funcionais. Está adicionando palavras. Esses são modos de falha opostos, e um número único de WER esconde qual deles você comprou.
Onde a alegação dos fornecedores se sustenta
Estaríamos fazendo exatamente o que acusamos os fornecedores de fazer se parássemos no número agregado. Em 11 das nossas 18 condições, pelo menos uma engine venceu o bruto. As margens são reais e consideráveis, e caem onde você preveria: onde ruído ou uma voz concorrente está genuinamente destruindo pistas fonéticas, e não onde o reconhecedor estava se virando bem sozinho.
O caso mais claro é o isolamento de locutor (speaker isolation). O ai-coustics Quail VF é um modelo Voice Focus — o trabalho dele é isolar o locutor primário e rejeitar as outras vozes. Em locutor concorrente a 5 dB, ele cortou as inserções de 19 para 10 e a WER de 26.3% para 20.5%. Em burburinho a 5 dB, cortou a WER de 24.7% para 20.5%, com as inserções caindo de 10 para 7. Esses são os resultados mais fortes que qualquer aprimorador registrou na nossa matriz, e eles vindicam um uso estreito e bem direcionado. Se o seu modo de falha é uma segunda voz humana na sala, um modelo Voice Focus é a ferramenta certa, e os nossos dados dizem isso.
Ruído de banda larga em SNR baixo mostra o mesmo formato: a 0 dB, oito das dez engines venceram o bruto, a melhor por 4.7 pontos. O padrão geral, e a única frase a levar deste post: o aprimoramento paga onde o áudio está genuinamente ruim e te custa onde não está.
As sete condições sem vencedor são a imagem espelhada, e igualmente legíveis: as duas reverberantes, onde toda engine piorou as coisas, e as cinco condições de operadora de telefonia, onde em quatro de cinco o melhor que uma engine atinge é um empate exato com não fazer nada.
O que nada disso vindica é a alegação geral. O Quail VF, agregado pelas dezoito condições, fica em 18.1%, mais de três pontos pior do que não fazer nada, porque ele também roda em áudio limpo, reverberante e de banda estreita, onde só pode remover informação. Um modelo que vence as suas condições de projeto por cinco ou seis pontos e perde o resto não é um default de pré-processamento. É uma decisão de roteamento, que é o argumento inteiro de O pipeline dividido.
Ressalvas, por inteiro
Estas pertencem anexadas a cada número acima.
- Um único reconhecedor. faster-whisper base.en. Um reconhecedor diferente dá números absolutos diferentes. O harness suporta Deepgram e AssemblyAI, então a ordenação pode ser rechecada em outra engine, e gostaríamos que alguém fizesse isso.
- Cerca de 190 palavras de referência por condição, 3420 agregadas. O suficiente para separar efeitos grandes, não o suficiente para resolver um ou dois pontos de WER: uma palavra vale aproximadamente 0.5 ponto por condição, 0.03 no agregado. Trate a diferença entre o bruto e o Quail L como um empate; as diferenças de cinco a vinte pontos abaixo dela não são empates.
- O DeepFilterNet3 é medido através de um adaptador block-online, porque nenhum export ONNX público carrega os tensores de estado recorrente, tornando streaming por frame impossível com os pesos publicados. Os 35.2% dele são um limite inferior de qualidade e um limite superior de custo, não uma leitura justa do modelo. Não cite esse número sem esta frase.
- As linhas da ai-coustics são uma baseline proprietária rodada através do SDK licenciado. Um ponto de referência, nunca um caminho de código que nós colocamos em produção.
- Licenciamento. O ruído do ESC-50 é CC-BY-NC-3.0, então essas condições são somente para avaliação. O LibriSpeech é CC-BY-4.0, e as condições de burburinho e de locutor concorrente são construídas apenas a partir do LibriSpeech, então não carregam restrição NC.
- onnxruntime fixado em uma única thread intra-op. A coluna de RTF é um stream em um núcleo, não uma distribuição pela máquina inteira.
O que ainda não sabemos
- Se algum fornecedor de STT treina com áudio aprimorado. Se um reconhecedor viu artefatos de supressor no treinamento, a sensibilidade dele a esses artefatos é completamente diferente, e nenhum de nós consegue ver dentro desses conjuntos de treinamento.
- Como foram configurados os modelos de aprimoramento das alegações publicadas pelos fornecedores. A agressividade geralmente é ajustável, e o mesmo modelo em duas configurações pode cair em lados opostos do zero.
- Quanto disso transfere para STT de streaming. O nosso aprimoramento é alimentado bloco a bloco, com estado carregado entre blocos, mas o reconhecedor é pontuado em enunciados completos. Estabilidade dos parciais e latência-até-final são uma medição separada.
- Se isso se mantém fora do inglês, ou em um corpus maior. Não necessariamente. O manifesto e o harness são públicos para que isso seja uma pergunta que alguém possa responder, em vez de debater.
O que fazemos com o resultado
Duas coisas se seguem, e nenhuma delas é "aprimoramento é inútil".
A primeira é arquitetural. A mesma rodada mediu VAD, e ali o quadro se inverte: o aprimoramento mal move o F1 do VAD, mas corta substancialmente a taxa de alarmes falsos exatamente nas condições que causam barge-ins espúrios. Essa é uma razão real e medida para enviar áudio aprimorado ao seu detector de turnos e áudio bruto ao seu reconhecedor, que é o que o nosso SDK faz por padrão — os números e o raciocínio estão em O pipeline dividido.
A segunda é para onde o nosso produto foi. Nas condições de banda estreita, nenhum aprimorador produziu melhora significativa e vários degradaram feio — o FastEnhancer-T em 6.8 pontos e o DeepFilterNet3 em 9.5 — e é lá que está o volume de chamadas. Isso é o Clearline, e é a coisa que vendemos. Duas notas de honestidade anexadas: as nossas condições de telefonia são uma ida e volta G.711 sobre fala limpa, sem eco, perda de pacotes ou acústica de aparelho, e nenhuma engine nativamente de 8 kHz foi colocada no benchmark ainda, incluindo a nossa. Portanto este é um resultado negativo sobre o campo existente, não um resultado positivo sobre nós. O benchmark não é o produto — um benchmark não tem comprador nem retenção. Ele é como sabemos o que construir e como você confere se estamos mentindo.
Cada célula, incluindo as que perdemos, está em /benchmark. O harness, o manifesto do dataset e as configurações estão em github.com/anecho, e o método está descrito em O que lançamos: um benchmark aberto para aprimoramento de fala. Se você quer uma condição, uma engine ou um reconhecedor adicionados, abra uma issue.