Metodología
Transparente y reproducible.
Cualquiera puede volver a correr este benchmark y obtener los mismos datos de partida. Esto es exactamente lo que hacemos.
01
Datos de audio
- Rioplatense: OpenSLR SLR61 (es_AR), Google, CC BY-SA 4.0.
- Colombiano: OpenSLR SLR72 (es_CO), Google, CC BY-SA 4.0.
- Neutro (LatAm): FLEURS es_419, Google, CC BY 4.0.
- Portugués (BR): FLEURS pt_br, Google, CC BY 4.0.
- Mexicano (STT): Próximamente. No encontramos todavía un dataset abierto descargable sin registro.
Selección determinística: archivos ordenados alfabéticamente, un audio por hablante, 20 por acento (10 mujeres + 10 hombres en OpenSLR).
02
Voz a texto (STT)
- Cada modelo transcribe cada audio con el idioma forzado (es/pt), beam_size=1, sin filtro de silencio (no_speech_threshold=None) y sin condicionar en texto previo, igual para todos.
- Normalizamos texto: minúsculas, sin puntuación, espacios colapsados. Conservamos tildes y ñ.
- WER y CER agregados por acento con jiwer.
- Latencia p50 = mediana del tiempo total de transcripción por frase en CPU (8 hilos, sin GPU), tras una corrida de calentamiento.
03
Texto a voz (TTS)
- Cada voz sintetiza las frases de referencia del acento.
- Inteligibilidad: el audio sintetizado se transcribe con whisper-large-v3-turbo y se calcula WER/CER contra el texto. Mide claridad, no naturalidad.
- Latencia p50 = mediana del tiempo hasta obtener el audio completo de la frase en CPU.
- Para mexicano y neutro usamos las frases de FLEURS es_419.
04
Proveedores comerciales
- Se muestran como “Próximamente” con su precio oficial y fuente.
- Solo publicaremos métricas cuando los midamos con cuentas propias, respetando sus términos de uso.
05
Limitaciones
- 20 audios por acento: suficiente para un piloto, no para diferencias finas. Ampliaremos la muestra.
- Los datasets públicos pueden haber sido usados en el entrenamiento de algunos modelos.
- Latencias medidas en CPU local: comparables entre sí, no con APIs en la nube.
06
Reproducir
- python bench/fetch_data.py → descarga el subconjunto exacto
- python bench/run_bench.py → corre todo y regenera web/data/results.json
- VB_LIGHT=1 python bench/run_bench.py → corrida diaria liviana (5 frases por acento)
- Cada corrida guarda un histórico en web/data/history/AAAA-MM-DD.json