前言

本教程将指导用户在 fnOS 系统环境下,通过容器化技术实现智能语音合成工具 EasyVoice 的本地化部署,并结合内网穿透方案实现跨网络访问。该方案无需公网 IP 地址,也无需架设云服务器,即可完成高效的文本转语音服务搭建。

作为新一代文本语音转化解决方案,EasyVoice 具备多项实用特性:支持超长文本(可处理十万字以上内容)即时生成音频,具备字幕同步输出功能,采用流式处理技术实现即刻播放。其应用场景覆盖有声读物制作、影视配音创作及个性化音频生成等领域。

尽管该工具提供在线体验模式,但存在字符数限制和数据隐私风险。通过本地部署方案,用户可突破这些限制,同时获得更安全的使用体验。本指南将演示如何利用 Docker 容器快速搭建服务,整个部署流程简洁高效,具体操作步骤如下所示。

1. 环境准备

本例中在 Windows 系统使用 VMware Workstation 安装的 fnOS 虚拟机,系统版本为 V0.8.41。如果不知道如何在虚拟机中安装,可以参考这篇文章:VMware 中安装飞牛云(fnOS) NAS 系统 如果您想要在 x86 架构的物理机中安装,可以访问飞牛私有云 fnOS官网下载镜像文件然后使用 U 盘写入镜像后,进入 bios 设置 U 盘启动后像装 Windows 系统一样安装即可。

EasyVoice 项目地址:https://github.com/cosin2077/easyVoice

启动 fnOS 系统后,能看到 Web UI 管理界面的地址:http://192.168.184.130:5666 在浏览器中打开:

image-20250509105552969

2. Docker 部署与运行

首先,点击 Docker-Compose-新增项目:

image-20250513103247093

在弹出的创建项目窗口中,填写项目名称:easyvoice(可自定义):

image-20250513104035416

点击路径后,在 docke 文件夹内新建一个名为 EasyVoice 的项目路径,点击确定:

image-20250513103409909

然后点击创建 docke-compose.yml ,将下面的代码粘贴到输入框:

services:
  easyvoice:
    image: cosincox/easyvoice:latest
    restart: unless-stopped
    container_name: easyvoice
    ports:
      - "9549:3000"
    environment:
      - DEBUG=true
      - OPENAI_BASE_URL=https://openrouter.ai/api/v1/
    volumes:
      - ./audio:/app/audio

image-20250513103939267

勾选创建项目后立即启动,点击确定,自动构建容器:

image-20250513104145965

等待构建完成后,在容器中,能看到 easyvoice 已经正常启动了:

image-20250513104430536

在浏览器中访问 fnOS 飞牛 nas 主机地址加端口号 9549: http://192.168.184.130:9549 就能看到 EasyVoice 的 Web UI 管理界面了:

image-20250513104605241

3. 简单使用测试

点击立即体验:

image-20250513110831119

在跳转的文本转语音页面,我们可以在左侧手动输入文本或上传 txt 格式的文本文件来添加需要转换的内容:

image-20250513111012628

而在右侧是对语音进行设置的选项,包括语言、性别、配音角色、语速、音量、音调等多种设置:

image-20250513112139608

输入文字后,点击生成语音:

image-20250513111432386

速度非常快,资源占用也很少,不需要什么性能就可以轻松生成语音:

image-20250513111505721

生成的音频可以直接播放,也可以下载到本地:

image-20250513111605877

再测试一下拖拽文件或点击上传一个 txt 格式小说试试:

image-20250513114218758

随着需要转换成语音的文字字数增多,生成的时间也会增加:

image-20250513114237849

等待转换结束后,可以看到,一个多小时的文本量也能正常转换成音频:

image-20250513114803797

除了预设语音功能,EasyVoice 目前还增加了实验性功能的 AI 推荐,可以通过 AI 将需要转换为语音的文字智能推荐不同的角色语音。如果想体验这个功能,我们可以在上边通过 docker-compose 创建容器时,在代码中的环境变量里添加需要调用的本地大模型地址(本例中的地址为 ollama 部署的主机 IP+端口号)与要使用的模型名称即可:

b44ccf9ead8f60d0bbc18659d17da606

实际测试后确实能分角色朗读,但并不会新增角色语音,也是调用预设语音中的角色进行转换。而且根据不同的模型能力,实际得到的结果也不相同,支持函数调用的模型似乎效果更好一些,还是可以期待后续的优化的。

image-20250513163006659

