30 lines
527 B
TypeScript
30 lines
527 B
TypeScript
"use client"
|
|
|
|
let utterance: SpeechSynthesisUtterance | null = null
|
|
|
|
export async function speak(
|
|
text: string,
|
|
_rate = 0.85,
|
|
): Promise<void> {
|
|
return new Promise((resolve) => {
|
|
stopSpeaking()
|
|
|
|
const u = new SpeechSynthesisUtterance(text)
|
|
u.lang = "es-AR"
|
|
u.rate = _rate
|
|
|
|
u.onend = () => resolve()
|
|
u.onerror = () => resolve()
|
|
|
|
utterance = u
|
|
speechSynthesis.speak(u)
|
|
})
|
|
}
|
|
|
|
export function stopSpeaking(): void {
|
|
if (utterance) {
|
|
speechSynthesis.cancel()
|
|
utterance = null
|
|
}
|
|
}
|