From 8e9d7750a7411fa77552426150b9775cf36105de Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 28 Jul 2026 06:49:35 -0500 Subject: [PATCH] =?UTF-8?q?fix:=20revertir=20selecci=C3=B3n=20de=20voz=20a?= =?UTF-8?q?=20es-CO=20(online)=20=E2=80=94=20mejor=20calidad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- modules/turnero/views/display_global.php | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/modules/turnero/views/display_global.php b/modules/turnero/views/display_global.php index bd42cd9..2de060f 100644 --- a/modules/turnero/views/display_global.php +++ b/modules/turnero/views/display_global.php @@ -509,21 +509,13 @@ function playBeep() { } catch (_) {} } -// Selección de voz española — preferir locales (offline) sobre online para evitar fallos de red +// Selección de voz española — cargada una vez, reutilizada en cada anuncio let _vozES = null; function getVozES() { if (_vozES) return _vozES; const voices = window.speechSynthesis.getVoices(); - // 1) Voz local (localService=true) en orden de preferencia - for (const lang of ['es-CO','es-MX','es-US','es-ES']) { - const v = voices.find(v => v.lang === lang && v.localService); - if (v) { _vozES = v; return v; } - } - // 2) Cualquier voz local en español - const vLocal = voices.find(v => v.lang.startsWith('es') && v.localService); - if (vLocal) { _vozES = vLocal; return vLocal; } - // 3) Fallback: voz online (puede fallar sin internet) - for (const lang of ['es-CO','es-MX','es-US','es-ES']) { + // Preferencia: es-CO → es-419 → es-MX → es-US → es-ES → cualquier es-* + for (const lang of ['es-CO','es-419','es-MX','es-US','es-ES']) { const v = voices.find(v => v.lang === lang); if (v) { _vozES = v; return v; } }