From 1e0c5e4129b4281ce91efd6263ca7f56b938ab9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=94=A6=E5=BC=BA?= <1061669148@qq.com> Date: Tue, 11 Mar 2025 22:28:09 +0800 Subject: [PATCH] feat: add style parameter to TTS functions and improve voice selection logic --- workers/src/index.js | 257 +++++++++++++------------------------------ 1 file changed, 79 insertions(+), 178 deletions(-) diff --git a/workers/src/index.js b/workers/src/index.js index 77f5304..8af3a86 100644 --- a/workers/src/index.js +++ b/workers/src/index.js @@ -87,9 +87,10 @@ async function handleRequest(request) { const voiceName = requestUrl.searchParams.get('v') || 'zh-CN-XiaoxiaoMultilingualNeural'; const rate = Number(requestUrl.searchParams.get('r')) || 0; const pitch = Number(requestUrl.searchParams.get('p')) || 0; + const style = requestUrl.searchParams.get('s') || 'general'; const outputFormat = requestUrl.searchParams.get('o') || 'audio-24khz-48kbitrate-mono-mp3'; const download = requestUrl.searchParams.get('d') || false; - const response = await getVoice(text, voiceName, rate, pitch, outputFormat, download); + const response = await getVoice(text, voiceName, rate, pitch, style, outputFormat, download); return response; } @@ -107,40 +108,11 @@ async function handleRequest(request) { response = response.filter(item => item.Locale.toLowerCase().includes(l)); } - if(f === "0") { - response = response.map(item => { - return ` -- !!org.nobody.multitts.tts.speaker.Speaker - avatar: '' - code: ${item.ShortName} - desc: '' - extendUI: '' - gender:${item.Gender === 'Female' ? '0' : '1'} - name: ${item.LocalName} - note: 'wpm: ${item.WordsPerMinute||''}' - param: '' - sampleRate: ${item.SampleRateHertz|| '24000'} - speed: 1.5 - type: 1 - volume: 1` - }) - return new Response(response.join('\n'), headers={ - 'Content-Type': 'application/html; charset=utf-8' - }); - }else if(f === "1"){ - const map = new Map(response.map(item => [item.ShortName, item.LocalName])) - return new Response(JSON.stringify(Object.fromEntries(map)), { - headers: { - 'Content-Type': 'application/json; charset=utf-8' - } - }); - }else { - return new Response(JSON.stringify(response), { - headers:{ - 'Content-Type': 'application/json; charset=utf-8' - } - }); - } + return new Response(JSON.stringify(response), { + headers:{ + 'Content-Type': 'application/json; charset=utf-8' + } + }); } const baseUrl = request.url.split('://')[0] + "://" +requestUrl.host; @@ -205,11 +177,6 @@ async function handleRequest(request) {