Back to the experimentSupporting notebook

Matriz de cuantización sobre las 3 historias — 2026-09-21

Source: moss-tts-awq/quant-matrix-stories-2026-09-21/docs/QUANT-MATRIX-REVIEW.md · revision 6550ead3945b

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)

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