From 8d331f9ff2f585d0ba58e33b37ceff919a6fb020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=94=A6=E5=BC=BA?= <1061669148@qq.com> Date: Mon, 10 Mar 2025 23:54:16 +0800 Subject: [PATCH] feat: add API key validation and update TTS API documentation --- workers/src/index.js | 80 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/workers/src/index.js b/workers/src/index.js index 54c9ec6..67e5cc2 100644 --- a/workers/src/index.js +++ b/workers/src/index.js @@ -2,12 +2,21 @@ const encoder = new TextEncoder(); let expiredAt = null; let endpoint = null; let clientId = '76a75279-2ffa-4c3d-8db8-7b47252aa41c'; +const API_KEY = 'your-secret-api-key'; // 添加 API 密钥常量,可以修改为你想要的值 async function handleRequest(request) { const requestUrl = new URL(request.url); const path = requestUrl.pathname; if (path === '/tts') { + // 从请求参数获取 API 密钥 + const apiKey = requestUrl.searchParams.get('api_key'); + + // 验证 API 密钥 + if (!validateApiKey(apiKey)) { + return new Response('Unauthorized: Invalid API key', { status: 401 }); + } + const text = requestUrl.searchParams.get('t') || ''; const voiceName = requestUrl.searchParams.get('v') || 'zh-CN-XiaoxiaoMultilingualNeural'; const rate = Number(requestUrl.searchParams.get('r')) || 0; @@ -65,10 +74,68 @@ async function handleRequest(request) { const baseUrl = request.url.split('://')[0] + "://" +requestUrl.host; return new Response(` -
/tts - 将文本转换为语音
api_key [必填]: API访问密钥
+t [必填]: 要转换的文本内容
+v [可选]: 语音名称,默认为 'zh-CN-XiaoxiaoMultilingualNeural'
+r [可选]: 语速调整,范围-100到100,默认为0
+p [可选]: 音调调整,范围-100到100,默认为0
+o [可选]: 输出格式,默认为 'audio-24khz-48kbitrate-mono-mp3'
+d [可选]: 是否作为下载文件返回,设为任意值时启用
+示例: 尝试
+${baseUrl}/tts?api_key=api-key&t=你好,世界&v=zh-CN-XiaoxiaoMultilingualNeural&r=0&p=0
+ /voices - 获取所有可用的语音列表
l [可选]: 按区域筛选,如 'zh'、'zh-CN'、'en' 等
+f [可选]: 返回格式,0=TTS-Server格式,1=MultiTTS格式,默认=完整JSON
+示例 (中文语音): 尝试
+${baseUrl}/voices?l=zh
+ 重要提示:
+/tts 接口的请求必须提供有效的 api_key 参数d 参数