一、部署前的环境准备
-
本地大模型要求
- 需支持 OpenAI API 兼容格式(如通过
gpt-3.5-turbo
或自定义模型)。 - 推荐模型:
qwen2.5:7b-instruct
(轻量级中文模型)、ollama
部署的本地模型。 - 硬件建议:至少 4GB 内存(7B 模型),推荐使用 GPU 加速。
- 需支持 OpenAI API 兼容格式(如通过
-
安装依赖工具
- Ollama(若使用本地模型):
# 下载 Ollama(Windows/macOS/Linux) curl -fsSL https://ollama.com/install.sh | sh # 拉取中文模型(示例) ollama pull qwen2.5:7b-instruct
- Ollama(若使用本地模型):
二、Docker 部署配置
-
修改
docker-compose.yml
文件
在环境变量中添加本地大模型地址及参数:services: easyvoice: image: cosincox/easyvoice:latest environment: - OPENAI_BASE_URL=http://192.168.50.60:11434/v1 # 本地模型 API 地址 - MODEL_NAME=qwen2.5:7b-instruct # 模型名称 - OPENAI_API_KEY=123456 # 若模型需认证,填写 API Key
注:若使用 Ollama,
OPENAI_BASE_URL
需替换为http://localhost:11434/v1
。 -
启动容器
docker-compose up -d
三、调用本地大模型的两种方式
方式 1:通过 AI 推荐功能自动分配角色
-
输入多角色文本
在 Web UI 的文本框中粘贴包含角色标记的文本(需符合 AI 指令格式):[角色1: 徐凤年] 寒风如刀,割裂着崖壁上的残雪。孤立的黑石崖如同亘古的巨兽,蛰伏于苍茫群山之中。 [角色2: 凌雪儿] 一阵轻盈的脚步声打破了寂静。一个身着白衣的女子缓缓走来。
-
配置参数
- 选择 AI 推荐 模式。
- 设置角色语音标签(如
角色1=男声
,角色2=女声
)。
-
生成语音
点击“生成语音”,AI 会自动分配不同音色并合成多角色对话音频。
方式 2:通过 API 自定义调用
-
发送 HTTP 请求
使用curl
或代码调用本地模型:curl -X POST http://localhost:3000/api/v1/tts/generate \ -H "Content-Type: application/json" \ -d '{ "data": [{"text": "寒风如刀,割裂着崖壁上的残雪。", "role": "徐凤年"}] }'
- 参数说明:
role
:指定调用本地模型的角色标签。text
:需转换的文本内容。
- 参数说明:
-
处理返回结果
响应为 JSON 格式,包含音频 URL 或二进制数据,可直接嵌入网页播放。
四、优化与调试技巧
-
提示词工程
在文本中添加指令词,提升角色区分度:[角色1: 沉稳的中年男声,语速较慢] "三十年河东,三十年河西..." [角色2: 清冷的少女音,语速较快] "萧兄,又在苦修剑法?"
-
资源监控
通过 Docker 监控容器资源占用:docker stats easyvoice # 查看 CPU/内存使用率
-
常见问题解决
- 模型响应慢:降低
temperature
参数(如设为0.3
)或启用 GPU 加速。 - 角色混淆:检查文本标记格式,确保每个角色段落独立。
- 模型响应慢:降低
五、实测案例
场景:生成《雪中悍刀行》多角色有声书
- 输入文本(含角色标记):
[徐凤年] 这江湖,终究是要用刀剑说话的。 [李淳罡] 剑来!
- 生成效果:
- 徐凤年使用 低沉男声,语速适中。
- 李淳罡触发 激昂男声,语速加快。
六、扩展功能
-
多模型混合调用
在docker-compose.yml
中配置多个模型,通过 API 切换:services: model1: image: cosincox/easyvoice:latest environment: - OPENAI_BASE_URL=http://localhost:11434/v1 - MODEL_NAME=qwen2.5:7b-instruct model2: image: cosincox/easyvoice:latest environment: - OPENAI_BASE_URL=http://192.168.50.61:11434/v1 - MODEL_NAME=gpt-4-turbo
-
自定义语音库
将本地音库挂载到容器:volumes: - ./custom_voice:/app/voices # 挂载自定义语音文件
通过以上步骤,可充分发挥本地大模型的语言理解能力,实现高质量多角色配音。如需进一步优化,可参考 EasyVoice GitHub Wiki 中的进阶配置。