@lobehub/tts
Version:
A high-quality & reliable TTS React Hooks library
39 lines (37 loc) • 1.47 kB
JavaScript
import { genSSML } from "../utils/genSSML.mjs";
import { v4 } from "uuid";
//#region src/core/MicrosoftSpeechTTS/createMicrosoftSpeech.ts
const MICROSOFT_SPEECH_URL = "https://southeastasia.api.speech.microsoft.com/accfreetrial/texttospeech/acc/v3.0-beta1/vcg/speak";
const createMicrosoftSpeech = async ({ payload }, { proxyUrl } = {}) => {
const { input, options } = payload;
const DEFAULT_HEADERS = new Headers({
"accept": "*/*",
"accept-language": "zh-CN,zh;q=0.9",
"authority": "southeastasia.api.speech.microsoft.com",
"content-type": "application/json",
"customvoiceconnectionid": v4(),
"origin": "https://speech.microsoft.com",
"sec-ch-ua": "\"Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
});
const body = JSON.stringify({
offsetInPlainText: 0,
properties: { SpeakTriggerSource: "AccTuningPagePlayButton" },
ssml: genSSML(input, options),
ttsAudioFormat: "audio-24khz-48kbitrate-mono-mp3"
});
return fetch(proxyUrl ? proxyUrl : MICROSOFT_SPEECH_URL, {
body,
duplex: "half",
headers: DEFAULT_HEADERS,
method: "POST",
responseType: "arraybuffer"
});
};
//#endregion
export { createMicrosoftSpeech };