|
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", |
|
}); |
|
return response.data; |
|
} catch (error) { |
|
console.error("Error synthesizing TTS:", error); |
|
throw error; |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
async synthesizeSSML({ ssml, format = "mp3" }) { |
|
try { |
|
const response = await this.client.post( |
|
"/v1/ssml", |
|
{ |
|
ssml, |
|
format, |
|
}, |
|
{ |
|
responseType: "blob", |
|
} |
|
); |
|
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", |
|
} |
|
); |
|
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}` |
|
); |
|
|