Pantalla TV: el pito tapaba la primera palabra, y página para elegir voz
El llamado se oía "entrecortado" por dos motivos distintos. playBeep() y speak() salían en el mismo instante, y el pito dura 0,65 s con volumen 0,35: "Turno A-01" se pronunciaba por debajo del tono y desde lejos parecía que el anuncio empezaba ya empezado. Se vuelve a esperar los 700 ms que el código tenía antes de que se quitaran. El otro motivo es la voz. getVozES() pide es-CO, que en Chrome es la de Google: remota. Cada llamado la baja de internet, así que con wifi flojo se corta o no suena. Las voces disponibles las decide el televisor, no el ERP, así que en vez de adivinar se agrega /erp.php?m=turnero&v=voces: lista las voces del equipo, marca cuáles son locales y cuáles se bajan de internet, señala la que está sonando hoy y deja oír cada una con el texto real de un llamado. Hay que abrirla en el televisor. Queda descartado el eco entre pantallas: hay un solo televisor con sonido. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
cd087f65af
commit
db133d9b5d
@@ -588,15 +588,17 @@ function anunciarTurno(codigo, destino, paciente) {
|
||||
if (voz) utt.voice = voz;
|
||||
utt.rate = 0.95; utt.pitch = 1.05; utt.volume = 1;
|
||||
|
||||
// Con el sintetizador libre se habla de inmediato. Solo cuando hay algo en
|
||||
// curso hace falta cancelar y esperar un instante: Chrome ignora un speak()
|
||||
// encadenado a un cancel() en el mismo ciclo.
|
||||
// Se espera a que el pito termine (dura 0,65 s) antes de hablar. Hablando
|
||||
// encima, el tono tapaba "Turno X" y desde lejos parecía que el anuncio
|
||||
// empezaba ya empezado.
|
||||
const BEEP_MS = 700;
|
||||
|
||||
// Solo cuando hay algo en curso hace falta cancelar: Chrome ignora un
|
||||
// speak() encadenado a un cancel() en el mismo ciclo.
|
||||
if (window.speechSynthesis.speaking || window.speechSynthesis.pending) {
|
||||
window.speechSynthesis.cancel();
|
||||
setTimeout(() => window.speechSynthesis.speak(utt), 80);
|
||||
} else {
|
||||
window.speechSynthesis.speak(utt);
|
||||
}
|
||||
setTimeout(() => window.speechSynthesis.speak(utt), BEEP_MS);
|
||||
return utt;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user