image-20250513163310851

4. 安装内网穿透

我们现在已经实现了在本地 fnOS 飞牛云 NAS 中部署了 EasyVoice 进行文本转语音,并能在在同一局域网内向其他人分享这个工具的链接在浏览器中进行体验了。但如果你想自己或是异地好友和同事也能远程使用你在本地飞牛云 NAS 中部署的 EasyVoice 服务该怎么办呢?很简单,只要安装一个 cpolar 内网穿透工具就能轻松实现远程访问内网主机中部署的服务了,节约成本,提高效率,接下来介绍一下如何安装 cpolar 内网穿透。

cpolar 官网地址: https://www.cpolar.com

4.1 开启 ssh 连接安装 cpolar

首先打开飞牛云 NAS 设置界面,开启 ssh 连接,端口默认为 22 即可,开启后,我们就可以 ssh 连接飞牛云 NAS 执行命令:

853d0e568b7879cca312f7b18d4fbb4.png

然后我们通过输入飞牛云 NAS 的 IP 地址 ssh 远程连接进去,因为 fnOS 是基于 Linux 内核开发的,所以我们可以按照 cpolar 的 Linux 安装方法进行安装:

image-20250225152553263

连接后执行下面 cpolar Linux 安装命令:

sudo curl https://get.cpolar.sh | sh

再次输入飞牛云 nas 的密码确认后即可自动安装

安装完成后,执行下方命令查看 cpolar 服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

image-20250225153049854

Cpolar 安装和成功启动服务后,在浏览器上输入飞牛云主机 IP 加 9200 端口即:【http://localhost:9200】访问 Cpolar 管理界面,使用官网注册的账号登录,登录后即可看到配置界面,接下来在 web 界面配置即可:

image.png

4.2 创建公网地址

登录 cpolar web UI 管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了: easyvoice 注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:9549
  • 域名类型:随机域名
  • 地区:选择 China Top

image-20250513134512469

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,使用上面的任意一个公网地址在浏览器中访问就可以实现随时随地远程使用你在本地部署的 EasyVoice 来文本转语音了!

image-20250513134634179

使用 cpolar 生成的公网地址,无需自己准备云服务器,无公网 IP 也能轻松搞定跨网络环境远程访问本地服务!

image-20250513134726744

小结

为了方便演示,我们在上边的操作过程中使用 cpolar 生成的 HTTP 公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在 24 小时内会发生随机变化,更适合于临时使用。

如果有长期使用本地飞牛云 NAS 中部署的 EasyVoice 文本转语音工具,或者异地访问与使用其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想让公网地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来配置公网地址。

5. 配置固定公网地址

接下来演示如何为 EasyVoice 文本转语音服务配置固定的 HTTP 公网地址,该地址不会变化,无需每天重复修改服务器地址。

配置固定 http 端口地址需要将 cpolar 升级到专业版套餐或以上。

登录 cpolar 官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称:

image-20250513135011703

保留成功后复制保留成功的二级子域名的名称: myeasyv,大家可以设置自己喜欢的名称。

image-20250513135032230

返回 Cpolar web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道:easyvoice,点击右侧的编辑:

image-20250513135152962

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名:myeasyv

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20250513135246942

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

image-20250513135340358

使用上面的任意一个固定的二级子域名公网地址在浏览器中访问,可以看到成功打开 EasyVoice 文本转语音的 Web UI 管理界面,现在开始就不用每天都更换随机公网地址来远程访问本地 nas 中部署的服务了。

image-20250513135611778

同样可以使用 AI 推荐功能:

image-20250513164000852

总结

在智能语音技术深度发展的当下,TTS 工具已成为数字内容创作的重要技术支撑。本文通过实践案例展示了如何在 fnOS 云存储平台完成 EasyVoice 语音合成系统的本地化部署,并利用内网穿透技术建立稳定的远程访问通道。该方案通过生成固定域名的公网入口,突破了传统内网服务的访问边界。

经过完整部署流程,用户已构建出具备远程访问能力的语音生成系统。该架构不仅解决了本地服务的网络限制问题,更通过容器化技术实现了服务的弹性扩展与维护优化。在具体实施中,可结合硬件资源情况配置 GPU 加速模块,显著提升语音生成效率。若在实施过程中遇到技术难题,建议通过官方技术文档获取解决方案,或在技术社区进行交流探讨。期待本方案能为您的语音应用开发提供参考价值。

c652efb3c707bb05fe472e26f75deb7e

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