Featured image of post Docker 部署 EasyVoice 文字转语音服务 🎤

Docker 部署 EasyVoice 文字转语音服务 🎤

Docker 部署 EasyVoice 文字转语音服务 🎤 📋 目录导航 🎯 项目

Docker 部署 EasyVoice 文字转语音服务 🎤


📋 目录导航


🎯 项目简介

EasyVoice 是一款开源的智能文本转语音(TTS)工具,作为文本、小说智能转语音解决方案,旨在帮助用户轻松将文本内容转换为高质量的语音输出。它提供简单易用的 RESTful API 接口,支持多种语音风格和语言选项,是内容创作、有声读物制作、语音提示等场景的理想选择。🔊✨


✨ 核心特性

特性类别 功能描述 优势
🚀 智能语音生成 支持多维度参数控制,包括语速、音高、音量三级调节 精细控制语音输出效果,满足不同场景需求
🎭 角色演绎引擎 内置多种预置声线,支持同一场景下多角色同步配音 实现拟真对话合成,提升内容表现力
⚡ 实时流式处理 采用分块传输技术,实现音频实时生成 减少等待时间,提升用户体验
🌐 多引擎支持 可接入 Microsoft Azure TTS、OpenAI、Edge-TTS 等服务 灵活选择合成引擎,保证服务稳定性
🔒 安全可靠 本地化部署,所有数据保存在本地 确保隐私安全,数据自主可控
🛠 易用性 提供 Web 管理界面和 RESTful API 开箱即用,易于集成到各种应用
📊 批量处理 支持批量文本转语音处理 提高大批量内容处理效率
💾 文件管理 自动保存和管理生成的语音文件 方便查找和使用生成的内容

🐳 一、Docker 部署 EasyVoice

1. 创建部署目录和 docker-compose.yml 文件 📁

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
mkdir -p /mnt/mydisk/home/easyvoice && cd $_ && \
cat > docker-compose.yml <<'EOF'
services:
  easyvoice:
    image: cosincox/easyvoice:latest
    container_name: easyvoice
    ports:
      - "9549:3000"     # 🌐 主机端口:容器端口
    volumes:
      - ./audio:/app/audio  # 💾 语音文件存储目录
    environment:
      - TZ=Asia/Shanghai  # ⏰ 时区设置
      - DEBUG=true  # 🐛 调试模式
      - OPENAI_BASE_URL=https://openrouter.ai/api/v1/  # 🤖 OpenAI API地址(可选)
    restart: unless-stopped  # 🔄 自动重启
EOF

2. 拉取镜像并启动容器 🚀

1
docker-compose up -d

🚀 二、使用 EasyVoice

1. 访问 Web 界面 💻

  • 本地访问: http://localhost:9549
  • 域名访问: https://easyvoice.example.com(配置反向代理后)

2. 基本使用方式 🖱️

  1. 打开浏览器访问上述地址
  2. 点击"立即体验"进入操作界面
  3. 在左侧输入文本或上传 TXT 文件
  4. 在右侧设置语音参数(语言、性别、配音角色、语速、音量、音调等)
  5. 点击"生成语音"开始转换
  6. 播放或下载生成的音频文件

3. API 使用示例 🚀

基本文字转语音请求

1
2
3
4
5
6
7
8
9
curl -X POST "http://localhost:9549/api/tts/generate" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "你好,欢迎使用EasyVoice文字转语音服务",
    "voice": "zh-CN-XiaoxiaoNeural",
    "speed": 1.0,
    "pitch": 0,
    "volume": 1.0
  }'

多角色配音请求

1
2
3
4
5
6
7
curl -X POST "http://localhost:9549/api/tts/generate" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "[角色1: 徐凤年] 寒风如刀,割裂着崖壁上的残雪。\n[角色2: 凌雪儿] 一阵轻盈的脚步声打破了寂静。",
    "speed": 1.0,
    "pitch": 0
  }'

4. 查看生成的语音文件 📂

所有生成的语音文件将保存在本地的 ./audio 目录中:

1
2
# 查看生成的语音文件
ls -la /mnt/mydisk/home/easyvoice/audio/

🌐 三、Nginx 反向代理配置

访问地址示例: https://easyvoice.example.com

1. 创建 Nginx 配置文件 🔧

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
mkdir -p /etc/nginx/conf.d && \
cat > /etc/nginx/conf.d/easyvoice.conf <<'EOF'
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name easyvoice.example.com;  # 🌐 请替换为您的实际域名

    # SSL 证书配置
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;

    # 安全头部
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    # 文件上传大小限制
    client_max_body_size 10M;

    location / {
        proxy_pass http://localhost:9549;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_redirect off;
        proxy_buffering on;
        proxy_http_version 1.1;
        
        # 超时设置(语音生成可能需要较长时间)
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }

    # 错误页面处理
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
EOF

2. 测试并重载 Nginx 🔄

1
sudo nginx -t && sudo systemctl reload nginx

🔧 四、容器维护命令

1. Docker Compose 命令 🐳

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 进入项目目录
cd /mnt/mydisk/home/easyvoice

# 停止并删除容器
docker-compose down

# 拉取最新镜像
docker-compose pull

# 启动容器
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看服务日志
docker-compose logs

# 跟踪服务日志
docker-compose logs -f

# 完整升级流程
docker-compose down && \
docker-compose pull && \
docker-compose up -d && \
docker image prune -f

2. Docker 容器命令 📦

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 查看所有容器名称
docker ps -a --format "{{.Names}}"

# 查看运行中容器
docker ps

# 停止/启动/重启容器
docker stop easyvoice      # 停止容器
docker start easyvoice     # 启动容器  
docker restart easyvoice   # 重启容器

# 删除容器
docker rm easyvoice        # 删除已停止容器
docker rm -f easyvoice     # 强制删除运行中容器

# 进入容器Shell
docker exec -it easyvoice sh      # 使用sh进入容器
docker exec -it easyvoice bash    # 使用bash进入容器

# 查看容器详情和资源使用
docker inspect easyvoice     # 查看详细配置
docker stats easyvoice       # 实时资源监控

## 容器日志管理
docker logs easyvoice           # 查看日志
docker logs -f easyvoice        # 实时跟踪日志
docker logs --tail 100 easyvoice  # 查看最后100行
docker logs -t easyvoice        # 带时间戳的日志

3. Docker 镜像管理 📀

1
2
3
4
docker images                  # 列出所有镜像
docker rmi <image_name:tag>    # 删除指定镜像
docker image prune -f          # 清理悬空镜像
docker image prune -a -f       # 清理所有未使用镜像

🌟 启航语音,创作无限

通过本文档,你已经成功使用 Docker 部署了 EasyVoice 文字转语音服务,并借助 Nginx 反向代理实现了安全便捷的远程访问。现在,你可以:

🎙️ 智能配音 享受高质量的文字转语音体验,为内容赋予生动的声音表达
🎭 多角色演绎 实现拟真对话合成,让故事和内容更加生动有趣
高效创作 批量处理文本内容,大幅提升音频内容制作效率

语音之路,是一场与声音共鸣的艺术创作。愿 EasyVoice 成为你可靠的语音助手,陪伴你在每一次内容创作和语音表达的精彩时刻。

从现在开始,文字生声,创意无限——构建你丰富多彩的音频世界吧!🔊


📌 持续迭代:建议关注 EasyVoice 官方更新 ,及时获取新功能与优化。
🐛 反馈与互助:使用中如有疑问或建议,可前往 GitHub Issues 提出。

祝你创作愉快,声音动人!🎉

最后更新于 2025-09-28