Spaces:
Sleeping
Sleeping
Update templates/index.html
Browse files- templates/index.html +99 -34
templates/index.html
CHANGED
@@ -525,53 +525,118 @@
|
|
525 |
return null;
|
526 |
}
|
527 |
|
528 |
-
// Text-to-Speech function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
529 |
async function speak(text, lang) {
|
530 |
-
const
|
531 |
-
|
|
|
532 |
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
console.warn(`Falling back to default language.`);
|
539 |
-
utterance.lang = 'en-US';
|
540 |
}
|
541 |
-
|
542 |
-
utterance.pitch = 1; // Set pitch
|
543 |
-
utterance.rate = 1; // Set rate
|
544 |
-
window.speechSynthesis.speak(utterance); // Speak the text
|
545 |
}
|
546 |
|
547 |
// Language Handling Function
|
548 |
function speakResponse(text, selectedLanguage) {
|
549 |
let lang;
|
550 |
switch (selectedLanguage.toLowerCase()) {
|
551 |
-
case
|
552 |
-
|
553 |
-
|
554 |
-
case
|
555 |
-
|
556 |
-
|
557 |
-
case
|
558 |
-
|
559 |
-
|
560 |
-
case
|
561 |
-
|
562 |
-
|
563 |
-
case
|
564 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
565 |
}
|
566 |
|
567 |
speak(text, lang); // Call the speak function with the determined language
|
568 |
}
|
569 |
-
|
570 |
-
// Test voices and log them
|
571 |
-
initializeVoices().then(voices => {
|
572 |
-
console.log("Available voices:");
|
573 |
-
voices.forEach(voice => console.log(`Voice: ${voice.name}, Language: ${voice.lang}`));
|
574 |
-
});
|
575 |
|
576 |
|
577 |
// Event listeners for buttons
|
|
|
525 |
return null;
|
526 |
}
|
527 |
|
528 |
+
// // Text-to-Speech function
|
529 |
+
// async function speak(text, lang) {
|
530 |
+
// const voices = await initializeVoices();
|
531 |
+
// const selectedVoice = getVoiceForLanguage(lang, voices);
|
532 |
+
|
533 |
+
// const utterance = new SpeechSynthesisUtterance(text);
|
534 |
+
// if (selectedVoice) {
|
535 |
+
// utterance.voice = selectedVoice;
|
536 |
+
// utterance.lang = selectedVoice.lang;
|
537 |
+
// } else {
|
538 |
+
// console.warn(`Falling back to default language.`);
|
539 |
+
// utterance.lang = 'en-US';
|
540 |
+
// }
|
541 |
+
|
542 |
+
// utterance.pitch = 1; // Set pitch
|
543 |
+
// utterance.rate = 1; // Set rate
|
544 |
+
// window.speechSynthesis.speak(utterance); // Speak the text
|
545 |
+
// }
|
546 |
+
|
547 |
+
// // Language Handling Function
|
548 |
+
// function speakResponse(text, selectedLanguage) {
|
549 |
+
// let lang;
|
550 |
+
// switch (selectedLanguage.toLowerCase()) {
|
551 |
+
// case 'hindi': lang = 'hi-IN'; break;
|
552 |
+
// case 'bengali': lang = 'bn-IN'; break;
|
553 |
+
// case 'telugu': lang = 'te-IN'; break;
|
554 |
+
// case 'marathi': lang = 'mr-IN'; break;
|
555 |
+
// case 'tamil': lang = 'ta-IN'; break;
|
556 |
+
// case 'gujarati': lang = 'gu-IN'; break;
|
557 |
+
// case 'kannada': lang = 'kn-IN'; break;
|
558 |
+
// case 'malayalam': lang = 'ml-IN'; break;
|
559 |
+
// case 'punjabi': lang = 'pa-IN'; break;
|
560 |
+
// case 'odia': lang = 'or-IN'; break;
|
561 |
+
// case 'urdu': lang = 'ur-IN'; break;
|
562 |
+
// case 'assamese': lang = 'as-IN'; break;
|
563 |
+
// case 'sanskrit': lang = 'sa-IN'; break;
|
564 |
+
// default: lang = 'en-US'; break; // English (default)
|
565 |
+
// }
|
566 |
+
|
567 |
+
// speak(text, lang); // Call the speak function with the determined language
|
568 |
+
// }
|
569 |
+
|
570 |
+
// // Test voices and log them
|
571 |
+
// initializeVoices().then(voices => {
|
572 |
+
// console.log("Available voices:");
|
573 |
+
// voices.forEach(voice => console.log(`Voice: ${voice.name}, Language: ${voice.lang}`));
|
574 |
+
// });
|
575 |
+
// Text-to-Speech function using free API
|
576 |
async function speak(text, lang) {
|
577 |
+
const url = `https://translate.google.com/translate_tts?ie=UTF-8&q=${encodeURIComponent(
|
578 |
+
text
|
579 |
+
)}&tl=${lang}&client=tw-ob`;
|
580 |
|
581 |
+
try {
|
582 |
+
const audio = new Audio(url); // Create an audio element
|
583 |
+
audio.play(); // Play the audio
|
584 |
+
} catch (error) {
|
585 |
+
console.error("Error playing the audio:", error);
|
|
|
|
|
586 |
}
|
|
|
|
|
|
|
|
|
587 |
}
|
588 |
|
589 |
// Language Handling Function
|
590 |
function speakResponse(text, selectedLanguage) {
|
591 |
let lang;
|
592 |
switch (selectedLanguage.toLowerCase()) {
|
593 |
+
case "hindi":
|
594 |
+
lang = "hi";
|
595 |
+
break;
|
596 |
+
case "bengali":
|
597 |
+
lang = "bn";
|
598 |
+
break;
|
599 |
+
case "telugu":
|
600 |
+
lang = "te";
|
601 |
+
break;
|
602 |
+
case "marathi":
|
603 |
+
lang = "mr";
|
604 |
+
break;
|
605 |
+
case "tamil":
|
606 |
+
lang = "ta";
|
607 |
+
break;
|
608 |
+
case "gujarati":
|
609 |
+
lang = "gu";
|
610 |
+
break;
|
611 |
+
case "kannada":
|
612 |
+
lang = "kn";
|
613 |
+
break;
|
614 |
+
case "malayalam":
|
615 |
+
lang = "ml";
|
616 |
+
break;
|
617 |
+
case "punjabi":
|
618 |
+
lang = "pa";
|
619 |
+
break;
|
620 |
+
case "odia":
|
621 |
+
lang = "or";
|
622 |
+
break;
|
623 |
+
case "urdu":
|
624 |
+
lang = "ur";
|
625 |
+
break;
|
626 |
+
case "assamese":
|
627 |
+
lang = "as";
|
628 |
+
break;
|
629 |
+
case "sanskrit":
|
630 |
+
lang = "sa";
|
631 |
+
break;
|
632 |
+
default:
|
633 |
+
lang = "en"; // Default to English
|
634 |
+
break;
|
635 |
}
|
636 |
|
637 |
speak(text, lang); // Call the speak function with the determined language
|
638 |
}
|
639 |
+
|
|
|
|
|
|
|
|
|
|
|
640 |
|
641 |
|
642 |
// Event listeners for buttons
|