UNPKG

@lobehub/tts

Version:

A high-quality & reliable TTS React Hooks library

39 lines (37 loc) 1.47 kB
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 };