zhzluke96
update
01e655b
raw
history blame
3.57 kB
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}`
);