diff src/chat.js @ 31:1e7d855afde3

voices
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 03 Aug 2025 17:05:38 -0600
parents 505185272dd7
children d34d709a7a8e
line wrap: on
line diff
--- a/src/chat.js	Sun Aug 03 12:25:01 2025 -0600
+++ b/src/chat.js	Sun Aug 03 17:05:38 2025 -0600
@@ -3,13 +3,22 @@
 let chat;
 
 function setChat(newChat) {
+	let audioChanged = chat && chat.voice != newChat.voice;
 	chat = newChat;
 	document.querySelector('[content] [name]').textContent = chat.name;
+	if(audioChanged) {
+		let s = `voice=${chat.voice}&`;
+		let audios = document.querySelectorAll('audio[src]');
+		for( let audio of audios ) {
+			audio.src = audio.src.replace(/voice=[^&]+&/,s);
+		}
+	}
 }
 
 function editChat(name) {
 	let dialog = document.querySelector('dialog[edit]');
 	dialog.querySelector('input[name=name]').value = chat.name;
+	dialog.querySelector('select[name=voice]').value = chat.voice;
 	dialog.showModal();
 }
 
@@ -50,7 +59,7 @@
 }
 
 function handleChatMarkdown() {
-	handleMarkdown(chat.language_region);
+	handleMarkdown(chat.language_region,chat.voice);
 }
 
 function scrollToEnd() {
@@ -83,7 +92,7 @@
 	textarea.parentNode.scrollIntoViewIfNeeded(false);
 	if( !audio )
 		audio = document.querySelector('div[buttons] audio');
-	audio.src = `/tts.mp3?lang=${chat.language_region}&text=${encodeURIComponent(textarea.value)}`;
+	audio.src = `/tts.mp3?lang=${chat.language_region}&voice=${chat.voice}&text=${encodeURIComponent(textarea.value)}`;
 }
 
 function askAi() {