飞牛NAS本地部署开源TTS文本转语音工具EasyVoice与远程使用流程

文章目录

    • 前言
    • 1. 环境准备
    • 2. Docker部署与运行
    • 3. 简单使用测试
    • 4. 安装内网穿透
      • 4.1 开启ssh连接安装cpolar
      • 4.2 创建公网地址
    • 5. 配置固定公网地址
    • 总结

前言

本文主要介绍如何在fnOS飞牛云NAS使用Docker本地部署一款非常好用的开源TTS文本转语音工具EasyVoice,并结合cpolar内网穿透工具轻松实现跨网络环境远程使用,无需公网IP,也不用准备云服务器那么麻烦。

EasyVoice 是一款开源的智能文本转语音工具,作为文本、小说智能转语音解决方案,可以将文本内容转换为高质量的语音输出。支持一键生成语音和字幕,无时长、无字数限制,支持将 10 万字以上的小说一键转为有声书!流式传输,多长的文本都能立刻播放。适用于听小说、为创作配音,打造个性化音频。

EasyVoice提供了在线使用体验文本转语音,但是有字符数量限制,有一定局限性。而且如果考虑到隐私问题,我们完全可以在本地进行部署,更方便的进行使用。它支持Docker和Node.js一键部署,搭建过程非常简单,下面就来详细进行操作演示。

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:latestrestart: unless-stoppedcontainer_name: easyvoiceports:- "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飞牛NAS中本地部署EasyVoice文本转语音工具,并结合cpolar内网穿透工具配置固定不变的二级子域名公网地址,实现随时随地远程访问本地部署服务。

通过本教程的完整部署,您已经成功构建了一个可远程访问的本地语音合成服务。该方案不仅解决了传统内网服务的访问限制问题,还通过容器化部署实现了服务的快速扩展和维护。在实际应用中,建议根据具体需求调整性能参数,例如增加GPU加速支持以提升语音合成速度。如在部署过程中遇到任何技术问题,欢迎在评论区留言交流,或参考官方文档获取更多技术细节。感谢您的观看,有任何问题欢迎留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/905601.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/905601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

部署安装jenkins.war(2.508)

实验目的:部署jenkins,并与gitlab关联bulid 所需软件:jdk-17_linux-x64_bin.tar.gz jenkins.war apache-tomcat-10.1.40.tar.gz 实验主机:8.10具有java环境,内存最少为4G,cpu双核 目录 jdk安装 …

AEO认证的好处 ,如何快速获取AEO认证?

AEO认证的好处及快速获取方法 AEO(Authorized Economic Operator,经认证的经营者) 是海关对符合国际供应链安全标准的企业给予的认证,分为 AEO一般认证 和 AEO高级认证。获得AEO认证可享受多项通关便利,提升企业国际贸…

(01)数字化转型之采购管理:从计划到退货的精细化管控

引言:采购管理对企业运营的关键作用 在当今竞争激烈的商业环境中,采购管理已成为企业成本控制和供应链优化的核心环节。一项研究显示,采购成本通常占企业总成本的60%-80%,而高效的采购管理可帮助企业降低5%-15%的采购成本。本文将…

技术视界 | 青龙机器人训练地形详解(四):复杂地形精讲之斜坡

在前几篇文章中,我们依次讲解了如何创建一个地形、如何将地形添加到训练环境中,并在上一期深入分析了复杂地形之一——台阶地形的创建方式与训练意义。本文将继续聚焦复杂地形训练中另一类代表性地形——斜坡(Slope)与金字塔斜坡&…

【MySQL】多表连接查询

个人主页:Guiat 归属专栏:MySQL 文章目录 1. 多表连接查询概述1.1 连接查询的作用1.2 MySQL支持的连接类型 2. 内连接 (INNER JOIN)2.1 内连接的特点2.2 内连接语法2.3 内连接实例2.4 多表内连接 3. 左外连接 (LEFT JOIN)3.1 左外连接的特点3.2 左外连接…

养猪场巡检机器人的设计与应用研究

摘要 本论文针对传统养猪场人工巡检效率低、劳动强度大、数据准确性差等问题,设计了一种适用于养猪场的巡检机器人。详细阐述了该机器人的设计思路、技术原理、系统组成及功能特点,并通过实际应用案例分析其在养猪场中的应用效果。研究表明,养…

使用PEFT库将原始模型与LoRA权重合并

使用PEFT库将原始模型与LoRA权重合并 步骤如下: 基础模型加载:需保持与LoRA训练时相同的模型配置merge_and_unload():该方法会执行权重合并并移除LoRA层保存格式:合并后的模型保存为标准HuggingFace格式,可直接用于推…

