¿La supresión de ruido ayuda de verdad al STT? Lo medimos.
Krisp comercializa una reducción de WER de 46%. Ejecutamos diez motores de mejora de voz en dieciocho condiciones contra un control sin procesar. Ninguno superó a no hacer nada en la tasa de error de palabras agregada, aunque al menos un motor sí superó al audio sin procesar en 11 de las 18 condiciones individuales — y las inserciones subieron en lugar de bajar.
Actualizado el 14 de agosto de 2026. La versión original de este post sostenía que el campo estaba inframedido y describía el arnés que estábamos construyendo. El arnés ya se ha ejecutado dos veces: el ejemplo ilustrativo que solía estar en el medio fue reemplazado por números reales, y esos números se han regenerado ahora sobre dieciocho condiciones en lugar de trece. Los valores absolutos se movieron, el orden no, y cada cifra de aquí está citada del benchmark.json publicado.
Dos proveedores comercializan la mejora de voz (speech enhancement) como una manera de recortar las tasas de error del speech-to-text aproximadamente a la mitad. Un proveedor importante de STT les dice a sus clientes que la apaguen. Si estás desplegando un agente de voz, uno de esos bandos te está costando precisión o dinero, y cuando escribimos esto por primera vez, nadie había publicado la evidencia que lo zanja.
Así que construimos el arnés y lo ejecutamos. La respuesta corta, con nuestros datos: ningún motor de mejora de los que probamos superó al audio sin procesar en la tasa de error de palabras (WER) agregada, los errores que añadía eran sobre todo el reconocedor inventando palabras que nunca se dijeron, y hay una banda sustancial de condiciones donde la afirmación de los proveedores se sostiene limpiamente — en 11 de nuestras 18 hubo un motor que superó al audio sin procesar. Las tres cosas merecen más que un titular, y la tercera es la que se omite cuando se cita este post.
Las afirmaciones que no pueden ser todas ciertas
| Fuente | Afirmación tal como se publicó | Como qué la leemos |
|---|---|---|
| Krisp | reducción de WER de aproximadamente 46% gracias a su cancelación de ruido | evaluación ejecutada por el proveedor; condiciones, corpus y motor de STT no reproducibles de forma independiente |
| ai-coustics | reducción de WER de aproximadamente 43% | la misma forma de afirmación, con otra familia de modelos y otro corpus |
| Chondhekar et al., arXiv:2512.17562 | «El audio ruidoso original logra un semWER más bajo que el audio mejorado en las 40 configuraciones probadas», con degradaciones de 1.1%–46.6% absoluto | trabajo académico independiente — pero fíjate en el alcance: solo MetricGAN+, un modelo de investigación de 2021 que no es de streaming, sobre habla médica, puntuado en WER semántica. No es un mejorador de producción en tiempo real. |
| AssemblyAI | citó el estudio de arriba y, por separado, informó de que la cancelación de ruido de Krisp redujo los disparos falsos de la detección de actividad de voz (VAD) ~3.5x mientras aproximadamente duplicaba la WER cuando su salida se pasaba al STT | un proveedor de STT evaluando la mejora como paso de preprocesamiento delante de sus propios modelos |
| Deepgram | publicó la posición de que la mejora perjudica la precisión del STT | una posición declarada; no hemos encontrado datos que la acompañen |
Lee esas filas con cuidado y el desacuerdo es más pequeño de lo que parece. Nadie está ejecutando el mismo corpus, las mismas condiciones acústicas, la misma configuración de mejora ni el mismo reconocedor. No hay un control compartido. Cada número de esa tabla es defendible dentro de su propio experimento e inútil para comparar entre ellos.
Eso no es un escándalo. Es el aspecto que tiene un campo antes de tener un benchmark.
Cinco variables ocultas que invierten el signo
Cada una de estas basta por sí sola para convertir una mejora de 40% en una regresión de 40%.
1. El objetivo de la mejora no es el objetivo del STT. Los modelos de supresión se entrenan contra métricas a nivel de señal o perceptuales: SI-SDR, PESQ, STOI. Esas recompensan una forma de onda cercana a una referencia limpia y agradable para el oído humano. Ninguna recompensa preservar las pistas específicas que un modelo acústico usa para discriminar fonemas. Un modelo puede mejorar PESQ en medio punto mientras emborrona exactamente la energía fricativa que separa «six» de «fix». A la función de pérdida nunca se le preguntó por eso.
2. El reconocedor es una variable oculta. Los modelos modernos de STT se entrenan con cantidades enormes de audio del mundo real, gran parte de él ruidoso. El ruido está dentro de su distribución. Los artefactos de un supresor neuronal — agujeros espectrales, ruido musical, emborronamiento de transitorios, un suelo de ruido artificialmente silencioso entre palabras — no lo están. Un reconocedor entrenado con audio real y sucio puede ser más robusto al ruido original que a la limpieza.
3. La condición es una variable oculta. Sobre audio ya limpio, la mejora solo puede quitar información; el mejor resultado posible es un empate. El argumento a favor de la mejora vive en SNR bajas, donde el ruido está destruyendo de verdad las pistas fonéticas. Un benchmark cargado hacia grabaciones limpias concluirá que la mejora es dañina; uno cargado hacia murmullo de cafetería a 0 dB concluirá que es esencial. Ambos están «midiendo la WER».
4. Doble procesamiento. Para cuando el audio llega a tu agente, a menudo ya ha pasado por un supresor de ruido del terminal, un códec y un cancelador a nivel de plataforma. Añadir otro supresor encima no es una pasada de mejora, es una cascada que nadie ha caracterizado. Esto es especialmente cierto en las rutas de telefonía, cubiertas en 8 kHz es donde la IA de voz se rompe de verdad.
5. La agregación. La WER sobre un corpus está dominada por sus archivos más difíciles. Un único escalar promediado sobre condiciones puede quedarse plano mientras esconde una gran victoria en una condición y una pérdida igual de grande en otra.
La WER agregada esconde el mecanismo
La WER es (S + D + I) / N — sustituciones más eliminaciones más inserciones, sobre los tokens de referencia. Es un solo número que transporta tres mecanismos de fallo distintos, y para un agente de voz esos mecanismos no son igual de malos.
La supresión demasiado agresiva tiene una firma característica. Tiende a eliminar antes que a sustituir, y lo primero que elimina son palabras funcionales cortas y átonas — «a», «the», «of», «to», «not» — porque llevan poca energía y duración corta, y porque las decisiones de compuerta construidas alrededor de una probabilidad de presencia de habla las tratan como ruido.
El ruido sin tratar tiene una firma distinta: sustituciones donde un fonema queda enmascarado, e inserciones donde el habla de fondo o un ruido transitorio se decodifica como palabras. Los modelos basados en atención están particularmente dispuestos a alucinar texto fluido a partir del murmullo.
Así que dos sistemas pueden publicar una WER idéntica y estar en problemas completamente distintos. Un pipeline cuyos errores son inserciones de conversación de fondo es molesto pero a menudo sobrevivible, porque un LLM aguas abajo descarta el fragmento incoherente. Un pipeline cuyos errores son eliminaciones de palabras funcionales es peligroso, porque quitar el «not» de «I do not want to renew» produce una frase fluida, segura de sí misma e invertida, sobre la que el LLM actuará. Por eso registramos inserciones, eliminaciones y sustituciones por separado en cada celda, y por eso una afirmación que solo da WER — de quien sea, nosotros incluidos — no es información suficiente para actuar.
Lo que medimos
Primero la procedencia, porque estos números valen exactamente lo que vale el método. Un solo reconocedor, faster-whisper base.en (CTranslate2 int8 CPU, greedy), Silero VAD, 10 hablantes / 180 clips / aproximadamente 1406 segundos de audio, unas 190 palabras de referencia por condición y 3420 en total, 18 condiciones acústicas, 12 backends, Apple M1 Max, onnxruntime 1.28.0 fijado a un hilo intra-op. Agregado sobre las 18 condiciones:
| Backend | WER | Inserciones | Eliminaciones | RTF | Latencia |
|---|---|---|---|---|---|
| Sin procesar (raw) | 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 |
Ningún mejorador superó al audio sin procesar en la WER agregada. El mejor resultado que publicó un motor fue ai-coustics Quail L con 15.6% contra el 14.8% del audio sin procesar — todavía peor, por ocho décimas de punto, lo que con este tamaño de muestra es un empate. Todo lo demás fue peor por cinco puntos o más, y esos no son empates.
Las inserciones subieron, no bajaron. El audio sin procesar produjo 101. GTCRN produjo 210. DeepFilterNet3 produjo 380. Vale la pena detenerse aquí, porque es exactamente lo contrario de la afirmación de marketing. Una inserción no es una palabra deformada; es el reconocedor emitiendo una palabra que nadie dijo. La historia de la industria es que la mejora elimina el ruido que causa texto alucinado. Con nuestros datos, la mejora produjo texto alucinado — aproximadamente el doble en el caso de GTCRN, cerca de cuatro veces más para DFN3, contra un control sin procesar. Nuestra lectura es que el residuo del supresor, el ruido musical y los silencios abruptos de la compuerta, es más decodificable-como-habla que el ruido que eliminó.
Fíjate en particular en la fila de GTCRN: 210 inserciones pero solo 40 eliminaciones, contra las 101 y 60 del audio sin procesar. No está borrando tus palabras funcionales. Está añadiendo palabras. Son modos de fallo opuestos y una única cifra de WER oculta cuál de los dos compraste.
Dónde sí se sostiene la afirmación de los proveedores
Estaríamos haciendo exactamente lo que acusamos a los proveedores de hacer si nos detuviéramos en el número agregado. En 11 de nuestras 18 condiciones, al menos un motor superó al audio sin procesar. Los márgenes son reales y considerables, y caen donde predecirías: donde el ruido o una voz que compite está destruyendo de verdad las pistas fonéticas, no donde el reconocedor ya se las arreglaba bien solo.
El caso más claro es el aislamiento del hablante (speaker isolation). ai-coustics Quail VF es un modelo Voice Focus — su trabajo es aislar al hablante principal y rechazar otras voces. Con un hablante que compite a 5 dB recortó las inserciones de 19 a 10 y la WER de 26.3% a 20.5%. Con murmullo a 5 dB recortó la WER de 24.7% a 20.5% con las inserciones bajando de 10 a 7. Esos son los resultados más fuertes que publicó cualquier mejorador en nuestra matriz, y vindican un uso estrecho y bien dirigido. Si tu modo de fallo es una segunda voz humana en la habitación, un modelo Voice Focus es la herramienta correcta y nuestros datos lo dicen.
El ruido de banda ancha a SNR baja muestra la misma forma: a 0 dB, ocho de los diez motores superaron al audio sin procesar, el mejor por 4.7 puntos. El patrón general, y la única frase que llevarte de este post: la mejora paga donde el audio es genuinamente malo y te cuesta donde no lo es.
Las siete condiciones sin ganador son la imagen especular e igual de legibles: las dos con reverberación, donde todos los motores empeoraron las cosas, y las cinco condiciones de transporte de telefonía, donde en cuatro de cinco lo mejor que logra un motor es un empate exacto con no hacer nada.
Lo que nada de eso vindica es la afirmación general. Quail VF agregado sobre las dieciocho condiciones queda en 18.1%, más de tres puntos peor que no hacer nada, porque también corre sobre audio limpio, reverberante y de banda estrecha donde solo puede quitar información. Un modelo que gana sus condiciones de diseño por cinco o seis puntos y pierde el resto no es un preprocesamiento por defecto. Es una decisión de enrutamiento, que es el argumento entero de El pipeline dividido.
Salvedades, completas
Estas deben ir pegadas a cada número de arriba.
- Un solo reconocedor. faster-whisper base.en. Un reconocedor distinto da números absolutos distintos. El arnés soporta Deepgram y AssemblyAI, así que el orden puede volver a comprobarse con otro motor, y nos gustaría que alguien lo hiciera.
- Unas 190 palabras de referencia por condición, 3420 agregadas. Suficiente para separar efectos grandes, no para resolver uno o dos puntos de WER: una palabra vale aproximadamente 0.5 puntos por condición, 0.03 agregado. Trata la diferencia entre el audio sin procesar y Quail L como un empate; las brechas de cinco a veinte puntos por debajo no son empates.
- DeepFilterNet3 se mide a través de un adaptador block-online, porque ningún export público de ONNX lleva los tensores de estado recurrente, lo que hace imposible el streaming por frame con los pesos publicados. Su 35.2% es una cota inferior de calidad y una cota superior de coste, no una lectura justa del modelo. No cites ese número sin esta frase.
- Las filas de ai-coustics son una línea base propietaria ejecutada a través del SDK con licencia. Un punto de referencia, nunca una ruta de código que nosotros vayamos a desplegar.
- Licencias. El ruido de ESC-50 es CC-BY-NC-3.0, así que esas condiciones son solo de evaluación. LibriSpeech es CC-BY-4.0, y las condiciones de murmullo y de hablante que compite se construyen solo con LibriSpeech, así que no llevan restricción NC.
- onnxruntime fijado a un hilo intra-op. La columna RTF es un stream en un núcleo, no un reparto por toda la máquina.
Lo que todavía no sabemos
- Si algún proveedor de STT entrena con audio mejorado. Si un reconocedor ha visto artefactos de supresor en el entrenamiento, su sensibilidad a ellos es completamente distinta, y ninguno de nosotros puede ver dentro de esos conjuntos de entrenamiento.
- Cómo estaban configurados los modelos de mejora en las afirmaciones publicadas por los proveedores. La agresividad suele ser ajustable, y el mismo modelo con dos ajustes puede caer en lados opuestos del cero.
- Cuánto de esto se transfiere al STT de streaming. Nuestra mejora se ejecuta bloque a bloque con estado que se transporta entre bloques, pero el reconocedor se puntúa sobre enunciados completos. La estabilidad de los parciales y la latencia hasta el final son una medición aparte.
- Si esto se sostiene fuera del inglés, o con un corpus más grande. No necesariamente. El manifiesto y el arnés son públicos para que esto sea una pregunta que alguien pueda responder en lugar de debatir.
Qué hacemos con el resultado
Se siguen dos cosas, y ninguna de ellas es «la mejora es inútil».
La primera es arquitectónica. La misma ejecución midió la VAD, y ahí el cuadro se invierte: la mejora apenas mueve la F1 de la VAD pero recorta sustancialmente la tasa de falsas alarmas exactamente en las condiciones que causan interrupciones (barge-in) espurias. Esa es una razón real y medida para enviar audio mejorado a tu detector de turnos y audio sin procesar a tu reconocedor, que es lo que nuestro SDK hace por defecto — los números y el razonamiento están en El pipeline dividido.
La segunda es hacia dónde fue nuestro producto. En las condiciones de banda estrecha, ningún mejorador produjo una mejora significativa y varios se degradaron gravemente — FastEnhancer-T por 6.8 puntos y DeepFilterNet3 por 9.5 — y ahí es donde está el volumen de llamadas. Eso es Clearline, y es lo que vendemos. Dos notas de honestidad adjuntas: nuestras condiciones de telefonía son una ida y vuelta G.711 sobre habla limpia, sin eco, pérdida de paquetes ni acústica del terminal, y ningún motor nativo de 8 kHz ha sido medido todavía en el benchmark, el nuestro incluido. Así que este es un resultado negativo sobre el campo existente, no un resultado positivo sobre nosotros. El benchmark no es el producto — un benchmark no tiene comprador ni retención. Es cómo sabemos qué construir y cómo tú compruebas si estamos mintiendo.
Cada celda, incluidas las que perdemos, está en /benchmark. El arnés, el manifiesto del dataset y las configuraciones están en github.com/anecho, y el método está descrito en Lo que publicamos: un benchmark abierto para la mejora de voz. Si quieres que se añada una condición, un motor o un reconocedor, abre un issue.