[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-cosin2077--easyVoice":3,"tool-cosin2077--easyVoice":65},[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 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[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},4128,"GPT-SoVITS","RVC-Boss\u002FGPT-SoVITS","GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具，旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点，实现了“零样本”和“少样本”的快速建模：用户只需提供 5 秒参考音频即可即时生成语音，或使用 1 分钟数据进行微调，从而获得高度逼真且相似度极佳的声音效果。\n\n该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能，极大地降低了数据准备和模型训练的技术门槛，让非专业人士也能轻松上手。\n\n在技术亮点方面，GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成，还具备卓越的推理速度，在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音，还是进行多语言语音交互研究，GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。",56375,3,"2026-04-05T22:15:46",[21],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":29,"last_commit_at":38,"category_tags":39,"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":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":29,"last_commit_at":46,"category_tags":47,"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":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":29,"last_commit_at":54,"category_tags":55,"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":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":62,"last_commit_at":63,"category_tags":64,"status":22},3788,"airi","moeru-ai\u002Fairi","airi 是一款开源的本地化 AI 伴侣项目，旨在将虚拟角色（如“二次元老婆”或赛博生命）带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力，让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。\n\nairi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手，airi 允许用户在本地运行，不仅保护了对话隐私，还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天，甚至能直接参与《我的世界》（Minecraft）和《异星工厂》（Factorio）等游戏，实现了从单纯对话到共同娱乐的跨越。\n\n这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者，以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持（涵盖 Web、macOS 和 Windows）以及强大的游戏交互能力，让 AI 不仅能“说”，还能“玩”。通过容器化的灵魂设计，airi 为每个人创造专属数字生命提供了可能，让虚拟陪伴变得更加真实且触手可及。",37086,1,"2026-04-05T10:54:25",[19,21,17],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":80,"owner_twitter":80,"owner_website":80,"owner_url":82,"languages":83,"stars":116,"forks":117,"last_commit_at":118,"license":80,"difficulty_score":10,"env_os":119,"env_gpu":120,"env_ram":120,"env_deps":121,"category_tags":124,"github_topics":125,"view_count":129,"oss_zip_url":80,"oss_zip_packed_at":80,"status":22,"created_at":130,"updated_at":131,"faqs":132,"releases":168},218,"cosin2077\u002FeasyVoice","easyVoice","开源文本转语音工具，支持超长文本，多角色配音","EasyVoice 是一款开源的文本转语音工具，专为处理超长内容（如十万字小说）而设计，能一键生成高质量语音与配套字幕。它解决了传统 TTS 工具对文本长度限制、角色单一、无法流式播放等问题，特别适合需要将大量文字转化为有声内容的用户。无论是普通读者想“听小说”、内容创作者制作配音、还是开发者搭建语音服务，都能轻松上手。其亮点在于支持多角色自定义配音——不同人物可分配不同声线、语速和音量，并通过 AI 智能推荐最优配置；同时采用流式传输技术，再长的文本也能边生成边播放，无需等待。部署灵活，既可通过 Docker 一键运行，也支持本地 Node.js 环境开发调试。目前基于 Azure TTS 引擎，未来将持续接入更多语音后端。完全免费、无字数与时长限制，是打造个性化音频体验的理想选择。","# EasyVoice 🎙️\n\n## 项目简介 ✨  \n\n**EasyVoice** 是一个开源的文本、小说智能转语音解决方案，旨在帮助用户轻松将文本内容转换为高质量的语音输出。  \n\n- **一键生成语音和字幕**\n\n- **AI 智能推荐配音**\n\n- **完全免费，无时长、无字数限制**\n\n- **支持将 10 万字以上的小说一键转为有声书！**\n\n- **流式传输，多长的文本都能立刻播放**\n\n- **支持自定义多角色配音**\n\n无论你是想听小说、为创作配音，还是打造个性化音频，EasyVoice 都是你的最佳助手！\n\n**你可以轻松的将 EasyVoice 部署到你的云服务器或者本地！**\n\n## 体验一下\n\n[easyvoice.ioplus.tech](https:\u002F\u002Feasyvoice.ioplus.tech)\n\n## 核心功能 🌟\n\n- **文本转语音** 📝 ➡️ 🎵  \n  一键将大段文本转为语音，高效又省时。\n- **流式传输** 🌊  \n  再多的文本，都可以迅速返回音频直接开始试听！\n- **多语言支持** 🌍  \n  支持中文、英文等多种语言。  \n- **字幕支持** 💬  \n  自动生成字幕文件，方便视频制作和字幕翻译。  \n- **角色配音** 🎭  \n  提供多种声音选项，完美适配不同角色。  \n- **自定义设置** ⚙️  \n  可调整语速、音调等参数，打造专属语音风格。  \n- **AI 推荐** 🧠  \n  通过 AI 智能推荐最适合的语音配置，省心又贴心。  \n- **试听功能** 🎧  \n  生成前可试听效果，确保每一句都如你所愿！  \n\n## Screenshots📸\n\n![Home](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcosin2077_easyVoice_readme_effce16852b5.jpg)\n![Generate](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcosin2077_easyVoice_readme_7a0dcb48b78f.jpg)\n\n## 快速开始 🚀\n\n### 1. 通过 docker 运行\n\n```bash\n# 极简运行，你可以通过 -e 指定环境变量\ndocker run -d -p 3000:3000 -v $(pwd)\u002Faudio:\u002Fapp\u002Faudio cosincox\u002Feasyvoice:latest\n```\n\nor 将仓库克隆到本地，使用 Docker Compose 一键运行！\n\n```bash\ndocker-compose up -d\n```\n\n### 2. 本地运行项目（请先确保已安装 Node.js 环境，参考：[安装 Node.js](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F442215189)）\n\n```bash\n# 开启\u002F安装 pnpm\ncorepack enable\n# 或者使用 npm 安装 pnpm\nnpm install -g pnpm\n\n# 克隆仓库\ngit clone git@github.com:cosin2077\u002FeasyVoice.git\ncd easyVoice\n# 安装依赖\npnpm i -r\n\n# 开发模式\npnpm dev:root\n\n# 生产模式\npnpm build:root\npnpm start:root\n```\n\n### 3. 生成的音频、字幕保存位置\n\n- Docker 部署： 保存在挂载的 `audio` 目录下\n- Node.js 运行保存在 `.\u002Fpackages\u002Fbackend\u002Faudio` 目录下\n\n## 高级\n\n### 角色自定义\n\n启动服务后尝试在命令行运行下述命令：\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fv1\u002Ftts\u002FgenerateJson \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n  \"data\": [\n    {\n      \"desc\": \"徐凤年\",\n      \"text\": \"你敢动他，我会穷尽一生毁掉卢家，说到做到\",\n      \"voice\": \"zh-CN-YunjianNeural\",\n      \"volume\": \"40%\"\n    },\n    {\n      \"desc\": \"姜泥\",\n      \"text\": \"徐凤年，你快走，你打不过的\",\n      \"voice\": \"zh-CN-XiaoyiNeural\"\n    },\n    {\n      \"desc\": \"路人甲\",\n      \"text\": \"他可是堂堂棠溪剑仙，这小子真是遇到强敌了\",\n      \"voice\": \"zh-CN-XiaoniNeural\",\n      \"volume\": \"-20%\"\n    },\n    {\n      \"desc\": \"路人乙\",\n      \"text\": \"这小子真是不知死活，竟然敢挑战卢白撷\",\n      \"voice\": \"zh-TW-HsiaoChenNeural\",\n      \"volume\": \"-20%\"\n    },\n    {\n      \"desc\": \"旁白\",\n      \"text\": \"面对棠溪剑仙卢白撷的杀意，徐凤年按住剑柄蓄势待发，他将姜泥放在心尖上，话锋一句比一句犀利，威逼利诱的要求卢白撷放姜泥一条生路。卢白撷也是不撞南墙不回头的人，他与西楚有深仇大恨不得不报...\",\n      \"voice\": \"zh-CN-YunxiNeural\",\n      \"rate\": \"0%\",\n      \"pitch\": \"0Hz\",\n      \"volume\": \"0%\"\n    },\n    {\n      \"desc\": \"旁白\",\n      \"text\": \"卢白撷凝聚剑气，剑光如虹，直指姜泥。剑气快到姜泥的时候，竟然被一颗小石子打破！万千剑气瞬间消散。居然就是刚刚进入山门的青衣男子。卢白撷心中警铃大作，再次凝结千万水剑想要先下手为强，青衣男子竟然一只手就挡下了，随之飓风盘起，竟然有山呼海啸之势，众人分分被逼退。随后的打斗，青衣男子每一步都精准预测了卢白撷的动作，卢白撷心中惊骇不已。\",\n      \"voice\": \"zh-CN-YunxiNeural\",\n      \"rate\": \"0%\",\n      \"pitch\": \"0Hz\",\n      \"volume\": \"0%\"\n    },\n    {\n      \"desc\": \"卢白撷\",\n      \"text\": \"人心入局，观子无敌，棋局未央，棋子难逃。你是！？ 曹长卿！\",\n      \"voice\": \"zh-CN-YunyangNeural\",\n      \"rate\": \"-2%\",\n      \"pitch\": \"2Hz\",\n      \"volume\": \"10%\"\n    }\n  ]\n}' \\\n-o output.mp3\n\n```\n\n你将看到output.mp3文件的生成，并立即可以播放。\n\n#### 参数说明\n\n- text: 你需要转语音的文字。\n- voice: 你需要用到的声音，参考：[支持的声音列表](.\u002Fpackages\u002Fbackend\u002Fsrc\u002Fllm\u002Fprompt\u002FvoiceList.json)\n- rate: 语速调整，百分比形式，默认 +0%（正常），如 \"+50%\"（加快 50%），\"-20%\"（减慢 20%）。\n- volume: 音量调整，百分比形式，默认 +0%（正常），如 \"+20%\"（增 20%），\"-10%\"（减 10%）。\n- pitch: 音调调整，默认 +0Hz（正常），如 \"+10Hz\"（提高 10 赫兹），\"-5Hz\"（降低 5 赫兹）。\n\n### 接入其他 TTS 服务\n\n- TODO\n\n## 技术实现 🛠️\n\n- **前端**：Vue 3 + TypeScript + Element Plus 🌐  \n- **后端**：Node.js + Express + TypeScript ⚡  \n- **语音合成**：Microsoft Azure TTS(更多引擎接入中) + OpenAI(OpenAI 兼容即可) + ffmpeg 🎤  \n- **部署**：Node.js + Docker + Docker Compose 🐳  \n\n## 快速开发 🚀\n\n1.克隆仓库\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice.git\n```\n\n2.安装依赖\n\n```bash\npnpm i -r\n```\n\n3.启动项目\n\n```bash\npnpm dev\n```\n\n4.打开浏览器，访问 `http:\u002F\u002Flocalhost:5173\u002F`，开始体验吧！\n\n## 环境变量 ⚙️\n\n| 变量名              | 默认值                         | 描述                          |\n|--------------------|-------------------------------|------------------------------|\n| `PORT`             | `3000`                        | 服务端口                      |\n| `OPENAI_BASE_URL`  | `https:\u002F\u002Fapi.openai.com\u002Fv1`   | OpenAI 兼容 API 地址          |\n| `OPENAI_API_KEY`   | -                             | OpenAI API Key               |\n| `MODEL_NAME`       | -                             | 使用的模型名称                 |\n| `RATE_LIMIT_WINDOW`| `1`                           | 速率限制窗口大小（分钟）         |\n| `RATE_LIMIT`       | `10`                          | 速率限制次数                   |\n| `EDGE_API_LIMIT`   | `3`                           | Edge-TTS API 并发数           |\n\n- **配置文件**：可在 `.env` 或 `packages\u002Fbackend\u002F.env` 中设置，优先级为 `packages\u002Fbackend\u002F.env > .env`。  \n- **Docker 配置**：通过 `-e` 参数传入环境变量，如上文示例。\n\n## FAQ\n\n- **Q: 如何配置 OpenAI 相关信息?**\n- A: 在 `.env` 文件中添加 `OPENAI_API_KEY=your_api_key` `OPENAI_BASE_URL=openai_compatible_base_url` `MODEL_NAME=openai_model_name`，你可以用任何 openai compatible 的 API 地址和模型名称，例如 `https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002F` 和 `deepseek`。\n\n- **Q: 为什么我的AI配音效果不好？**\n- A: AI 推荐配音是通过大模型来决定不同的段落的配音参数，大模型的能力直接影响配音结果，你可以尝试更换不同的大模型，或者是用 Edge-TTS 选择固定的声音配音。\n\n- **Q: 速度太慢？**\n- A: AI 推荐配音需要把输入的文本分段、然后让 AI 分析、推荐每一分段的配音参数，最后再生成音频、拼接。速度会比直接用 Edge-TTS慢。你可以更换相应更快的大模型，或者尝试调节 Edge-TTS 的并发参数：EDGE_API_LIMIT为更大的值(10 以下)，注意并发太高可能会有限制。\n\n## Tips\n\n- 当前主要通过 Edge-TTS API 提供免费语音合成。  \n\n- 未来计划支持官方 API、Google TTS、声音克隆等功能。\n","# EasyVoice 🎙️\n\n## 项目简介 ✨  \n\n**EasyVoice** 是一个开源的文本、小说智能转语音（Text-to-Speech, TTS）解决方案，旨在帮助用户轻松将文本内容转换为高质量的语音输出。  \n\n- **一键生成语音和字幕**\n\n- **AI 智能推荐配音**\n\n- **完全免费，无时长、无字数限制**\n\n- **支持将 10 万字以上的小说一键转为有声书！**\n\n- **流式传输（Streaming），多长的文本都能立刻播放**\n\n- **支持自定义多角色配音**\n\n无论你是想听小说、为创作配音，还是打造个性化音频，EasyVoice 都是你的最佳助手！\n\n**你可以轻松地将 EasyVoice 部署到你的云服务器或者本地！**\n\n## 体验一下\n\n[easyvoice.ioplus.tech](https:\u002F\u002Feasyvoice.ioplus.tech)\n\n## 核心功能 🌟\n\n- **文本转语音** 📝 ➡️ 🎵  \n  一键将大段文本转为语音，高效又省时。\n- **流式传输** 🌊  \n  再多的文本，都可以迅速返回音频直接开始试听！\n- **多语言支持** 🌍  \n  支持中文、英文等多种语言。  \n- **字幕支持** 💬  \n  自动生成字幕文件，方便视频制作和字幕翻译。  \n- **角色配音** 🎭  \n  提供多种声音选项，完美适配不同角色。  \n- **自定义设置** ⚙️  \n  可调整语速、音调等参数，打造专属语音风格。  \n- **AI 推荐** 🧠  \n  通过 AI 智能推荐最适合的语音配置，省心又贴心。  \n- **试听功能** 🎧  \n  生成前可试听效果，确保每一句都如你所愿！  \n\n## Screenshots📸\n\n![Home](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcosin2077_easyVoice_readme_effce16852b5.jpg)\n![Generate](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcosin2077_easyVoice_readme_7a0dcb48b78f.jpg)\n\n## 快速开始 🚀\n\n### 1. 通过 docker 运行\n\n```bash\n# 极简运行，你可以通过 -e 指定环境变量\ndocker run -d -p 3000:3000 -v $(pwd)\u002Faudio:\u002Fapp\u002Faudio cosincox\u002Feasyvoice:latest\n```\n\n或 将仓库克隆到本地，使用 Docker Compose 一键运行！\n\n```bash\ndocker-compose up -d\n```\n\n### 2. 本地运行项目（请先确保已安装 Node.js 环境，参考：[安装 Node.js](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F442215189)）\n\n```bash\n# 开启\u002F安装 pnpm\ncorepack enable\n# 或者使用 npm 安装 pnpm\nnpm install -g pnpm\n\n# 克隆仓库\ngit clone git@github.com:cosin2077\u002FeasyVoice.git\ncd easyVoice\n# 安装依赖\npnpm i -r\n\n# 开发模式\npnpm dev:root\n\n# 生产模式\npnpm build:root\npnpm start:root\n```\n\n### 3. 生成的音频、字幕保存位置\n\n- Docker 部署： 保存在挂载的 `audio` 目录下\n- Node.js 运行保存在 `.\u002Fpackages\u002Fbackend\u002Faudio` 目录下\n\n## 高级\n\n### 角色自定义\n\n启动服务后尝试在命令行运行下述命令：\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fv1\u002Ftts\u002FgenerateJson \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n  \"data\": [\n    {\n      \"desc\": \"徐凤年\",\n      \"text\": \"你敢动他，我会穷尽一生毁掉卢家，说到做到\",\n      \"voice\": \"zh-CN-YunjianNeural\",\n      \"volume\": \"40%\"\n    },\n    {\n      \"desc\": \"姜泥\",\n      \"text\": \"徐凤年，你快走，你打不过的\",\n      \"voice\": \"zh-CN-XiaoyiNeural\"\n    },\n    {\n      \"desc\": \"路人甲\",\n      \"text\": \"他可是堂堂棠溪剑仙，这小子真是遇到强敌了\",\n      \"voice\": \"zh-CN-XiaoniNeural\",\n      \"volume\": \"-20%\"\n    },\n    {\n      \"desc\": \"路人乙\",\n      \"text\": \"这小子真是不知死活，竟然敢挑战卢白撷\",\n      \"voice\": \"zh-TW-HsiaoChenNeural\",\n      \"volume\": \"-20%\"\n    },\n    {\n      \"desc\": \"旁白\",\n      \"text\": \"面对棠溪剑仙卢白撷的杀意，徐凤年按住剑柄蓄势待发，他将姜泥放在心尖上，话锋一句比一句犀利，威逼利诱的要求卢白撷放姜泥一条生路。卢白撷也是不撞南墙不回头的人，他与西楚有深仇大恨不得不报...\",\n      \"voice\": \"zh-CN-YunxiNeural\",\n      \"rate\": \"0%\",\n      \"pitch\": \"0Hz\",\n      \"volume\": \"0%\"\n    },\n    {\n      \"desc\": \"旁白\",\n      \"text\": \"卢白撷凝聚剑气，剑光如虹，直指姜泥。剑气快到姜泥的时候，竟然被一颗小石子打破！万千剑气瞬间消散。居然就是刚刚进入山门的青衣男子。卢白撷心中警铃大作，再次凝结千万水剑想要先下手为强，青衣男子竟然一只手就挡下了，随之飓风盘起，竟然有山呼海啸之势，众人分分被逼退。随后的打斗，青衣男子每一步都精准预测了卢白撷的动作，卢白撷心中惊骇不已。\",\n      \"voice\": \"zh-CN-YunxiNeural\",\n      \"rate\": \"0%\",\n      \"pitch\": \"0Hz\",\n      \"volume\": \"0%\"\n    },\n    {\n      \"desc\": \"卢白撷\",\n      \"text\": \"人心入局，观子无敌，棋局未央，棋子难逃。你是！？ 曹长卿！\",\n      \"voice\": \"zh-CN-YunyangNeural\",\n      \"rate\": \"-2%\",\n      \"pitch\": \"2Hz\",\n      \"volume\": \"10%\"\n    }\n  ]\n}' \\\n-o output.mp3\n\n```\n\n你将看到output.mp3文件的生成，并立即可以播放。\n\n#### 参数说明\n\n- text: 你需要转语音的文字。\n- voice: 你需要用到的声音，参考：[支持的声音列表](.\u002Fpackages\u002Fbackend\u002Fsrc\u002Fllm\u002Fprompt\u002FvoiceList.json)\n- rate: 语速调整，百分比形式，默认 +0%（正常），如 \"+50%\"（加快 50%），\"-20%\"（减慢 20%）。\n- volume: 音量调整，百分比形式，默认 +0%（正常），如 \"+20%\"（增 20%），\"-10%\"（减 10%）。\n- pitch: 音调调整，默认 +0Hz（正常），如 \"+10Hz\"（提高 10 赫兹），\"-5Hz\"（降低 5 赫兹）。\n\n### 接入其他 TTS 服务\n\n- TODO\n\n## 技术实现 🛠️\n\n- **前端**：Vue 3 + TypeScript + Element Plus 🌐  \n- **后端**：Node.js + Express + TypeScript ⚡  \n- **语音合成**：Microsoft Azure TTS(更多引擎接入中) + OpenAI(OpenAI 兼容即可) + ffmpeg 🎤  \n- **部署**：Node.js + Docker + Docker Compose 🐳  \n\n## 快速开发 🚀\n\n1.克隆仓库\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice.git\n```\n\n2.安装依赖\n\n```bash\npnpm i -r\n```\n\n3.启动项目\n\n```bash\npnpm dev\n```\n\n4.打开浏览器，访问 `http:\u002F\u002Flocalhost:5173\u002F`，开始体验吧！\n\n## 环境变量 ⚙️\n\n| 变量名              | 默认值                         | 描述                          |\n|--------------------|-------------------------------|------------------------------|\n| `PORT`             | `3000`                        | 服务端口                      |\n| `OPENAI_BASE_URL`  | `https:\u002F\u002Fapi.openai.com\u002Fv1`   | OpenAI 兼容 API 地址          |\n| `OPENAI_API_KEY`   | -                             | OpenAI API Key               |\n| `MODEL_NAME`       | -                             | 使用的模型名称                 |\n| `RATE_LIMIT_WINDOW`| `1`                           | 速率限制窗口大小（分钟）         |\n| `RATE_LIMIT`       | `10`                          | 速率限制次数                   |\n| `EDGE_API_LIMIT`   | `3`                           | Edge-TTS API 并发数           |\n\n- **配置文件**：可在 `.env` 或 `packages\u002Fbackend\u002F.env` 中设置，优先级为 `packages\u002Fbackend\u002F.env > .env`。  \n- **Docker 配置**：通过 `-e` 参数传入环境变量，如上文示例。\n\n## FAQ\n\n- **Q: 如何配置 OpenAI 相关信息?**\n- A: 在 `.env` 文件中添加 `OPENAI_API_KEY=your_api_key` `OPENAI_BASE_URL=openai_compatible_base_url` `MODEL_NAME=openai_model_name`，你可以用任何 openai compatible 的 API 地址和模型名称，例如 `https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002F` 和 `deepseek`。\n\n- **Q: 为什么我的AI配音效果不好？**\n- A: AI 推荐配音是通过大模型来决定不同的段落的配音参数，大模型的能力直接影响配音结果，你可以尝试更换不同的大模型，或者是用 Edge-TTS 选择固定的声音配音。\n\n- **Q: 速度太慢？**\n- A: AI 推荐配音需要把输入的文本分段、然后让 AI 分析、推荐每一分段的配音参数，最后再生成音频、拼接。速度会比直接用 Edge-TTS慢。你可以更换相应更快的大模型，或者尝试调节 Edge-TTS 的并发参数：EDGE_API_LIMIT为更大的值(10 以下)，注意并发太高可能会有限制。\n\n## Tips\n\n- 当前主要通过 Edge-TTS API 提供免费语音合成。  \n\n- 未来计划支持官方 API、Google TTS、声音克隆等功能。","# EasyVoice 快速上手指南 🎙️\n\n---\n\n## 环境准备\n\n### 系统要求\n- 支持 Docker 的 Linux \u002F macOS \u002F Windows 系统（推荐 Ubuntu 20.04+）\n- 或本地安装 Node.js 18+（[国内安装参考](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F442215189)）\n\n### 前置依赖\n- **Docker 方式**：已安装 [Docker](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) 和 [Docker Compose](https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Finstall\u002F)\n- **本地运行**：Node.js + pnpm（建议使用淘宝镜像加速：`npm config set registry https:\u002F\u002Fregistry.npmmirror.com`）\n\n---\n\n## 安装步骤\n\n### 方式一：Docker 一键部署（推荐）\n\n```bash\ndocker run -d -p 3000:3000 -v $(pwd)\u002Faudio:\u002Fapp\u002Faudio cosincox\u002Feasyvoice:latest\n```\n\n或克隆项目后使用 Docker Compose：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice.git\ncd easyVoice\ndocker-compose up -d\n```\n\n> 访问地址：http:\u002F\u002Flocalhost:3000\n\n---\n\n### 方式二：本地源码运行\n\n```bash\n# 启用 pnpm（如未安装）\ncorepack enable\n# 或通过 npm 安装\nnpm install -g pnpm\n\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice.git\ncd easyVoice\n\n# 安装依赖（国内用户建议先设置淘宝镜像）\npnpm i -r\n\n# 启动开发模式\npnpm dev:root\n\n# 或构建生产版本\npnpm build:root\npnpm start:root\n```\n\n> 访问地址：http:\u002F\u002Flocalhost:5173\n\n---\n\n## 基本使用\n\n### 1. 网页端使用\n打开浏览器访问部署地址，粘贴文本 → 选择配音 → 点击“生成”，即可试听并下载音频与字幕。\n\n---\n\n### 2. API 调用示例（多角色配音）\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fv1\u002Ftts\u002FgenerateJson \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n  \"data\": [\n    {\n      \"desc\": \"徐凤年\",\n      \"text\": \"你敢动他，我会穷尽一生毁掉卢家，说到做到\",\n      \"voice\": \"zh-CN-YunjianNeural\"\n    },\n    {\n      \"desc\": \"旁白\",\n      \"text\": \"剑气如虹，直指姜泥。\",\n      \"voice\": \"zh-CN-YunxiNeural\"\n    }\n  ]\n}' \\\n-o output.mp3\n```\n\n生成的 `output.mp3` 即为合成语音文件，可直接播放。\n\n> 音频默认保存路径：\n> - Docker：挂载的 `.\u002Faudio` 目录\n> - 本地运行：`.\u002Fpackages\u002Fbackend\u002Faudio`\n\n---\n\n开箱即用，无需复杂配置，立即体验智能文本转语音！","一位独立游戏开发者正在为自己的武侠题材视觉小说制作全程配音，需要将10万字剧本中的多个角色对话与旁白转为自然语音，并适配不同人物性格。\n\n### 没有 easyVoice 时\n- 手动分段粘贴到免费TTS网站，每段限制500字，处理整本剧本需操作上百次，极易出错且耗时数天。\n- 不同角色只能使用同一音色，缺乏情绪区分，玩家反馈“像机器人念经”，沉浸感严重不足。\n- 无法预览效果，生成后才发现语速或音调不合适，必须全部重做，反复试错成本极高。\n- 字幕需手动同步时间轴，与音频对齐耗费大量精力，后期修改更是噩梦。\n- 超过2万字的章节直接被平台拒绝，被迫拆分成多个文件管理，版本混乱频发。\n\n### 使用 easyVoice 后\n- 一键上传整本剧本，自动识别角色并智能推荐匹配声线（如“徐凤年”用沉稳男声，“姜泥”用清脆女声），10分钟内完成全书语音合成。\n- 支持自定义每个角色的语速、音调和音量，比如让反派“卢白撷”语速稍慢+低沉音调，增强压迫感。\n- 生成前可逐句试听调整，不满意立即修改参数，避免返工，效率提升90%以上。\n- 自动生成精准时间轴的SRT字幕文件，导入游戏引擎即可无缝播放，省去手动对齐的繁琐。\n- 流式传输技术让超长文本边生成边播放，无需等待，本地部署还能离线使用，保护剧本版权。\n\neasyVoice 让单人开发者也能低成本打造媲美商业级的多角色有声体验，把精力真正聚焦在创作而非技术琐事上。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcosin2077_easyVoice_effce168.jpg","cosin2077","Kevin","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fcosin2077_592159b4.png","Full stack developer",null,"Universal","https:\u002F\u002Fgithub.com\u002Fcosin2077",[84,88,92,96,100,104,108,112],{"name":85,"color":86,"percentage":87},"TypeScript","#3178c6",55.5,{"name":89,"color":90,"percentage":91},"Vue","#41b883",26.4,{"name":93,"color":94,"percentage":95},"JavaScript","#f1e05a",11.8,{"name":97,"color":98,"percentage":99},"HTML","#e34c26",3.6,{"name":101,"color":102,"percentage":103},"Shell","#89e051",1.5,{"name":105,"color":106,"percentage":107},"Dockerfile","#384d54",0.6,{"name":109,"color":110,"percentage":111},"Batchfile","#C1F12E",0.4,{"name":113,"color":114,"percentage":115},"CSS","#663399",0.3,2041,305,"2026-04-05T17:36:52","","未说明",{"notes":122,"python":120,"dependencies":123},"需安装 Node.js 环境，支持通过 Docker 或本地运行；语音合成依赖 Microsoft Azure TTS 和 Edge-TTS，AI 推荐功能需配置 OpenAI 兼容 API；生成音频文件默认保存在指定目录，支持自定义角色配音和参数调整。",[],[21],[126,127,128],"edge-tts","tts","tts-engines",5,"2026-03-27T02:49:30.150509","2026-04-06T08:44:22.685877",[133,138,143,148,153,158,163],{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},614,"WebSocket 连接失败，返回 403 错误怎么办？","请参考 Issue #63 修改代码后自行打包构建 Docker 镜像即可解决。临时替代方案：可使用 edge-tts 命令行工具，具体安装方法请查阅 deepseek 文档，经测试可用。","https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice\u002Fissues\u002F64",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},615,"调用 generate 接口时报错“SSML is invalid”是什么原因？","常见原因有两个：1）参数大小写错误，如“Hz”不能写成“hz”；2）使用英文语音模型处理中文文本。请检查文本内容和参数格式，确保使用正确的语音模型（中文模型支持中英文混合，英文模型不支持中文）。","https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice\u002Fissues\u002F28",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},616,"在 aarch64 架构上运行报错“exec format error”如何解决？","请重新 pull 最新的 Docker 镜像，项目现已提供支持 arm64 架构的镜像版本，可直接使用无需自行编译。","https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice\u002Fissues\u002F13",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},617,"已配置 .env 环境变量，仍提示“请设置 openaiKey”怎么办？","环境变量名称应为 OPENAI_API_KEY，而非 OPENAI_KEY。请修改 .env 文件中的变量名为 OPENAI_API_KEY，并确保 docker-compose.yml 中引用正确。注意：.env.example 示例文件存在错误，请以本解决方案为准。","https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice\u002Fissues\u002F41",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},618,"长文本转换时 WebSocket 报错“code 1007: An error occurred while parsing EntityName”如何解决？","原因是文本中包含特殊符号如 &、\u003C、> 等。解决方案：1）删除这些特殊符号后再尝试转换；2）更新项目代码至最新版本，新版本已修复此问题。","https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice\u002Fissues\u002F10",{"id":159,"question_zh":160,"answer_zh":161,"source_url":162},619,"TXT 文件上传是否支持多角色配音？有无格式模板？","官网 AI推荐 功能可尝试自动区分角色，但结果不稳定且速度慢。推荐稳定方案：使用 AI 辅助生成角色标注后的 JSON 数据，再通过 API 调用。示例格式：\n{\n  \"data\": [\n    {\"desc\": \"角色名\", \"text\": \"台词\", \"voice\": \"语音模型\", \"volume\": \"音量%\"},\n    ...\n  ]\n}\n调用接口：POST \u002Fapi\u002Fv1\u002Ftts\u002FgenerateJson","https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice\u002Fissues\u002F2",{"id":164,"question_zh":165,"answer_zh":166,"source_url":167},620,"能否实现边转换边播放功能？","网页版已内置该功能，可在生成页面直接试听，无需等待完整转换完成。请确保使用最新版本并访问官方部署页面进行操作。","https:\u002F\u002Fgithub.com\u002Fcosin2077\u002FeasyVoice\u002Fissues\u002F69",[]]