import axios from "axios"; class APIClient { constructor(baseURL) { this.client = axios.create({ baseURL: baseURL, headers: { "Content-Type": "application/json", }, }); } async synthesizeTTS({ text, spk = "female2", style = "chat", temperature = 0.3, top_P = 0.7, top_K = 20, seed = 34060637, format = "mp3", prompt1 = "", prompt2 = "", prefix = "", }) { try { const response = await this.client.get("/v1/tts", { params: { text, spk, style, temperature, top_P, top_K, seed, format, prompt1, prompt2, prefix, }, responseType: "blob", // Important for handling binary data }); return response.data; } catch (error) { console.error("Error synthesizing TTS:", error); throw error; } } /** * * @param {string} ssml - The SSML text to synthesize * @param {string} format - The format of the synthesized audio (e.g. "mp3") */ async synthesizeSSML({ ssml, format = "mp3" }) { try { const response = await this.client.post( "/v1/ssml", { ssml, format, }, { responseType: "blob", // Important for handling binary data } ); return response.data; } catch (error) { console.error("Error synthesizing SSML:", error); throw error; } } async openaiSpeechAPI({ input, model = "chattts-4w", voice = "female2", response_format = "mp3", speed = 1, }) { try { const response = await this.client.post( "/v1/audio/speech", { input, model, voice, response_format, speed, }, { responseType: "blob", // Important for handling binary data } ); return response.data; } catch (error) { console.error("Error generating speech audio:", error); throw error; } } async refineText({ text, prompt = "[oral_2][laugh_0][break_6]", seed = -1, top_P = 0.7, top_K = 20, temperature = 0.7, repetition_penalty = 1.0, max_new_token = 384, }) { try { const response = await this.client.post("/v1/prompt/refine", { text, prompt, seed, top_P, top_K, temperature, repetition_penalty, max_new_token, }); return response.data; } catch (error) { console.error("Error refining text:", error); throw error; } } async listStyles() { try { const response = await this.client.get("/v1/styles/list"); return response.data; } catch (error) { console.error("Error listing styles:", error); throw error; } } async listSpeakers() { try { const response = await this.client.get("/v1/speakers/list"); return response.data; } catch (error) { console.error("Error listing speakers:", error); throw error; } } async createSpeaker({ name, seed }) { try { const response = await this.client.post("/v1/speaker/create", { name, seed, }); return response.data; } catch (error) { console.error("Error creating speaker:", error); throw error; } } } export const client = new APIClient( localStorage.getItem("__chattts_playground_api_base__") || `${window.location.origin}` );