// Função de voz premium (ElevenLabs) — com controle de velocidade var SPEAK_RATE = 0.80; function _elSpeak(txt) { if (!txt) return; console.log("Adam ElevenLabs: " + txt); if (window.currentAudio) { window.currentAudio.pause(); window.currentAudio = null; } var audio = new Audio('/api/speak?text=' + encodeURIComponent(txt)); audio.playbackRate = SPEAK_RATE; window.currentAudio = audio; audio.play().catch(function(e) { console.log("Erro áudio:", e); }); } function _elSpeakConv(q, a) { if (window.currentAudio) { window.currentAudio.pause(); window.currentAudio = null; } var answered = false; var aq = new Audio('/api/speak?text=' + encodeURIComponent(q)); var aa = new Audio('/api/speak?text=' + encodeURIComponent(a)); aq.playbackRate = SPEAK_RATE; aa.playbackRate = SPEAK_RATE; window.currentAudio = aq; function playAnswer() { if (answered) return; answered = true; if (window.currentAudio) { window.currentAudio.pause(); window.currentAudio = null; } window.currentAudio = aa; aa.play().catch(function(e) { console.log(e); }); } aq.onended = function() { setTimeout(playAnswer, 2000); }; var estimatedMs = Math.max(4000, q.length * 80) + 2000; setTimeout(playAnswer, estimatedMs); aq.play().catch(function(e) { console.log(e); }); } window.speak = _elSpeak; window.speakConv = _elSpeakConv; window.addEventListener('load', function() { window.sp = _elSpeak; window.speak = _elSpeak; window.speakConv = _elSpeakConv; console.log("Fix ElevenLabs aplicado — velocidade: " + SPEAK_RATE); }); if (window.speechSynthesis) { window.speechSynthesis.speak = function() { return false; }; } (function(){ var style = document.createElement('style'); style.textContent = '.vsel, #vsel, .dot, #dot, span.dot { display: none !important; } label[for="vsel"], span[style*="uppercase"] { display: none !important; }'; document.head.appendChild(style); })(); console.log("Fix ElevenLabs carregado — velocidade: " + SPEAK_RATE);