[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-zuoban--tts":3,"tool-zuoban--tts":64},[4,23,32,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,2,"2026-04-10T11:13:16",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},8436,"Real-Time-Voice-Cloning","CorentinJ\u002FReal-Time-Voice-Cloning","Real-Time-Voice-Cloning 是一款开源的实时语音克隆工具，旨在通过短短 5 秒的音频样本，快速复刻说话人的声音特征，并即时生成任意文本的语音内容。它有效解决了传统语音合成需要大量训练数据且无法实时响应的痛点，让个性化语音生成变得轻量且高效。\n\n该项目的核心技术基于 SV2TTS（从说话人验证到多说话人文本转语音的迁移学习）深度学习框架。其工作流程分为三个阶段：首先从少量音频中提取说话人的数字声纹表示，随后将其作为参考，结合 Tacotron 合成器与 WaveRNN 声码器，高质量地生成目标语音。这种架构不仅实现了端到端的语音合成，还保证了在普通硬件上的实时运行能力。\n\nReal-Time-Voice-Cloning 非常适合开发者、人工智能研究人员以及对语音技术感兴趣的技术爱好者使用。开发者可以将其集成到互动应用中，研究人员可借此探索语音迁移学习的前沿进展，而具备一定动手能力的普通用户也能通过提供的图形界面工具箱，轻松体验“声音复制”的乐趣。尽管目前已有商业服务在音质上表现更佳，但作为一款免费开源项目，它依然是理解和学习实时语音合成技术的绝佳入门资源。",59627,3,"2026-04-16T23:06:58",[21,20],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":29,"last_commit_at":38,"category_tags":39,"status":22},4128,"GPT-SoVITS","RVC-Boss\u002FGPT-SoVITS","GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具，旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点，实现了“零样本”和“少样本”的快速建模：用户只需提供 5 秒参考音频即可即时生成语音，或使用 1 分钟数据进行微调，从而获得高度逼真且相似度极佳的声音效果。\n\n该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能，极大地降低了数据准备和模型训练的技术门槛，让非专业人士也能轻松上手。\n\n在技术亮点方面，GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成，还具备卓越的推理速度，在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音，还是进行多语言语音交互研究，GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。",56375,"2026-04-05T22:15:46",[21],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":29,"last_commit_at":46,"category_tags":47,"status":22},2863,"TTS","coqui-ai\u002FTTS","🐸TTS 是一款功能强大的深度学习文本转语音（Text-to-Speech）开源库，旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点，让高质量的语音生成变得触手可及。\n\n无论是希望快速集成语音功能的开发者，还是致力于探索前沿算法的研究人员，亦或是需要定制专属声音的数据科学家，🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型，让用户能够即刻上手，还提供了完善的工具链，支持用户利用自有数据训练新模型或对现有模型进行微调，轻松实现特定风格的声音克隆。\n\n在技术亮点方面，🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言，并在整体性能上大幅提升，实现了低于 200 毫秒的超低延迟流式输出，极大提升了实时交互体验。此外，它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型，并支持调用上千个 Fairseq 模型，展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具，🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。",44971,"2026-04-03T14:47:02",[21,20,13],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":29,"last_commit_at":54,"category_tags":55,"status":22},2375,"LocalAI","mudler\u002FLocalAI","LocalAI 是一款开源的本地人工智能引擎，旨在让用户在任意硬件上轻松运行各类 AI 模型，包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛，无需昂贵的专用 GPU，仅凭普通 CPU 或常见的消费级显卡（如 NVIDIA、AMD、Intel 及 Apple Silicon）即可部署和运行复杂的 AI 任务。\n\n对于担心数据隐私的用户而言，LocalAI 提供了“隐私优先”的解决方案，确保所有数据处理均在本地基础设施内完成，无需上传至云端。同时，它完美兼容 OpenAI、Anthropic 等主流 API 接口，这意味着开发者可以无缝迁移现有应用，直接利用本地资源替代云服务，既降低了成本又提升了可控性。\n\nLocalAI 内置了超过 35 种后端支持（如 llama.cpp、vLLM、Whisper 等），并集成了自主 AI 代理、工具调用及检索增强生成（RAG）等高级功能，且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员，还是想要在个人电脑上体验最新 AI 技术的极客玩家，都能通过 LocalAI 获",44782,"2026-04-02T22:14:26",[13,21,19,17,20,14,16],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":29,"last_commit_at":62,"category_tags":63,"status":22},3108,"bark","suno-ai\u002Fbark","Bark 是由 Suno 推出的开源生成式音频模型，能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同，Bark 基于 Transformer 架构，不仅能模拟说话，还能生成笑声、叹息、哭泣等非语言声音，甚至能处理带有情感色彩和语气停顿的复杂文本，极大地丰富了音频表达的可能性。\n\n它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点，让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员，还是希望快速原型设计的开发者，都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。\n\n技术亮点方面，Bark 支持商业使用（MIT 许可），并在近期更新中实现了显著的推理速度提升，同时提供了适配低显存 GPU 的版本，降低了使用门槛。此外，社区还建立了丰富的提示词库，帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码，即可将创意文本转化为高质量音频，是连接文字与声音世界的强大桥梁。",39067,"2026-04-04T03:33:35",[21],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":78,"owner_location":78,"owner_email":79,"owner_twitter":78,"owner_website":78,"owner_url":80,"languages":81,"stars":110,"forks":111,"last_commit_at":112,"license":113,"difficulty_score":10,"env_os":114,"env_gpu":115,"env_ram":116,"env_deps":117,"category_tags":124,"github_topics":125,"view_count":10,"oss_zip_url":78,"oss_zip_packed_at":78,"status":22,"created_at":127,"updated_at":128,"faqs":129,"releases":165},8965,"zuoban\u002Ftts","tts","tts 服务","tts 是一款现代化的文本转语音服务，基于微软 Azure 语音引擎打造，旨在为用户提供高质量、低延迟的语音合成能力。它有效解决了传统 TTS 方案在并发性能、多语言支持及部署灵活性上的痛点，特别适合作为本地化或私有化的语音服务替代方案。\n\n这款工具非常适合开发者集成到各类应用中，同时也为研究人员和普通用户提供了友好的 Web 界面进行快速试听与内容创作。其核心亮点在于完全兼容 OpenAI TTS API 标准，这意味着现有接入 OpenAI 的项目无需修改代码即可无缝切换至 tts，极大降低了迁移成本。此外，tts 采用前后端分离架构，后端由高性能的 Go 语言驱动以支撑高并发请求，前端则基于 React 19 构建出响应式交互界面。它不仅支持语速、语调及多种情感风格的精细调节，还具备长文本智能分割合并功能，并支持 Docker、Cloudflare Worker 等多种轻量级部署方式，让搭建专属语音服务变得简单高效。","# TTS 服务\n\n一个现代化的文本转语音 (TTS) 服务，基于 Microsoft Azure 语音服务，采用前后端分离架构，提供高质量的语音合成能力。\n\n## ✨ 功能特点\n\n- 🌍 **多语言支持** - 支持多种语言和声音\n- ⚡ **高性能** - 异步处理，支持高并发\n- 🎛️ **可调节** - 支持语速、语调和情感风格调节\n- 🎵 **多格式** - 支持多种输出音频格式\n- 🔌 **兼容性** - 完全兼容 OpenAI TTS API\n- ✂️ **智能分割** - 支持长文本自动分割与合并\n- 🖥️ **现代界面** - 基于 React 的现代化 Web UI\n- 🔧 **RESTful API** - 提供完整的 REST API 接口\n- 📦 **多部署方式** - 支持 Docker、Cloudflare Worker 等多种部署方式\n- ⭐ **收藏功能** - 支持收藏喜欢的声音，快速选择和管理\n- 🎯 **声音库** - 完整的声音浏览和试听功能\n\n## 🏗️ 架构概览\n\n项目采用前后端分离的现代化架构：\n\n### 后端服务 (Go)\n- **技术栈**: Go + Gin 框架\n- **功能**: 提供 TTS 核心功能和 RESTful API\n- **特点**: 高性能、低延迟、易于扩展\n\n### 前端应用 (React)\n- **技术栈**: React 19 + TypeScript + Vite + Tailwind CSS\n- **功能**: 提供现代化的 Web 用户界面\n- **特点**: 响应式设计、组件化开发、类型安全\n\n## 🚀 快速开始\n\n### 方式一：Docker 部署（推荐）\n\n```shell\n# 拉取并运行完整服务（前端 + 后端）\ndocker run -d -p 8080:8080 --name=tts zuoban\u002Fzb-tts\n```\n\n部署完成后：\n- **前端界面**: 访问 `http:\u002F\u002Flocalhost:8080`\n- **API 接口**: `http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002F*`\n\n### 方式二：本地开发\n\n#### 后端开发\n\n```shell\n# 构建应用程序\ngo build -o tts .\u002Fcmd\u002Fapi\n\n# 运行应用程序\n.\u002Ftts\n\n# 或使用配置文件运行\n.\u002Ftts -config .\u002Fconfigs\u002Fconfig.yaml\n```\n\n#### 前端开发\n\n```shell\n# 进入前端目录\ncd frontend\n\n# 安装依赖\nnpm install\n\n# 启动开发服务器（默认端口 3000）\nnpm run dev\n\n# 构建生产版本\nnpm run build\n```\n\n#### Docker Compose 开发\n\n```shell\n# 启动完整开发环境（前端 + 后端）\ndocker-compose -f docker-compose.dev.yml up --build\n```\n\n### 方式三：Cloudflare Worker 部署\n\n适用于轻量级无服务器部署：\n\n1. 创建一个新的 Cloudflare Worker\n2. 复制以下脚本内容到 Worker\n   [worker.js](https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fblob\u002Fmain\u002Fworkers\u002Fsrc\u002Findex.js)\n3. 添加环境变量 `API_KEY`\n   - Workers & Pages -> Your Worker -> Settings -> Variables and Secrets -> Add\n   - Type: `Secret`,  Name: `API_KEY`, Value: `YOUR_API_KEY`\n\n## 📚 API 文档\n\n### v1 API（推荐使用）\n\n#### 健康检查\n```shell\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fhealth\"\n```\n\n#### 获取配置信息\n```shell\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fconfig\"\n```\n\n#### 获取语音列表\n\n```shell\n# 方式 1：Bearer Token 认证（推荐）\ncurl -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fvoices\"\n\n# 方式 2：Query 参数认证\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fvoices?api_key=YOUR_TTS_API_KEY\"\n```\n\n#### 文本转语音\n\n```shell\n# 方式 1：GET 请求 + Query 参数认证\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Ftts?text=你好，世界&voice=zh-CN-XiaoxiaoNeural&api_key=YOUR_TTS_API_KEY\" \\\n  -o output.mp3\n\n# 方式 2：POST 请求 + Bearer Token 认证（推荐）\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Ftts\" \\\n  -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"你好，世界\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"rate\": 20,\n    \"pitch\": 10,\n    \"style\": \"cheerful\"\n  }' -o output.mp3\n\n# 方式 3：POST 请求 + 请求体中的 api_key\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Ftts\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"你好，世界\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"rate\": 20,\n    \"pitch\": 10,\n    \"style\": \"cheerful\",\n    \"api_key\": \"YOUR_TTS_API_KEY\"\n  }' -o output.mp3\n```\n\n**参数说明：**\n- `text`: 文本内容\n- `voice`: 语音风格\n- `rate`: 语速，范围 -100 到 100\n- `pitch`: 语调，范围 -100 到 100\n- `style`: 情感风格，可选值为 `sad`, `angry`, `cheerful`, `neutral`\n\n**认证说明：** 所有 TTS 相关接口支持以下三种认证方式：\n\n1. **Bearer Token** (推荐): `Authorization: Bearer YOUR_TTS_API_KEY`\n2. **Query 参数**: `?api_key=YOUR_TTS_API_KEY`\n3. **请求体参数**: JSON 中包含 `\"api_key\": \"YOUR_TTS_API_KEY\"`\n\n### 兼容性 API\n\n#### 原版 TTS API\n\n```shell\n# 无认证（如果配置了 API Key 则需要认证）\ncurl \"http:\u002F\u002Flocalhost:8080\u002Ftts?t=你好，世界&v=zh-CN-XiaoxiaoNeural\" -o output.mp3\n\n# 使用 Query 参数认证\ncurl \"http:\u002F\u002Flocalhost:8080\u002Ftts?t=你好，世界&v=zh-CN-XiaoxiaoNeural&api_key=YOUR_TTS_API_KEY\" -o output.mp3\n```\n\n#### OpenAI 兼容 API\n\n```shell\n# 方式 1：Bearer Token 认证（推荐）\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fv1\u002Faudio\u002Fspeech\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  -d '{\n    \"model\": \"tts-1\",\n    \"input\": \"你好，世界！\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"speed\": 0.5\n  }' -o output.mp3\n\n# 方式 2：请求体中包含 api_key\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fv1\u002Faudio\u002Fspeech\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"tts-1\",\n    \"input\": \"你好，世界！\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"speed\": 0.5,\n    \"api_key\": \"YOUR_TTS_API_KEY\"\n  }' -o output.mp3\n```\n\n**参数说明：**\n- `model`: 模型名称，对应情感风格\n- `input`: 文本内容\n- `voice`: 语音风格\n- `speed`: 语速，0.0 到 2.0\n- `api_key`: API 密钥（可选，也可通过 Bearer Token 或 Query 参数提供）\n\n**认证说明：** 支持 Bearer Token、Query 参数或请求体中的 `api_key` 参数进行认证\n\n### 📱 阅读集成\n\n本服务支持在阅读应用中使用。\n\n#### 网络导入步骤\n\n1. **复制服务链接**\n   - 复制你的导入链接，例如：`https:\u002F\u002Ft.leftsite.cn\u002Fapi\u002Fv1\u002Freader.json?n=%E6%99%93%E8%BE%B0&voice=zh-CN-XiaochenNeural&rate=0&pitch=0`\n\n2. **打开朗读设置**\n   - 在朗读应用中进入「朗读引擎」页面\n\n3. **网络导入**\n   - 点击右上角的 **⋮**（三个点）菜单\n   - 选择 **「网络导入」** 选项\n   - 粘贴刚才复制的服务链接\n   - 点击 **「确认」** 完成导入\n\n## ⚙️ 配置选项\n\n### 环境变量配置\n\n**优先级：** 环境变量 > 配置文件 > 默认值\n\n#### 后端环境变量\n```shell\n# 服务配置\nSERVER_PORT=8080                      # 服务端口\nCORS_ALLOWED_ORIGINS=*                # 允许的 CORS 源\n\n# TTS 服务配置\nTTS_API_KEY=your_api_key              # 统一的 API 密钥（TTS 和 OpenAI 兼容接口）\nTTS_REGION=eastasia                   # Azure 区域\nTTS_MAX_CONCURRENT=20                 # 最大并发数\n```\n\n#### 前端环境变量\n```shell\n# 在 frontend 目录下设置\nVITE_API_BASE_URL=http:\u002F\u002Flocalhost:8080  # API 基础 URL\nVITE_APP_TITLE=\"TTS 服务\"                # 应用标题\nVITE_NODE_ENV=development                # 环境标识\n```\n\n### 配置文件详解\n\n后端服务使用 YAML 格式的配置文件，默认查找位置：\n- `.\u002Fconfigs\u002Fconfig.yaml`\n- `.\u002Fconfig.yaml`\n- `\u002Fetc\u002Ftts\u002Fconfig.yaml`\n\n**示例配置文件 (configs\u002Fconfig.yaml):**\n\n```yaml\nserver:\n  port: 8080                # 服务监听端口\n  read_timeout: 60          # HTTP 读取超时时间（秒）\n  write_timeout: 60         # HTTP 写入超时时间（秒）\n  base_path: \"\"             # API 基础路径前缀\n\ntts:\n  region: \"eastasia\"        # Azure 语音服务区域\n  default_voice: \"zh-CN-XiaoxiaoNeural\"  # 默认语音\n  default_rate: \"0\"         # 默认语速，范围 -100 到 100\n  default_pitch: \"0\"        # 默认语调，范围 -100 到 100\n  default_format: \"audio-24khz-48kbitrate-mono-mp3\"  # 默认音频格式\n  max_text_length: 65535    # 最大文本长度\n  request_timeout: 30       # 请求 Azure 服务的超时时间（秒）\n  max_concurrent: 20        # 最大并发请求数\n  segment_threshold: 300    # 文本分段阈值\n  min_sentence_length: 200  # 最小句子长度\n  max_sentence_length: 300  # 最大句子长度\n  api_key: 'your_api_key'   # TTS API 密钥\n\n  # OpenAI 到微软 TTS 中文语音的映射\n  voice_mapping:\n    alloy: \"zh-CN-XiaoyiNeural\"       # 中性女声\n    echo: \"zh-CN-YunxiNeural\"         # 年轻男声\n    fable: \"zh-CN-XiaochenNeural\"     # 儿童声\n    onyx: \"zh-CN-YunjianNeural\"       # 成熟男声\n    nova: \"zh-CN-XiaohanNeural\"       # 活力女声\n    shimmer: \"zh-CN-XiaomoNeural\"     # 温柔女声\n\n# 注意：OpenAI 兼容接口使用 tts.api_key，不需要单独配置\n\nssml:\n  preserve_tags:                      # SSML 标签保留配置\n    - name: break\n      pattern: \u003Cbreak\\s+[^>]*\u002F>\n    - name: speak\n      pattern: \u003Cspeak>|\u003C\u002Fspeak>\n    - name: prosody\n      pattern: \u003Cprosody\\s+[^>]*>|\u003C\u002Fprosody>\n    # ... 更多 SSML 标签配置\n```\n\n### Docker 配置示例\n\n```shell\n# 使用自定义端口\ndocker run -d -p 9000:9000 -e SERVER_PORT=9000 --name=tts zuoban\u002Fzb-tts\n\n# 使用配置文件\ndocker run -d -p 8080:8080 \\\n  -v \u002Fpath\u002Fto\u002Fconfig.yaml:\u002Fconfigs\u002Fconfig.yaml \\\n  --name=tts zuoban\u002Fzb-tts\n\n# 设置环境变量\ndocker run -d -p 8080:8080 \\\n  -e TTS_API_KEY=your_key \\\n  -e TTS_REGION=eastasia \\\n  --name=tts zuoban\u002Fzb-tts\n```\n\n\n## 🛠️ 本地构建与运行\n\n### 系统要求\n\n- **Go**: 1.19 或更高版本\n- **Node.js**: 18.0 或更高版本（前端开发）\n- **Docker**: 20.0 或更高版本（可选）\n\n### 从源码构建\n\n```shell\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts.git\ncd tts\n\n# 后端构建\ngo mod download\ngo build -o tts .\u002Fcmd\u002Fapi\n\n# 前端构建\ncd frontend\nnpm install\nnpm run build\ncd ..\n\n# 运行后端服务\n.\u002Ftts\n```\n\n### 开发脚本\n\n#### 后端开发\n```shell\n# 运行测试\ngo test .\u002F...\n\n# 整理依赖\ngo mod tidy\n\n# 验证依赖\ngo mod verify\n\n# 多平台构建（需要 Docker Buildx）\n.\u002Fscript\u002Fbuild.sh\n```\n\n#### 前端开发\n```shell\ncd frontend\n\n# 启动开发服务器（默认端口 3000）\nnpm run dev\n\n# 代码检查\nnpm run lint\n\n# 自动修复 linting 问题\nnpm run lint:fix\n\n# TypeScript 类型检查\nnpm run type-check\n\n# 清理构建文件\nnpm run clean\n\n# 预览构建结果\nnpm run preview\n```\n\n## 🧪 故障排除\n\n### 常见问题\n\n#### 1. CORS 错误\n- 检查后端 CORS 配置：`CORS_ALLOWED_ORIGINS=*`\n- 确认前端 API 基础 URL 正确：`VITE_API_BASE_URL`\n\n#### 2. API 请求失败\n- 验证 API Key 设置：`TTS_API_KEY`（统一用于所有接口）\n- 检查后端服务是否正常运行\n- 查看后端日志输出：`.\u002Ftts -v`\n\n#### 3. 前端构建失败\n```shell\ncd frontend\nnpm install  # 更新依赖\n# 检查 Node.js 版本（需要 18+）\nnode --version\n```\n\n#### 4. 配置文件找不到\n- 检查配置文件路径：`.\u002Fconfigs\u002Fconfig.yaml`\n- 使用绝对路径：`.\u002Ftts -config \u002Fabsolute\u002Fpath\u002Fconfig.yaml`\n- 查看启动日志中的配置文件路径\n\n### 调试工具\n\n- **前端调试**: 浏览器开发者工具 + React DevTools\n- **后端调试**: 日志输出 + 健康检查接口 `GET \u002Fapi\u002Fv1\u002Fhealth`\n- **API 测试**: 使用 curl 或 Postman 测试 API 接口\n\n## 📄 项目结构\n\n```\ntts\u002F\n├── cmd\u002Fapi\u002F                 # 后端应用程序入口点\n├── internal\u002F                # 私有应用程序代码\n│   ├── config\u002F             # 配置管理\n│   ├── http\u002F               # HTTP 层\n│   │   ├── handlers\u002F       # HTTP 请求处理器\n│   │   ├── middleware\u002F     # 中间件\n│   │   ├── routes\u002F         # 路由配置\n│   │   └── server\u002F         # HTTP 服务器实现\n│   ├── models\u002F             # 数据模型定义\n│   ├── tts\u002F                # TTS 服务层\n│   └── utils\u002F              # 工具函数\n├── frontend\u002F               # React 前端应用\n│   ├── src\u002F\n│   │   ├── components\u002F     # React 组件\n│   │   │   ├── ui\u002F         # 通用 UI 组件\n│   │   │   ├── audio\u002F      # 音频相关组件\n│   │   │   │   ├── FavoriteVoices.tsx    # 收藏声音组件\n│   │   │   │   ├── HistoryList.tsx      # 历史记录组件\n│   │   │   │   └── AudioPlayer.tsx      # 音频播放器组件\n│   │   │   └── layout\u002F     # 布局组件\n│   │   ├── pages\u002F          # 页面组件\n│   │   │   ├── Home.tsx    # 首页（包含收藏功能）\n│   │   │   └── VoiceLibrary.tsx   # 声音库页面\n│   │   ├── hooks\u002F          # 自定义 Hooks\n│   │   ├── services\u002F       # API 服务层\n│   │   │   ├── api.ts      # TTS API 服务\n│   │   │   └── favorites.ts # 收藏功能服务\n│   │   ├── types\u002F          # TypeScript 类型定义\n│   │   │   ├── index.ts    # 核心类型（包含收藏相关类型）\n│   │   └── utils\u002F          # 工具函数\n│   └── dist\u002F               # 构建输出目录\n├── configs\u002F                # 配置文件\n├── script\u002F                 # 构建脚本\n├── workers\u002F                # Cloudflare Worker 代码\n└── docs\u002F                   # 文档\n```\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 📄 许可证\n\nMIT License - 详见 [LICENSE](LICENSE) 文件\n","# TTS 服务\n\n一个现代化的文本转语音 (TTS) 服务，基于 Microsoft Azure 语音服务，采用前后端分离架构，提供高质量的语音合成能力。\n\n## ✨ 功能特点\n\n- 🌍 **多语言支持** - 支持多种语言和声音\n- ⚡ **高性能** - 异步处理，支持高并发\n- 🎛️ **可调节** - 支持语速、语调和情感风格调节\n- 🎵 **多格式** - 支持多种输出音频格式\n- 🔌 **兼容性** - 完全兼容 OpenAI TTS API\n- ✂️ **智能分割** - 支持长文本自动分割与合并\n- 🖥️ **现代界面** - 基于 React 的现代化 Web UI\n- 🔧 **RESTful API** - 提供完整的 REST API 接口\n- 📦 **多部署方式** - 支持 Docker、Cloudflare Worker 等多种部署方式\n- ⭐ **收藏功能** - 支持收藏喜欢的声音，快速选择和管理\n- 🎯 **声音库** - 完整的声音浏览和试听功能\n\n## 🏗️ 架构概览\n\n项目采用前后端分离的现代化架构：\n\n### 后端服务 (Go)\n- **技术栈**: Go + Gin 框架\n- **功能**: 提供 TTS 核心功能和 RESTful API\n- **特点**: 高性能、低延迟、易于扩展\n\n### 前端应用 (React)\n- **技术栈**: React 19 + TypeScript + Vite + Tailwind CSS\n- **功能**: 提供现代化的 Web 用户界面\n- **特点**: 响应式设计、组件化开发、类型安全\n\n## 🚀 快速开始\n\n### 方式一：Docker 部署（推荐）\n\n```shell\n# 拉取并运行完整服务（前端 + 后端）\ndocker run -d -p 8080:8080 --name=tts zuoban\u002Fzb-tts\n```\n\n部署完成后：\n- **前端界面**: 访问 `http:\u002F\u002Flocalhost:8080`\n- **API 接口**: `http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002F*`\n\n### 方式二：本地开发\n\n#### 后端开发\n\n```shell\n# 构建应用程序\ngo build -o tts .\u002Fcmd\u002Fapi\n\n# 运行应用程序\n.\u002Ftts\n\n# 或使用配置文件运行\n.\u002Ftts -config .\u002Fconfigs\u002Fconfig.yaml\n```\n\n#### 前端开发\n\n```shell\n# 进入前端目录\ncd frontend\n\n# 安装依赖\nnpm install\n\n# 启动开发服务器（默认端口 3000）\nnpm run dev\n\n# 构建生产版本\nnpm run build\n```\n\n#### Docker Compose 开发\n\n```shell\n# 启动完整开发环境（前端 + 后端）\ndocker-compose -f docker-compose.dev.yml up --build\n```\n\n### 方式三：Cloudflare Worker 部署\n\n适用于轻量级无服务器部署：\n\n1. 创建一个新的 Cloudflare Worker\n2. 复制以下脚本内容到 Worker\n   [worker.js](https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fblob\u002Fmain\u002Fworkers\u002Fsrc\u002Findex.js)\n3. 添加环境变量 `API_KEY`\n   - Workers & Pages -> Your Worker -> Settings -> Variables and Secrets -> Add\n   - Type: `Secret`,  Name: `API_KEY`, Value: `YOUR_API_KEY`\n\n## 📚 API 文档\n\n### v1 API（推荐使用）\n\n#### 健康检查\n```shell\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fhealth\"\n```\n\n#### 获取配置信息\n```shell\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fconfig\"\n```\n\n#### 获取语音列表\n\n```shell\n# 方式 1：Bearer Token 认证（推荐）\ncurl -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fvoices\"\n\n# 方式 2：Query 参数认证\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fvoices?api_key=YOUR_TTS_API_KEY\"\n```\n\n#### 文本转语音\n\n```shell\n# 方式 1：GET 请求 + Query 参数认证\ncurl \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Ftts?text=你好，世界&voice=zh-CN-XiaoxiaoNeural&api_key=YOUR_TTS_API_KEY\" \\\n  -o output.mp3\n\n# 方式 2：POST 请求 + Bearer Token 认证（推荐）\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Ftts\" \\\n  -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"你好，世界\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"rate\": 20,\n    \"pitch\": 10,\n    \"style\": \"cheerful\"\n  }' -o output.mp3\n\n# 方式 3：POST 请求 + 请求体中的 api_key\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Ftts\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"你好，世界\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"rate\": 20,\n    \"pitch\": 10,\n    \"style\": \"cheerful\",\n    \"api_key\": \"YOUR_TTS_API_KEY\"\n  }' -o output.mp3\n```\n\n**参数说明：**\n- `text`: 文本内容\n- `voice`: 语音风格\n- `rate`: 语速，范围 -100 到 100\n- `pitch`: 语调，范围 -100 到 100\n- `style`: 情感风格，可选值为 `sad`, `angry`, `cheerful`, `neutral`\n\n**认证说明：** 所有 TTS 相关接口支持以下三种认证方式：\n\n1. **Bearer Token** (推荐): `Authorization: Bearer YOUR_TTS_API_KEY`\n2. **Query 参数**: `?api_key=YOUR_TTS_API_KEY`\n3. **请求体参数**: JSON 中包含 `\"api_key\": \"YOUR_TTS_API_KEY\"`\n\n### 兼容性 API\n\n#### 原版 TTS API\n\n```shell\n# 无认证（如果配置了 API Key 则需要认证）\ncurl \"http:\u002F\u002Flocalhost:8080\u002Ftts?t=你好，世界&v=zh-CN-XiaoxiaoNeural\" -o output.mp3\n\n# 使用 Query 参数认证\ncurl \"http:\u002F\u002Flocalhost:8080\u002Ftts?t=你好，世界&v=zh-CN-XiaoxiaoNeural&api_key=YOUR_TTS_API_KEY\" -o output.mp3\n```\n\n#### OpenAI 兼容 API\n\n```shell\n# 方式 1：Bearer Token 认证（推荐）\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fv1\u002Faudio\u002Fspeech\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  -d '{\n    \"model\": \"tts-1\",\n    \"input\": \"你好，世界！\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"speed\": 0.5\n  }' -o output.mp3\n\n# 方式 2：请求体中包含 api_key\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fv1\u002Faudio\u002Fspeech\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"tts-1\",\n    \"input\": \"你好，世界！\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"speed\": 0.5,\n    \"api_key\": \"YOUR_TTS_API_KEY\"\n  }' -o output.mp3\n```\n\n**参数说明：**\n- `model`: 模型名称，对应情感风格\n- `input`: 文本内容\n- `voice`: 语音风格\n- `speed`: 语速，0.0 到 2.0\n- `api_key`: API 密钥（可选，也可通过 Bearer Token 或 Query 参数提供）\n\n**认证说明：** 支持 Bearer Token、Query 参数或请求体中的 `api_key` 参数进行认证\n\n### 📱 阅读集成\n\n本服务支持在阅读应用中使用。\n\n#### 网络导入步骤\n\n1. **复制服务链接**\n   - 复制你的导入链接，例如：`https:\u002F\u002Ft.leftsite.cn\u002Fapi\u002Fv1\u002Freader.json?n=%E6%99%93%E8%BE%B0&voice=zh-CN-XiaochenNeural&rate=0&pitch=0`\n\n2. **打开朗读设置**\n   - 在朗读应用中进入「朗读引擎」页面\n\n3. **网络导入**\n   - 点击右上角的 **⋮**（三个点）菜单\n   - 选择 **「网络导入」** 选项\n   - 粘贴刚才复制的服务链接\n   - 点击 **「确认」** 完成导入\n\n## ⚙️ 配置选项\n\n### 环境变量配置\n\n**优先级：** 环境变量 > 配置文件 > 默认值\n\n#### 后端环境变量\n```shell\n# 服务配置\nSERVER_PORT=8080                      # 服务端口\nCORS_ALLOWED_ORIGINS=*                # 允许的 CORS 源\n\n# TTS 服务配置\nTTS_API_KEY=your_api_key              # 统一的 API 密钥（TTS 和 OpenAI 兼容接口）\nTTS_REGION=eastasia                   # Azure 区域\nTTS_MAX_CONCURRENT=20                 # 最大并发数\n```\n\n#### 前端环境变量\n```shell\n# 在 frontend 目录下设置\nVITE_API_BASE_URL=http:\u002F\u002Flocalhost:8080  # API 基础 URL\nVITE_APP_TITLE=\"TTS 服务\"                # 应用标题\nVITE_NODE_ENV=development                # 环境标识\n```\n\n### 配置文件详解\n\n后端服务使用 YAML 格式的配置文件，默认查找位置：\n- `.\u002Fconfigs\u002Fconfig.yaml`\n- `.\u002Fconfig.yaml`\n- `\u002Fetc\u002Ftts\u002Fconfig.yaml`\n\n**示例配置文件 (configs\u002Fconfig.yaml):**\n\n```yaml\nserver:\n  port: 8080                # 服务监听端口\n  read_timeout: 60          # HTTP 读取超时时间（秒）\n  write_timeout: 60         # HTTP 写入超时时间（秒）\n  base_path: \"\"             # API 基础路径前缀\n\ntts:\n  region: \"eastasia\"        # Azure 语音服务区域\n  default_voice: \"zh-CN-XiaoxiaoNeural\"  # 默认语音\n  default_rate: \"0\"         # 默认语速，范围 -100 到 100\n  default_pitch: \"0\"        # 默认语调，范围 -100 到 100\n  default_format: \"audio-24khz-48kbitrate-mono-mp3\"  # 默认音频格式\n  max_text_length: 65535    # 最大文本长度\n  request_timeout: 30       # 请求 Azure 服务的超时时间（秒）\n  max_concurrent: 20        # 最大并发请求数\n  segment_threshold: 300    # 文本分段阈值\n  min_sentence_length: 200  # 最小句子长度\n  max_sentence_length: 300  # 最大句子长度\n  api_key: 'your_api_key'   # TTS API 密钥\n\n  # OpenAI 到微软 TTS 中文语音的映射\n  voice_mapping:\n    alloy: \"zh-CN-XiaoyiNeural\"       # 中性女声\n    echo: \"zh-CN-YunxiNeural\"         # 年轻男声\n    fable: \"zh-CN-XiaochenNeural\"     # 儿童声\n    onyx: \"zh-CN-YunjianNeural\"       # 成熟男声\n    nova: \"zh-CN-XiaohanNeural\"       # 活力女声\n    shimmer: \"zh-CN-XiaomoNeural\"     # 温柔女声\n\n# 注意：OpenAI 兼容接口使用 tts.api_key，不需要单独配置\n\nssml:\n  preserve_tags:                      # SSML 标签保留配置\n    - name: break\n      pattern: \u003Cbreak\\s+[^>]*\u002F>\n    - name: speak\n      pattern: \u003Cspeak>|\u003C\u002Fspeak>\n    - name: prosody\n      pattern: \u003Cprosody\\s+[^>]*>|\u003C\u002Fprosody>\n    # ... 更多 SSML 标签配置\n```\n\n### Docker 配置示例\n\n```shell\n# 使用自定义端口\ndocker run -d -p 9000:9000 -e SERVER_PORT=9000 --name=tts zuoban\u002Fzb-tts\n\n# 使用配置文件\ndocker run -d -p 8080:8080 \\\n  -v \u002Fpath\u002Fto\u002Fconfig.yaml:\u002Fconfigs\u002Fconfig.yaml \\\n  --name=tts zuoban\u002Fzb-tts\n\n# 设置环境变量\ndocker run -d -p 8080:8080 \\\n  -e TTS_API_KEY=your_key \\\n  -e TTS_REGION=eastasia \\\n  --name=tts zuoban\u002Fzb-tts\n```\n\n\n## 🛠️ 本地构建与运行\n\n### 系统要求\n\n- **Go**: 1.19 或更高版本\n- **Node.js**: 18.0 或更高版本（前端开发）\n- **Docker**: 20.0 或更高版本（可选）\n\n### 从源码构建\n\n```shell\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts.git\ncd tts\n\n# 后端构建\ngo mod download\ngo build -o tts .\u002Fcmd\u002Fapi\n\n# 前端构建\ncd frontend\nnpm install\nnpm run build\ncd ..\n\n# 运行后端服务\n.\u002Ftts\n```\n\n### 开发脚本\n\n#### 后端开发\n```shell\n# 运行测试\ngo test .\u002F...\n\n# 整理依赖\ngo mod tidy\n\n# 验证依赖\ngo mod verify\n\n# 多平台构建（需要 Docker Buildx）\n.\u002Fscript\u002Fbuild.sh\n```\n\n#### 前端开发\n```shell\ncd frontend\n\n# 启动开发服务器（默认端口 3000）\nnpm run dev\n\n# 代码检查\nnpm run lint\n\n# 自动修复 linting 问题\nnpm run lint:fix\n\n# TypeScript 类型检查\nnpm run type-check\n\n# 清理构建文件\nnpm run clean\n\n# 预览构建结果\nnpm run preview\n```\n\n## 🧪 故障排除\n\n### 常见问题\n\n#### 1. CORS 错误\n- 检查后端 CORS 配置：`CORS_ALLOWED_ORIGINS=*`\n- 确认前端 API 基础 URL 正确：`VITE_API_BASE_URL`\n\n#### 2. API 请求失败\n- 验证 API Key 设置：`TTS_API_KEY`（统一用于所有接口）\n- 检查后端服务是否正常运行\n- 查看后端日志输出：`.\u002Ftts -v`\n\n#### 3. 前端构建失败\n```shell\ncd frontend\nnpm install  # 更新依赖\n# 检查 Node.js 版本（需要 18+）\nnode --version\n```\n\n#### 4. 配置文件找不到\n- 检查配置文件路径：`.\u002Fconfigs\u002Fconfig.yaml`\n- 使用绝对路径：`.\u002Ftts -config \u002Fabsolute\u002Fpath\u002Fconfig.yaml`\n- 查看启动日志中的配置文件路径\n\n### 调试工具\n\n- **前端调试**: 浏览器开发者工具 + React DevTools\n- **后端调试**: 日志输出 + 健康检查接口 `GET \u002Fapi\u002Fv1\u002Fhealth`\n- **API 测试**: 使用 curl 或 Postman 测试 API 接口\n\n## 📄 项目结构\n\n```\ntts\u002F\n├── cmd\u002Fapi\u002F                 # 后端应用程序入口点\n├── internal\u002F                # 私有应用程序代码\n│   ├── config\u002F             # 配置管理\n│   ├── http\u002F               # HTTP 层\n│   │   ├── handlers\u002F       # HTTP 请求处理器\n│   │   ├── middleware\u002F     # 中间件\n│   │   ├── routes\u002F         # 路由配置\n│   │   └── server\u002F         # HTTP 服务器实现\n│   ├── models\u002F             # 数据模型定义\n│   ├── tts\u002F                # TTS 服务层\n│   └── utils\u002F              # 工具函数\n├── frontend\u002F               # React 前端应用\n│   ├── src\u002F\n│   │   ├── components\u002F     # React 组件\n│   │   │   ├── ui\u002F         # 通用 UI 组件\n│   │   │   ├── audio\u002F      # 音频相关组件\n│   │   │   │   ├── FavoriteVoices.tsx    # 收藏声音组件\n│   │   │   │   ├── HistoryList.tsx      # 历史记录组件\n│   │   │   │   └── AudioPlayer.tsx      # 音频播放器组件\n│   │   │   └── layout\u002F     # 布局组件\n│   │   ├── pages\u002F          # 页面组件\n│   │   │   ├── Home.tsx    # 首页（包含收藏功能）\n│   │   │   └── VoiceLibrary.tsx   # 声音库页面\n│   │   ├── hooks\u002F          # 自定义 Hooks\n│   │   ├── services\u002F       # API 服务层\n│   │   │   ├── api.ts      # TTS API 服务\n│   │   │   └── favorites.ts # 收藏功能服务\n│   │   ├── types\u002F          # TypeScript 类型定义\n│   │   │   ├── index.ts    # 核心类型（包含收藏相关类型）\n│   │   └── utils\u002F          # 工具函数\n│   └── dist\u002F               # 构建输出目录\n├── configs\u002F                # 配置文件\n├── script\u002F                 # 构建脚本\n├── workers\u002F                # Cloudflare Worker 代码\n└── docs\u002F                   # 文档\n```\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 📄 许可证\n\nMIT License - 详见 [LICENSE](LICENSE) 文件","# TTS 服务快速上手指南\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n- **操作系统**: Linux \u002F macOS \u002F Windows\n- **Go**: 1.19 或更高版本（后端运行必需）\n- **Node.js**: 18.0 或更高版本（仅前端开发需要）\n- **Docker**: 20.0 或更高版本（推荐用于快速部署）\n- **Azure 账号**: 需拥有 Azure 语音服务资源及密钥\n\n> 💡 **国内加速建议**：\n> - Go 模块代理：`export GOPROXY=https:\u002F\u002Fgoproxy.cn,direct`\n> - npm 镜像源：`npm config set registry https:\u002F\u002Fregistry.npmmirror.com`\n\n## 安装步骤\n\n### 方式一：Docker 部署（推荐）\n\n这是最快捷的部署方式，无需配置本地开发环境。\n\n```shell\n# 拉取并运行完整服务（前端 + 后端）\ndocker run -d -p 8080:8080 --name=tts zuoban\u002Fzb-tts\n```\n\n部署完成后，服务将监听在 `8080` 端口。\n\n### 方式二：从源码构建\n\n如果您需要自定义开发或调试，可以选择从源码构建。\n\n```shell\n# 1. 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts.git\ncd tts\n\n# 2. 构建后端\ngo mod download\ngo build -o tts .\u002Fcmd\u002Fapi\n\n# 3. 构建前端\ncd frontend\nnpm install\nnpm run build\ncd ..\n\n# 4. 运行服务\n.\u002Ftts\n# 或者指定配置文件运行\n.\u002Ftts -config .\u002Fconfigs\u002Fconfig.yaml\n```\n\n### 方式三：Cloudflare Worker 部署\n\n适用于轻量级无服务器场景：\n\n1. 创建一个新的 Cloudflare Worker。\n2. 复制 [worker.js](https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fblob\u002Fmain\u002Fworkers\u002Fsrc\u002Findex.js) 内容到编辑器。\n3. 在 Workers 设置中添加环境变量 `API_KEY` (Type: Secret)。\n\n## 基本使用\n\n### 1. 访问 Web 界面\n\n启动服务后，直接在浏览器访问：\n`http:\u002F\u002Flocalhost:8080`\n\n您可以在界面上浏览声音库、试听音色、调节语速语调，并直接生成音频文件。\n\n### 2. 调用 API 生成语音\n\n#### 获取语音列表\n```shell\ncurl -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Fvoices\"\n```\n\n#### 文本转语音 (POST 请求)\n```shell\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv1\u002Ftts\" \\\n  -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"你好，世界\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"rate\": 20,\n    \"pitch\": 10,\n    \"style\": \"cheerful\"\n  }' -o output.mp3\n```\n\n**参数说明：**\n- `text`: 要转换的文本内容\n- `voice`: 语音角色 (如 `zh-CN-XiaoxiaoNeural`)\n- `rate`: 语速 (-100 到 100)\n- `pitch`: 语调 (-100 到 100)\n- `style`: 情感风格 (`sad`, `angry`, `cheerful`, `neutral`)\n\n### 3. OpenAI 兼容接口\n\n本服务完全兼容 OpenAI TTS API 格式，可直接替换现有代码中的 endpoint。\n\n```shell\ncurl -X POST \"http:\u002F\u002Flocalhost:8080\u002Fv1\u002Faudio\u002Fspeech\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer YOUR_TTS_API_KEY\" \\\n  -d '{\n    \"model\": \"tts-1\",\n    \"input\": \"你好，世界！\",\n    \"voice\": \"zh-CN-XiaoxiaoNeural\",\n    \"speed\": 0.5\n  }' -o output.mp3\n```\n\n### 4. 阅读应用集成\n\n若需在阅读软件中使用，可通过网络导入功能配置：\n\n1. 构造导入链接：\n   `https:\u002F\u002Fyour-domain.com\u002Fapi\u002Fv1\u002Freader.json?n=晓辰&voice=zh-CN-XiaochenNeural&rate=0&pitch=0`\n2. 在阅读应用的「朗读引擎」设置中选择「网络导入」。\n3. 粘贴链接并确认即可。","某在线教育团队急需为每日更新的海量题库解析生成配套音频，以打造“听题学习”功能，提升视障学生及通勤用户的学习体验。\n\n### 没有 tts 时\n- **成本高昂且流程繁琐**：依赖人工录音或昂贵的商业配音服务，每更新一道题的解析都需重新录制，周期长达数天。\n- **情感表达单一僵硬**：传统合成音机械感强，无法根据题目类型（如鼓励性评语或严肃知识点）调整语调，难以吸引学生注意力。\n- **技术对接困难**：缺乏统一的 API 接口，前端需针对不同语音服务商编写适配代码，且难以处理长文本自动分割，导致开发效率低下。\n- **并发性能瓶颈**：在早晚高峰学习时段，旧有方案响应延迟高，常出现音频加载失败，严重影响用户体验。\n\n### 使用 tts 后\n- **即时生成与零边际成本**：利用 tts 的 RESTful API，系统可自动将新录入的文本解析实时转为语音，实现“秒级”上线，无需人工干预。\n- **风格灵活可调**：通过调节 `style`（如 cheerful 用于表扬，neutral 用于讲解）及语速语调参数，让语音富有情感色彩，显著提升学习兴趣。\n- **无缝集成与智能处理**：凭借对 OpenAI TTS API 的完全兼容性，现有代码无需大改即可接入；其内置的智能分割功能自动处理长难句，确保输出流畅自然。\n- **高并发稳定支撑**：基于 Go 后端的高性能异步架构，轻松应对数千名学生同时请求，保证音频播放流畅无卡顿。\n\ntts 通过低成本、高情感化且易于集成的语音合成能力，将教育内容的生产模式从“手工制造”升级为“自动化智造”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzuoban_tts_0ff765bd.png","zuoban","WangJinQiang","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fzuoban_28a9103e.png",null,"1061669148@qq.com","https:\u002F\u002Fgithub.com\u002Fzuoban",[82,86,90,94,98,102,106],{"name":83,"color":84,"percentage":85},"TypeScript","#3178c6",69.4,{"name":87,"color":88,"percentage":89},"Go","#00ADD8",15.8,{"name":91,"color":92,"percentage":93},"JavaScript","#f1e05a",13.6,{"name":95,"color":96,"percentage":97},"CSS","#663399",0.6,{"name":99,"color":100,"percentage":101},"Dockerfile","#384d54",0.4,{"name":103,"color":104,"percentage":105},"HTML","#e34c26",0.2,{"name":107,"color":108,"percentage":109},"Shell","#89e051",0,612,142,"2026-04-17T14:08:02","MIT","Linux, macOS, Windows","不需要 GPU","未说明",{"notes":118,"python":119,"dependencies":120},"该项目基于 Go 和 React 开发，不依赖 Python 环境。后端需配置 Microsoft Azure 语音服务的 API Key 和区域（如 TTS_API_KEY, TTS_REGION）。支持 Docker 一键部署、本地源码编译运行以及 Cloudflare Worker 无服务器部署。","不需要 Python",[121,122,123],"Go 1.19+","Node.js 18.0+","Docker 20.0+ (可选)",[21],[126,67],"go","2026-03-27T02:49:30.150509","2026-04-18T16:27:28.955401",[130,135,140,145,150,155,160],{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},40229,"如何配置 API_KEY 以防止流量被滥用？Worker 和 Docker 版本有何区别？","建议设置 API_KEY 以防流量被刷爆。对于 Cloudflare Worker 版本，必须设置 API_KEY；而对于 Docker 版本，不设置也可以运行，但为了安全起见建议同样设置。配置方式请参考项目 README 文档。","https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fissues\u002F3",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},40230,"如何在爱阅记（iOS）中正确配置多角色语音合成？","在爱阅记的配置页面中，将 `v` 参数填写为 `%@voiceName` 即可支持多角色。如果希望一次性导入多个角色，可以在引擎管理中手动填入 voiceName，并在生成的 JSON 中去掉 `v` 参数，这样导入一次即可生成一串角色。新版本已添加“导入爱阅记”功能，可将生成的 JSON 复制到爱阅记中（目前仅支持逐个导入）。","https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fissues\u002F10",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},40231,"服务每隔一小时失效或报错 500，需要重启才能恢复，是什么原因？","这通常是由于获取微软接口端点失败导致的。维护者已在最新镜像中增加了重试机制来解决此问题。如果遇到此情况，请拉取最新的 Docker 镜像重新运行。此外，也请检查服务器时间是否准确，虽然多数情况下是网络波动或接口临时不可用导致的。","https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fissues\u002F54",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},40232,"为什么在 iOS 或某些手机浏览器（如 Via, Edge）上无法播放音频？","iOS 设备对音频格式有特定限制，导致部分格式无法直接播放。如果自建服务在手机端无法播放，可以尝试使用项目提供的 `http_ms.zip` 中的配置，或者使用阅读器内置的大声朗读功能。另外，确保 URL 参数中的音频格式（如 `o=ogg-24khz-16bit-mono-opus` 或 `o=audio-24khz-48kbitrate-mono-mp3`）与客户端兼容性匹配。","https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fissues\u002F2",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},40233,"为什么公开演示站（t.leftsite.cn）的语音列表与自部署版本不一致？","语音列表的数量和内容与服务器的 IP 地址有关。公开演示站的服务器位于日本，因此中文神经网络语音选项较少。如果使用中国大陆 IP 访问或自行部署（或使用 Cloudflare Worker 版本），通常会看到更多中文自然语音选项。","https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fissues\u002F21",{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},40234,"在 Docker 中修改文本分段阈值（config.yaml）为何不生效？","在 Docker 环境中，配置文件 `config.yaml` 需要放置在容器内的 `\u002Fapp\u002Fconfigs` 目录下才能生效，放置在 `\u002Fconfigs` 目录可能无效。如果修改后仍发现分段逻辑未按预期工作（例如长句子未被分割），可能是代码逻辑仅按标点分割而未严格遵循长度阈值，需检查代码中的 `splitTextBySentences` 函数逻辑或等待后续版本修复。","https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fissues\u002F47",{"id":161,"question_zh":162,"answer_zh":163,"source_url":164},40235,"服务突然无法加载语音列表或合成失败，是普遍故障吗？","如果是短暂的服务失效（如早上发现无法使用），通常是微软接口波动或网络问题导致的临时故障。多数情况下，等待一段时间或刷新页面即可恢复。如果多人同时反馈类似问题，通常无需额外操作，稍后会自动恢复。","https:\u002F\u002Fgithub.com\u002Fzuoban\u002Ftts\u002Fissues\u002F11",[]]