Phase 06 - Lesson 17
Evaluación de audio — WER, MOS, UTMOS, MMAU, FAD y los leaderboards abiertos
This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.
No puedes lanzar lo que no puedes medir. Esta lección nombra las métricas de 2026 para cada tarea de audio: ASR (WER, CER, RTFx), TTS (MOS, UTMOS, SECS, WER por ida y vuelta en ASR), audio-lenguaje (MMAU, LongAudioBench), música (FAD, CLAP) y locutor (EER). Además de los leaderboards donde comparas.
Tipo: Aprender Lenguajes: Python Prerrequisitos: Fase 6 · 04, 06, 07, 09, 10; Fase 2 · 09 (Evaluación de Modelos) Tiempo: ~60 minutos
El Problema
Cada tarea de audio tiene múltiples métricas, cada una midiendo un eje distinto. Usar la métrica equivocada es como lanzas un modelo que luce excelente en tu dashboard y pésimo en producción. La lista canónica de 2026:
| Tarea | Primaria | Secundaria |
|---|---|---|
| ASR | WER | CER · RTFx · latencia del primer token |
| TTS | MOS / UTMOS | SECS · WER por ida y vuelta en ASR · CER · TTFA |
| Clonación de voz | SECS (coseno ECAPA) | MOS · CER |
| Verificación de locutor | EER | minDCF · FAR / FRR en el punto de operación |
| Diarización | DER | JER · confusión de locutores |
| Clasificación de audio | top-1 · mAP | F1 macro · recall por clase |
| Generación de música | FAD | CLAP · MOS de panel de escucha |
| Modelo de audio-lenguaje | MMAU-Pro | LongAudioBench · AudioCaps FENSE |
| S2S en streaming | latencia P50/P95 | WER · MOS |
El Concepto
Métricas de ASR
WER (Word Error Rate). (S + D + I) / N. Pasa a minúsculas, quita la puntuación, normaliza los números antes de puntuar. Usa jiwer o el whisper_normalizer de OpenAI. < 5% = paridad humana en habla leída.
CER (Character Error Rate). Misma fórmula, a nivel de carácter. Se usa para lenguas tonales (mandarín, cantonés) donde la segmentación de palabras es ambigua.
RTFx (factor inverso de tiempo real). Segundos de audio procesados por segundo de reloj. Más alto es mejor. Parakeet-TDT alcanza 3380×. Whisper-large-v3 ronda los ~30×.
Latencia del primer token. Tiempo de reloj desde la entrada de audio hasta el primer token de la transcripción. Crítico para streaming. Deepgram Nova-3: ~150 ms.
Métricas de TTS
MOS (Mean Opinion Score). Calificación humana de 1 a 5. Estándar de oro, pero lento. Recolecta más de 20 oyentes por muestra, más de 100 muestras por modelo.
UTMOS (2022-2026). Predictor de MOS aprendido. Correlaciona ~0,9 con el MOS humano en benchmarks estándar. F5-TTS: UTMOS 3,95; verdad de referencia: 4,08.
SECS (Speaker Encoder Cosine Similarity). Para clonación de voz. Coseno del embedding ECAPA entre la referencia y la salida clonada. > 0,75 = clon reconocible.
WER por ida y vuelta en ASR. Ejecuta Whisper sobre la salida del TTS y calcula el WER contra el texto de entrada. Detecta regresiones de inteligibilidad. SOTA de 2026: < 2% CER.
TTFA (time-to-first-audio). Latencia de reloj. Kokoro-82M: ~100 ms; F5-TTS: ~1 s.
Específico de la clonación de voz
SECS + MOS + CER como un trío. Una clonación que puntúa SECS alto pero MOS bajo significa timbre-correcto-pero-no-natural; lo opuesto significa voz natural pero locutor equivocado.
Verificación de locutor
EER (Equal Error Rate). El umbral donde la Tasa de Falsa Aceptación iguala a la Tasa de Falso Rechazo. ECAPA en VoxCeleb1-O: 0,87%.
minDCF (costo mínimo de detección). Costo ponderado en un punto de operación elegido (a menudo FAR=0,01). Más relevante para producción que el EER.
Diarización
DER (Diarization Error Rate). (FA + Miss + Confusion) / total_speaker_time. Habla perdida + habla de falsa alarma + confusión de locutores, cada una como una fracción. Reuniones AMI: DER ~10-20% es realista. pyannote 3.1 + Precision-2 comercial: <10% DER en audio bien grabado.
JER (Jaccard Error Rate). Alternativa al DER, robusta al sesgo de segmentos cortos.
Clasificación de audio
Multietiqueta: mAP (mean Average Precision) sobre todas las clases. AudioSet: 0,548 mAP para BEATs-iter3.
Multiclase exclusiva: exactitud top-1, top-5. Speech Commands v2: 99,0% top-1 (Audio-MAE).
Desbalanceada: F1 macro + recall por clase. Reporta por clase — la exactitud agregada oculta qué clases fallan.
Generación de música
FAD (Fréchet Audio Distance). Distancia entre las distribuciones de embeddings VGGish de audio real vs generado. MusicGen-small en MusicCaps: 4,5. MusicLM: 4,0. Más bajo es mejor.
CLAP Score. Puntuación de alineación texto-audio usando embeddings CLAP. > 0,3 = alineación razonable.
MOS de panel de escucha. Sigue siendo la palabra final para música de nivel de consumo. Suno v5 ELO 1293 en TTS Arena (a partir de preferencias humanas pareadas).
Benchmarks de audio-lenguaje
MMAU (Massive Multi-Audio Understanding). 10k pares audio-QA.
MMAU-Pro. 1800 ítems difíciles, cuatro categorías: habla / sonido / música / multi-audio. Acierto aleatorio del 25% en 4 vías. Gemini 2.5 Pro general ~60%; multi-audio ~22% en todos los modelos.
LongAudioBench. Clips de varios minutos con consultas semánticas. Audio Flamingo Next supera a Gemini 2.5 Pro.
AudioCaps / Clotho. Benchmarks de subtitulado. Métricas SPICE, CIDEr, FENSE.
Habla-a-habla en streaming
Latencia P50 / P95 / P99. Tiempo de reloj desde el fin del habla del usuario hasta la primera respuesta audible. Moshi: 200 ms; GPT-4o Realtime: 300 ms.
WER / MOS en la salida.
Capacidad de respuesta a barge-in. Tiempo desde la interrupción del usuario hasta el silenciamiento del asistente. Objetivo < 150 ms.
Los leaderboards de 2026
| Leaderboard | Hace seguimiento de | URL |
|---|---|---|
| Open ASR Leaderboard (HF) | inglés + multilingüe + forma larga | huggingface.co/spaces/hf-audio/open_asr_leaderboard |
| TTS Arena (HF) | TTS en inglés | huggingface.co/spaces/TTS-AGI/TTS-Arena |
| Artificial Analysis Speech | TTS + STT, ELO de votos pareados | artificialanalysis.ai/speech |
| MMAU-Pro | razonamiento LALM | mmaubenchmark.github.io |
| SpeakerBench / VoxSRC | reconocimiento de locutor | voxsrc.github.io |
| Subconjunto de música de MMAU | LALM de música | (dentro de MMAU) |
| Benchmark HEAR | audio autosupervisado | hearbenchmark.com |
Constrúyelo
Paso 1: WER con normalización
from jiwer import wer, Compose, ToLowerCase, RemovePunctuation, Strip
transform = Compose([ToLowerCase(), RemovePunctuation(), Strip()])
score = wer(
truth="Please turn on the lights.",
hypothesis="please turn on the light",
truth_transform=transform,
hypothesis_transform=transform,
)
# ~0.17
Paso 2: WER de ida y vuelta en TTS
def ttr_wer(tts_model, asr_model, texts):
errors = []
for txt in texts:
audio = tts_model.synthesize(txt)
recog = asr_model.transcribe(audio)
errors.append(wer(truth=txt, hypothesis=recog))
return sum(errors) / len(errors)
Paso 3: SECS para clonación de voz
from speechbrain.inference.speaker import EncoderClassifier
sv = EncoderClassifier.from_hparams("speechbrain/spkrec-ecapa-voxceleb")
emb_ref = sv.encode_batch(load_wav("reference.wav"))
emb_clone = sv.encode_batch(load_wav("cloned.wav"))
secs = torch.nn.functional.cosine_similarity(emb_ref, emb_clone, dim=-1).item()
Paso 4: FAD para generación de música
from frechet_audio_distance import FrechetAudioDistance
fad = FrechetAudioDistance()
score = fad.get_fad_score("generated_folder/", "reference_folder/")
Paso 5: EER para verificación de locutor (mismo código que la Lección 6)
def eer(same_scores, diff_scores):
thresholds = sorted(set(same_scores + diff_scores))
best = (1.0, 0.0)
for t in thresholds:
far = sum(1 for s in diff_scores if s >= t) / len(diff_scores)
frr = sum(1 for s in same_scores if s < t) / len(same_scores)
if abs(far - frr) < best[0]:
best = (abs(far - frr), (far + frr) / 2)
return best[1]
Úsalo
Acopla cada despliegue a un arnés de evaluación fijo que se ejecute en cada actualización de modelo. Tres reglas cardinales:
- Normaliza antes de puntuar. Minúsculas, quitar puntuación, expandir números. Reporta la regla de normalización.
- Reporta distribuciones, no promedios. P50/P95/P99 para latencia. Recall por clase para clasificación. Por categoría para MMAU.
- Ejecuta un benchmark público canónico. Aunque tus datos de producción difieran, reportar en Open ASR / TTS Arena / MMAU permite que los revisores comparen manzanas con manzanas.
Trampas
- Extrapolación de UTMOS. Entrenado en habla limpia estilo VCTK; puntúa mal el audio ruidoso / clonado / emocional.
- Sesgo del panel de MOS. 20 trabajadores de Amazon Mechanical Turk ≠ 20 usuarios objetivo. Paga por un panel de dominio si lo que está en juego es alto.
- FAD depende del conjunto de referencia. Compara contra la misma distribución de referencia entre los modelos.
- WER agregado. Un WER general del 5% puede ocultar un 30% de WER en habla con acento. Reporta por segmento demográfico.
- Saturación de benchmarks públicos. La mayoría de los modelos de frontera están cerca del techo en los benchmarks estándar. Construye un conjunto interno reservado que refleje tu tráfico.
Lánzalo
Guárdalo como outputs/skill-audio-evaluator.md. Elige métricas, benchmarks y formato de reporte para cualquier lanzamiento de modelo de audio.
Ejercicios
- Fácil. Ejecuta
code/main.py. Calcula WER / CER / EER / SECS / FAD-ish / MMAU-ish sobre entradas de juguete. - Medio. Construye un arnés de WER de ida y vuelta en TTS. Pasa la salida de tu Kokoro o F5-TTS por Whisper. Calcula el WER sobre 50 prompts. Marca los prompts con WER > 10%.
- Difícil. Puntúa tu elección de LALM de la Lección 10 en los subconjuntos de habla + multi-audio de MMAU-Pro (50 ítems cada uno). Reporta la exactitud por categoría y compárala con el número publicado.
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| WER | Puntuación de ASR | (S+D+I)/N a nivel de palabra tras la normalización. |
| CER | WER de carácter | Para lenguas tonales o sistemas a nivel de carácter. |
| MOS | Opinión humana | Calificación de 1 a 5; más de 20 oyentes × 100 muestras. |
| UTMOS | Predictor de MOS por ML | Modelo aprendido; correlaciona ~0,9 con el MOS humano. |
| SECS | Similitud de clon de voz | Coseno ECAPA entre referencia y clon. |
| EER | Puntuación de verif. de locutor | Umbral donde FAR = FRR. |
| DER | Puntuación de diarización | (FA + Miss + Confusion) / total. |
| FAD | Calidad de generación de música | Distancia de Fréchet en embeddings VGGish. |
| RTFx | Throughput | Segundos de audio por segundo de reloj. |
Lectura Adicional
- jiwer — biblioteca de WER/CER con utilidades de normalización.
- UTMOS (Saeki et al. 2022) — predictor de MOS aprendido.
- Fréchet Audio Distance (Kilgour et al. 2019) — el estándar para la generación de música.
- Open ASR Leaderboard — rankings en vivo de 2026.
- TTS Arena — leaderboard de TTS por voto humano.
- MMAU-Pro benchmark — leaderboard de razonamiento LALM.
- HEAR benchmark — benchmarks de SSL de audio.