适用于 iOS 的 开源Ultralytics YOLO:应用程序和 Swift 软件包,用于在您自己的 iOS 应用程序中运行 YOLO

​一、软件介绍 文末提供程序和源码下载 该项目利用 Ultralytics 最先进的 YOLO11 模型将您的 iOS 设备转变为用于对象检测的强大实时推理工具。直接从 App Store 下载该应用程序,或浏览我们的指南,将 YOLO 功能集成到您自己的 Swift 应用程序中。 二、…

js关于number类型的计算问题

js中关于number类型的计算 因:在js中,number类型是用于表示数值的基本类型,它遵循 IEEE 754 双精度浮点数(64 位)标准。这导致在某些计算中可能出现精度问题。 例:console.log(0.1 0.2); // 0.300000000…

RAG之大规模解析 PDF 文档全流程实战

PDF 文档在商业、学术和政府领域无处不在,蕴含着大量宝贵信息。然而,从 PDF 中提取结构化数据却面临着独特的挑战,尤其是在处理数千甚至数百万个文档时。本指南探讨了大规模解析 PDF 的策略和工具。 PDF解析挑战 PDF 的设计初衷是为了提供一致的视觉呈现,而非数据提取。这…

TypeScript:类

一、基本概念 TypeScript 类是基于 ES6 类的语法扩展,增加了类型注解和访问修饰符等特性,提供了更强大的面向对象编程能力。 二、基本语法 class Person {name: string;age: number;constructor(name: string, age: number) {this.name name;this.ag…

抢购Python代码示例与技术解析

引言:抢购系统的技术挑战 在当今电子商务高度发达的时代,抢购活动已成为各大电商平台吸引用户的重要手段。然而,高并发、低延迟的抢购场景对系统设计提出了严峻挑战。本文将提供一个完整的Python抢购代码示例,并深入分析其技术实…

实战分析Cpython逆向

Cpython逆向 Python代码转换为C代码的时候,将会大大增加框架代码量。 1、正向py->c 先有正向,再有逆向 pip install cython 写一个简单的pyx文件 .pyx 文件是由 Cython 编程语言 "编写" 而成的 Python 扩展模块源代码文件 print(&qu…

Modbus转IEC104网关(三格电子)

产品概述 Modbus转IE104网关型号SG-TCP-IEC104,是三格电子推出的工业级网关(以下简称网关),主要用于Modbus RTU/TCP/ASCII数据采集、DLT645-1997/2007数据采集,可接多功能电力仪表、温控仪、电表等,将采集…

智能工具协同赋能STEM教育科研|探索LLM大语言模型和数学软件Maple的创新实践

LLM 与 Maple:开启 STEM 教育科研新范式 在当今数字化浪潮下,教育与科研领域正面临着前所未有的变革机遇。大语言模型(LLM)的横空出世,为知识生成、问题求解等带来了全新思路;而数学软件 Maple 以其强大的…

专项智能练习(定义判断)_DA_01

1. 单选题 热传导是介质内无宏观运动时的传热现象,其在固体、液体和气体中均可发生。但严格而言,只有在固体中才是纯粹的热传导,在流体(泛指液体和气体)中又是另外一种情况,流体即使处于静止状态&#xff0…

pandas读取pymysql和解析excel的一系列问题(版本不匹配)

pandas读取pymysql和解析excel的一系列问题,大部分都是版本不匹配导致的 尤其是pandas,numpy,pymysql,openpyxl不匹配导致 from sqlalchemy import create_engine import numpy as np import pandas as pd conncreate_engine("mysqlpymysql://user:passhost:3…

【中级软件设计师】网络攻击(附软考真题)

【中级软件设计师】网络攻击(附软考真题) 目录 【中级软件设计师】网络攻击(附软考真题)一、历年真题二、考点:网络攻击1、拒绝服务攻击(DoS攻击)2、重放攻击3、特洛伊木马4、网络监听5、SQL注入…

20250515配置联想笔记本电脑IdeaPad总是使用独立显卡的步骤

20250515配置联想笔记本电脑IdeaPad总是使用独立显卡的步骤 2025/5/15 19:55 百度:intel 集成显卡 NVIDIA 配置成为 总是用独立显卡 百度为您找到以下结果 ?要将Intel集成显卡和NVIDIA独立显卡配置为总是使用独立显卡,可以通过以下步骤实现?&#xff…

【C++ | 内存管理】C++ 智能指针 std::shared_ptr 详解及使用例子代码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…