EasyVoice 是一个开源的文本、小说智能转语音解决方案,旨在帮助用户轻松将文本内容转换为高质量的语音输出。
一键生成语音和字幕
AI 智能推荐配音
完全免费,无时长、无字数限制
支持将 10 万字以上的小说一键转为有声书!
流式传输,多长的文本都能立刻播放
支持自定义多角色配音
无论你是想听小说、为创作配音,还是打造个性化音频,EasyVoice 都是你的最佳助手!
你可以轻松的将 EasyVoice 部署到你的云服务器或者本地!

# 极简运行,你可以通过 -e 指定环境变量
docker run -d -p 3000:3000 -v $(pwd)/audio:/app/audio cosincox/easyvoice:latest
or 将仓库克隆到本地,使用 Docker Compose 一键运行!
docker-compose up -d
# 开启/安装 pnpm
corepack enable
# 或者使用 npm 安装 pnpm
npm install -g pnpm
# 克隆仓库
git clone git@github.com:cosin2077/easyVoice.git
cd easyVoice
# 安装依赖
pnpm i -r
# 开发模式
pnpm dev:root
# 生产模式
pnpm build:root
pnpm start:root
audio 目录下./packages/backend/audio 目录下启动服务后尝试在命令行运行下述命令:
curl -X POST http://localhost:3000/api/v1/tts/generateJson \
-H "Content-Type: application/json" \
-d '{
"data": [
{
"desc": "徐凤年",
"text": "你敢动他,我会穷尽一生毁掉卢家,说到做到",
"voice": "zh-CN-YunjianNeural",
"volume": "40%"
},
{
"desc": "姜泥",
"text": "徐凤年,你快走,你打不过的",
"voice": "zh-CN-XiaoyiNeural"
},
{
"desc": "路人甲",
"text": "他可是堂堂棠溪剑仙,这小子真是遇到强敌了",
"voice": "zh-CN-XiaoniNeural",
"volume": "-20%"
},
{
"desc": "路人乙",
"text": "这小子真是不知死活,竟然敢挑战卢白撷",
"voice": "zh-TW-HsiaoChenNeural",
"volume": "-20%"
},
{
"desc": "旁白",
"text": "面对棠溪剑仙卢白撷的杀意,徐凤年按住剑柄蓄势待发,他将姜泥放在心尖上,话锋一句比一句犀利,威逼利诱的要求卢白撷放姜泥一条生路。卢白撷也是不撞南墙不回头的人,他与西楚有深仇大恨不得不报...",
"voice": "zh-CN-YunxiNeural",
"rate": "0%",
"pitch": "0Hz",
"volume": "0%"
},
{
"desc": "旁白",
"text": "卢白撷凝聚剑气,剑光如虹,直指姜泥。剑气快到姜泥的时候,竟然被一颗小石子打破!万千剑气瞬间消散。居然就是刚刚进入山门的青衣男子。卢白撷心中警铃大作,再次凝结千万水剑想要先下手为强,青衣男子竟然一只手就挡下了,随之飓风盘起,竟然有山呼海啸之势,众人分分被逼退。随后的打斗,青衣男子每一步都精准预测了卢白撷的动作,卢白撷心中惊骇不已。",
"voice": "zh-CN-YunxiNeural",
"rate": "0%",
"pitch": "0Hz",
"volume": "0%"
},
{
"desc": "卢白撷",
"text": "人心入局,观子无敌,棋局未央,棋子难逃。你是!? 曹长卿!",
"voice": "zh-CN-YunyangNeural",
"rate": "-2%",
"pitch": "2Hz",
"volume": "10%"
}
]
}' \
-o output.mp3
你将看到output.mp3文件的生成,并立即可以播放。
1.克隆仓库
git clone https://github.com/cosin2077/easyVoice.git
2.安装依赖
pnpm i -r
3.启动项目
pnpm dev
4.打开浏览器,访问 http://localhost:5173/,开始体验吧!
| 变量名 | 默认值 | 描述 |
|---|---|---|
PORT |
3000 |
服务端口 |
OPENAI_BASE_URL |
https://api.openai.com/v1 |
OpenAI 兼容 API 地址 |
OPENAI_API_KEY |
- | OpenAI API Key |
MODEL_NAME |
- | 使用的模型名称 |
RATE_LIMIT_WINDOW |
1 |
速率限制窗口大小(分钟) |
RATE_LIMIT |
10 |
速率限制次数 |
EDGE_API_LIMIT |
3 |
Edge-TTS API 并发数 |
.env 或 packages/backend/.env 中设置,优先级为 packages/backend/.env > .env。 -e 参数传入环境变量,如上文示例。A: 在 .env 文件中添加 OPENAI_API_KEY=your_api_key OPENAI_BASE_URL=openai_compatible_base_url MODEL_NAME=openai_model_name,你可以用任何 openai compatible 的 API 地址和模型名称,例如 https://openrouter.ai/api/v1/ 和 deepseek。
Q: 为什么我的AI配音效果不好?
A: AI 推荐配音是通过大模型来决定不同的段落的配音参数,大模型的能力直接影响配音结果,你可以尝试更换不同的大模型,或者是用 Edge-TTS 选择固定的声音配音。
Q: 速度太慢?
当前主要通过 Edge-TTS API 提供免费语音合成。
未来计划支持官方 API、Google TTS、声音克隆等功能。
$ claude mcp add easyVoice \
-- python -m otcore.mcp_server <graph>