Diseño
Mismo texto (3 historias), seed 1234, sampling MOSS por defecto, referencia
ref/ref_2121_verified_12s_v2.wav (12,532 s) siempre codificada en FP32.
Variable por celda: generador × codec de salida.
| Celda | Generador | Decoder | RTF gen (pooled) | Pico VRAM gen | Audio total |
|---|---|---|---|---|---|
bf16_fp32dec |
BF16 denso | FP32 denso | 0,4007 | 16,17 GiB | 117,84 s |
bf16_int8dec |
BF16 denso | INT8-SAFE | 0,3958 | 17,85 GiB | 117,84 s |
hq4_fp32dec |
HQ4 (AutoRound INT4) | FP32 denso | 0,3582 | 6,59 GiB | 131,68 s |
hq4_int8dec |
HQ4 (AutoRound INT4) | INT8-SAFE | 0,3555 | 8,27 GiB | 131,68 s |
awq_fp32dec |
AWQ INT4 | FP32 denso | 0,3316 | 6,59 GiB | 110,40 s |
awq_int8dec |
AWQ INT4 | INT8-SAFE | 0,3384 | 8,27 GiB | 112,16 s |
awq_int8deconly |
AWQ INT4 | INT8-SAFE (decoder-only) | 0,3435 | 7,42 GiB | 122,32 s |
Celda extra (--decoder-only): el codec INT8-SAFE se carga completo (vía
validada) y se le amputa el encoder (ModuleList de 0,83 GiB) antes de subir a
GPU — el decoder jamás lo toca. Similitud full-coverage 0,950–0,967 (media por
historia), consistente con la celda completa. RTF e2e 0,3533. Es la
configuración de producción recomendada: mismo audio, 0,85 GiB menos de pico.
Harness: run_stories_quant_matrix.py (una celda por invocación, protección
anti-sobrescritura). Métricas: logs/quantmatrix/<cell>.json.
Incidente: bf16_fp32dec OOM en el primer intento — el codec denso FP32
residente + modelo BF16 superan 24 GB. Fix: el codec FP32 se aparca en CPU
durante la generación y vuelve a GPU solo para decodificar cada historia
(picos disjuntos). Con INT8 codec no hace falta.
Similitud de hablante (WavLM x-vector, ventanas 8 s / hop 4 s)
Media por historia (mín–máx de ventanas en logs/quantmatrix/speaker_scores.json):
| Celda | Historia 1 | Historia 2 | Historia 3 |
|---|---|---|---|
bf16_fp32dec |
0,9648 | 0,9580 | 0,9590 |
bf16_int8dec |
0,9648 | 0,9580 | 0,9591 |
hq4_fp32dec |
0,9531 | 0,9601 | 0,9527 |
hq4_int8dec |
0,9535 | 0,9603 | 0,9527 |
awq_fp32dec |
0,9605 | 0,9603 | 0,9561 |
awq_int8dec |
0,9597 | 0,9577 | 0,9491 |
Anclas: mismo speaker (dos clips reales) 0,9674; otra hablante 0,8871; masculino 0,7498. Lectura: decoder FP32 vs INT8 ≈ sin diferencia (≤0,001, otra vez). Generador: BF16 ≥ AWQ ≳ HQ4, todas muy por encima del control femenino; HQ4 tuvo la ventana mínima más baja (0,915 en historia 1). Esto NO mide acento ni naturalidad — la comparación relevante es de escucha.
Observaciones de escucha pendientes (sitio)
- Duraciones distintas con el mismo texto: HQ4 habla más lento (131,7 s), AWQ más rápido (110–112 s), BF16 intermedio (117,8 s). El pacing es audible.
- Pregunta abierta principal: ¿BF16 suena más latinoamericano que AWQ/HQ4?
Veredicto de escucha (usuario, 2026-09-21)
Tras comparar en el sitio, el usuario reportó que el AWQ INT4 suena excelente, “sin diferencia básicamente” respecto del BF16 denso — un oyente, impresión subjetiva, sin ABX ciego. Combinado con RTF 0,33 / 6,6 GiB vs 0,40 / 16–18 GiB, el AWQ INT4 queda como default de despliegue para clonación con esta voz.
Sitio de escucha
Estático, sin telemetría: site/index.html (build: build_quant_site.py).
Servido en private workstation service (ThreadingHTTPServer con
Cache-Control: no-cache; la URL canónica siempre sirve la última versión).
Referencias reales incluidas arriba de las tablas; cada fila = variante con
reproductor MP3. Colores: azul BF16, verde HQ4, naranja AWQ.
Estado
- Generación 6/6 celdas DONE; scorer DONE; sitio servido y verificado (HTTP 200).
- Escucha usuario: DONE — AWQ ≈ BF16 (“sin diferencia básicamente”), excelente. Cuestión del acento (latinoamericano vs peninsular): sin veredicto explícito.