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; } }