alltalk.js resolve V1 URL duplication in AllTalk TTS audio output

Fix URL concatenation issue where base URL was being duplicated in audio file paths. 

Updated handling of V1 (full URL) and V2 (relative path) API response formats to prevent `http://localhost:7851http://127.0.0.1:7851` type errors.
This commit is contained in:
erew123
2025-01-30 17:21:41 +00:00
committed by GitHub
parent cc010643ad
commit 2318df8b74

View File

@ -262,13 +262,13 @@ class AllTalkTtsProvider {
console.debug('AllTalkTTS: Settings loaded'); console.debug('AllTalkTTS: Settings loaded');
try { try {
// Check if TTS provider is ready // Check if TTS provider is ready
this.setupEventListeners();
this.updateLanguageDropdown();
await this.checkReady(); await this.checkReady();
await this.updateSettingsFromServer(); // Fetch dynamic settings from the TTS server await this.updateSettingsFromServer(); // Fetch dynamic settings from the TTS server
await this.fetchTtsVoiceObjects(); // Fetch voices only if service is ready await this.fetchTtsVoiceObjects(); // Fetch voices only if service is ready
await this.fetchRvcVoiceObjects(); // Fetch RVC voices await this.fetchRvcVoiceObjects(); // Fetch RVC voices
this.updateNarratorVoicesDropdown(); this.updateNarratorVoicesDropdown();
this.updateLanguageDropdown();
this.setupEventListeners();
this.applySettingsToHTML(); this.applySettingsToHTML();
updateStatus('Ready'); updateStatus('Ready');
} catch (error) { } catch (error) {
@ -388,7 +388,7 @@ class AllTalkTtsProvider {
} }
async fetchRvcVoiceObjects() { async fetchRvcVoiceObjects() {
if (this.settings.server_version == 'v2') { if (this.settings.server_version !== 'v1') {
console.log('Skipping RVC voices fetch for V1 server'); console.log('Skipping RVC voices fetch for V1 server');
return []; return [];
} }
@ -1031,14 +1031,18 @@ class AllTalkTtsProvider {
console.error('fetchTtsGeneration Error Response Text:', errorText); console.error('fetchTtsGeneration Error Response Text:', errorText);
throw new Error(`HTTP ${response.status}: ${errorText}`); throw new Error(`HTTP ${response.status}: ${errorText}`);
} }
const data = await response.json(); const data = await response.json();
// Handle V1/V2 URL differences // V1 returns a complete URL, V2 returns a relative path
const outputUrl = this.settings.server_version === 'v1' if (this.settings.server_version === 'v1') {
? data.output_file_url // V1 returns full URL // V1: Use the complete URL directly from the response
: `${this.settings.provider_endpoint}${data.output_file_url}`; // V2 returns relative path return data.output_file_url;
} else {
// V2: Combine the endpoint with the relative path
return `${this.settings.provider_endpoint}${data.output_file_url}`;
}
return outputUrl;
} catch (error) { } catch (error) {
console.error('[fetchTtsGeneration] Exception caught:', error); console.error('[fetchTtsGeneration] Exception caught:', error);
throw error; throw error;