当前位置: 首页 > news >正文

飞牛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加速支持以提升语音合成速度。如在部署过程中遇到任何技术问题,欢迎在评论区留言交流,或参考官方文档获取更多技术细节。感谢您的观看,有任何问题欢迎留言交流。

相关文章:

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

文章目录 前言1. 环境准备2. Docker部署与运行3. 简单使用测试4. 安装内网穿透4.1 开启ssh连接安装cpolar4.2 创建公网地址 5. 配置固定公网地址总结 前言 本文主要介绍如何在fnOS飞牛云NAS使用Docker本地部署一款非常好用的开源TTS文本转语音工具EasyVoice,并结合…...

​​STC51系列单片机引脚分类与功能速查表(以STC89C52为例)​

​​1. 基本I/O端口​​ ​​端口​​​​引脚范围​​​​类型​​​​主要功能​​​​特殊说明​​​​P0​​P0.0~P0.7​​开漏双向I/O​​1. 通用I/O(需外接上拉电阻) 2. 数据总线(D0-D7) 3. 低8位地址总线(A0-A…...

recvfrom和sendto函数中地址参数的作用

在 UDP 通信中,recvfrom 和 sendto 函数中的地址参数起着至关重要的作用。 以下是对这两个函数中地址参数的作用、所属方以及缺失地址时的后果的详细解释。 recvfrom 函数 int recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_add…...

运维职业发展思维导图

主要内容如下: 一、 初级入行阶段 这是职业生涯的起点,主要涉及基础技能的学习和实践。 Linux初学: 重点是学习Linux系统的基础命令和操作。IDC机房运维: 负责数据中心机房内设备的管理和日常维护工作。Helpdesk桌面运维: 提供桌面技术支持,帮助用户解决遇到的计算机软硬…...

【数据处理】Python对CMIP6数据进行插值——详细解析实现(附源码)

目录 Python对CMIP6数据进行插值一、引言代码概览思维导图 二、数据预处理三、数据区域裁剪四、插值(一) 垂直插值(二) 水平插值 五、保存插值好的文件六、文件合并与气候态计算七、代码优化技巧八、多线程处理九、全部代码 Pytho…...

worldquant rank函数

https://support.worldquantbrain.com/hc/en-us/community/posts/13869304934935-%E6%80%8E%E6%A0%B7%E7%90%86%E8%A7%A3rank%E5%87%BD%E6%95%B0 链接。进的话可以填我的邀请码JS34795我可以带你 现在学习rank函数 我们所说的做多和做空 首先,当我们讨论Long和S…...

工业4.0神经嫁接术:ethernet ip转profinet协议通信步骤图解

在现代工业自动化领域,不同品牌的设备和协议之间的兼容性问题一直是个挑战。我们的包装线项目就遇到了这样的难题:需要将Rockwell Allen-Bradley的EtherNet/IP伺服系统与西门子PLC的PROFINET主站进行无缝对接。为了解决这一问题,我们采用了et…...

数据库——数据操作语言DML

(2)数据操作语言DML 简称DML——Data Manipulation Language用来对数据库中表的记录进行更新关键字:insert,delete,update A、 插入表记录 向表中插入数据 格式:insert into 表名(字段1,字段2,字段3……) values(值1,值2,值3);…...

文件防泄密的措施有哪些?

文件防泄密措施需要从技术、管理和物理三个层面综合施策,以下为常见措施分类整理: 一、技术防护措施 华途加密技术 文件加密:使用AES、RSA等算法对敏感文件加密。 传输加密:通过SSL/TLS、VPN保障传输安全,禁止明文传…...

C++ Mac 打包运行方案(cmake)

文章目录 背景动态库梳理打包方案静态库处理动态库处理(PCL库)编译链接动态库后处理逻辑 批量信任 背景 使用C编写的一个小项目,需要打包成mac下的可执行文件(免安装版本),方便分发给其他mac执行,需要把项目的动态库都…...

数学复习笔记 10

前言 我觉得数学的高分乃至满分属于那些,聪明,坚韧,勇敢,细致的人。我非常惭愧自己不是这样的人,我在生活中发现了这样的同学,和他们交流的时候我常常感到汗流浃背,因为他们非常扎实的基础知识…...

Oracle-相关笔记

Oracle Database Online Documentation 11g 连接 WinR sqlplus username/passwordhostname:port/service_namesqlplus user02/123456192.xxx:1521/orclsqlplus / as sysdba #SQL*Plus 終端编码使用UTF-8 chcp 65001#打开SQL*Plus程序 sqlplus /nolog#使用dba角色登录(用 1.…...

mac安装cast

背景 pycharm本地运行脚本时提示cast没有安装 问题原因 脚本尝试调用cast命令(以太坊开发工具foundry中的子命令),但您的系统未安装该工具。 从日志可见,错误发生在通过sysutil.py执行shell命令时。 解决方案 方法1&#xf…...

CodeEdit:macOS上一款可以让Xcode退休的IDE

CodeEdit 是一款轻量级、原生构建的代码编辑器,完全免费且开源。它使用纯 swift 实现,而且专为 macOS 设计,旨在为开发者提供更高效、更可靠的编程环境,同时释放 Mac 的全部潜力。 Stars 数21,719Forks 数1,081 主要特点 macOS 原…...

opencv4.11编译Debug提示缺少python312_d.lib或python3*_d.lib的解决办法

前言 当我们编译OpenCV 4.11的时候可能会遇到提示缺少库文件,这个时候我们可以下载Python源码编译这个lib。 也可以下载我上传的版本(python312_d.lib),但是如果是其他版本需要自己编译。编译步骤如下,大概几分钟搞定…...

html的鼠标点击事件有哪些写法

在HTML中&#xff0c;鼠标点击事件的实现方式多样&#xff0c;以下从基础语法到现代实践为您详细梳理&#xff1a; 一、基础写法&#xff1a;直接内联事件属性 在HTML标签内通过on前缀事件属性绑定处理函数&#xff0c;适合简单交互场景&#xff1a; <!-- 单击事件 -->…...

深度解析物理机服务器故障修复时间:影响因素与优化策略

一、物理机故障修复的核心影响因素 物理机作为企业 IT 基础设施的核心载体&#xff0c;其故障修复效率直接关系到业务连续性。故障修复时间&#xff08;MTTR&#xff09;受多重因素交叉影响&#xff1a; 1. 故障类型的复杂性 硬件级故障&#xff1a; 简单故障&#xff1a;内存…...

蓝桥杯 2024 C++国 B最小字符串

P10910 [蓝桥杯 2024 国 B] 最小字符串 题目描述 给定一个长度为 N N N 且只包含小写字母的字符串 S S S&#xff0c;和 M M M 个小写字母 c 1 , c 2 , ⋯ , c M c_1, c_2, \cdots, c_M c1​,c2​,⋯,cM​。现在你要把 M M M 个小写字母全部插入到字符串 S S S 中&…...

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析

解密企业级大模型智能体Agentic AI 关键技术&#xff1a;MCP、A2A、Reasoning LLMs-docker MCP解析 这里面有很重要的原因其中一个很其中一个原因是因为如果你使用docker的方式&#xff0c;你可以在虚拟环境下就类似于这个沙箱的这个机制可以进行隔离。这对于安全&#xff0c;…...

访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时

华为云轻量应用服务器&#xff08;Ubuntu 系统&#xff09; 遇到的问题是&#xff1a; &#x1f512; 访问 Docker 官方镜像源&#xff08;包括代理&#xff09;全部被“重置连接”或超时了&#xff0c;说明你这台服务器的出境网络对这些国外域名限制很严格&#xff0c;常见于华…...

前馈神经网络回归(ANN Regression)从原理到实战

前馈神经网络回归(ANN Regression)从原理到实战 一、回归问题与前馈神经网络的适配性分析 在机器学习领域&#xff0c;回归任务旨在建立输入特征与连续型输出变量之间的映射关系。前馈神经网络&#xff08;Feedforward Neural Network&#xff09;作为最基础的神经网络架构&a…...

RNN/LSTM原理与 PyTorch 时间序列预测实战

🕰️ RNN / LSTM 原理与 PyTorch 时间序列预测实战 在处理时间序列数据、语音信号、文本序列等连续性强的问题时,循环神经网络(RNN)及其改进版本 LSTM(长短期记忆网络)是最常见也最有效的模型之一。本文将深入讲解 RNN 和 LSTM 的核心原理,并通过 PyTorch 实现一个时间…...

Docker容器镜像与容器常用操作指南

一、镜像基础操作 搜索镜像 docker search <镜像名>在Docker Hub中查找公开镜像&#xff0c;例如&#xff1a; docker search nginx拉取镜像 docker pull <镜像名>:<标签>从仓库拉取镜像到本地&#xff0c;标签默认为latest&#xff1a; docker pull nginx:a…...

1:OpenCV—图像基础

OpenCV教程 头文件 您只需要在程序中包含 opencv2/opencv.hpp 头文件。该头文件将包含应用程序的所有其他必需头文件。因此&#xff0c;您不再需要费心考虑程序应包含哪些头文件。 例如 - #include <opencv2/opencv.hpp>命名空间 所有 OpenCV 类和函数都在 cv 命名空…...

测试--BUG(软件测试⽣命周期 bug的⽣命周期 与开发产⽣争执怎么办)

1. 软件测试的⽣命周期 软件测试贯穿于软件的整个⽣命周期&#xff0c;针对这句话我们⼀起来看⼀下软件测试是如何贯穿软件的整个⽣命周期。 软件测试的⽣命周期是指测试流程&#xff0c;这个流程是按照⼀定顺序执⾏的⼀系列特定的步骤&#xff0c;去保证产品质量符合需求。在软…...

基于大模型预测围术期麻醉苏醒时间的技术方案

目录 一、数据收集与处理(一)数据来源(二)数据预处理二、大模型构建与训练(一)模型选择(二)模型训练三、围术期麻醉苏醒时间预测(一)术前预测(二)术中动态预测四、并发症风险预测(一)风险因素分析(二)风险预测模型五、基于预测制定手术方案(一)个性化手术规划…...

QT6 源(101)阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试

&#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09;属性学习与测试 &#xff1a; &#xff08;4&#xff09; &#xff08;5&#xff09; 谢谢...

电池组PACK自动化生产线:多领域电池生产的“智能引擎”

在电池产业蓬勃发展的当下&#xff0c;电池组PACK自动化生产线凭借其高效、精准、智能的优势&#xff0c;成为众多电池生产领域的核心装备。它广泛适用于数码电池、工具电池、储能电池、电动车电池以及动力电池的生产&#xff0c;有力推动了相关产业的升级与发展。 数码电池领…...

生成式AI在编程中的应用场景:从代码生成到安全检测

引言 生成式AI正在深刻改变软件开发的方式&#xff0c;从代码编写到测试、文档和维护&#xff0c;AI技术正在为每个环节带来革命性的变革。本文将深入探讨生成式AI在编程中的主要应用场景&#xff0c;分析其优势与局限性&#xff0c;并展望未来发展趋势。 主要应用场景 1. 代…...

安全牛报告解读《低空经济发展白皮书(3.0)安全体系》

一、概述 《低空经济发展白皮书&#xff08;3.0&#xff09;安全体系》由粤港澳大湾区数字经济研究院&#xff08;IDEA研究院&#xff09;发布&#xff0c;旨在构建低空经济安全发展的系统性框架&#xff0c;解决规模化低空飞行中的安全挑战。核心目标是明确安全体系需覆盖的飞…...

“2W2H”分析方法

“2W2H”是一种常用的分析方法&#xff0c;它通过回答**What&#xff08;是什么&#xff09;、Why&#xff08;为什么&#xff09;、How&#xff08;怎么做&#xff09;、How much&#xff08;多少&#xff09;**这四个问题来全面了解和分析一个事物或问题。这种方法可以帮助你…...

【数据挖掘笔记】兴趣度度量Interest of an association rule

在数据挖掘中&#xff0c;关联规则挖掘是一个重要的任务。兴趣度度量是评估关联规则的重要指标&#xff0c;以下是三个常用的兴趣度度量&#xff1a;支持度、置信度和提升度。 支持度&#xff08;Support&#xff09; 计算方法 支持度表示包含项集的事务占总事务的比例&…...

ArcGIS Pro调用多期历史影像

一、访问World Imagery Wayback&#xff0c;基本在我国范围 如下图&#xff1a; 二、 放大到您感兴趣的区域 三、 查看影像版本信息 点击第二步的按钮后&#xff0c;便可跳转至World Imagery (Wayback 2025-04-24)的相关信息。 四 、点击上图影像版本信息&#xff0c;页面跳转…...

Web3.0:互联网的去中心化未来

随着互联网技术的不断发展&#xff0c;我们正站在一个新时代的门槛上——Web3.0时代。Web3.0不仅仅是一个技术升级&#xff0c;它更是一种全新的互联网理念&#xff0c;旨在通过去中心化技术重塑网络世界。本文将深入探讨Web3.0的核心概念、技术基础、应用场景以及它对未来的深…...

java17

1.常见API之BigDecimal 底层存储方式&#xff1a; 2.如何分辨过时代码&#xff1a; 有横线的代码表示该代码已过时 3.正则表达式之字符串匹配 注意&#xff1a;如果X不是单一字符&#xff0c;需要加[]中括号 注意&#xff1a;1.想要表达正则表达式里面的.需要\\. 2.想要表…...

游戏引擎学习第283天:“让‘Standing-on’成为一个更严谨的概念

如果同时使用多个OpenGL上下文&#xff0c;并且它们都有工作负载&#xff0c;GPU或GPU驱动程序如何决定调度这些工作&#xff1f;我注意到Windows似乎优先处理活动窗口的OpenGL上下文&#xff08;即活动窗口表现更好&#xff09;&#xff0c;挺有意思的…… 当多个OpenGL上下文…...

小白上手RPM包制作

目录 rpm常用命令 安装环境-Ruby 安装环境-fpm 关于服务器 打包-打包二进制工程 .fpm配置文件 打包-打没有文件的包 RPM 包微调 命令行参数 fpm --help RPM 签名 打包-制作NGINX的RPM包 关于rpmbuild 简单使用 打包之前的准备工作 rpmbuild 打包 - sniproxy …...

电商热销榜的5种实现方案

文章目录 1. MySQL 聚合查询&#xff1a;传统统计法2. Redis Sorted Set&#xff1a;内存排行榜3. Elasticsearch 实时聚合&#xff1a;搜索专家4. 缓存异步更新&#xff1a;榜单的幕后推手5. 大数据离线批处理&#xff1a;夜间魔法师 博主介绍&#xff1a;全网粉丝10w、CSDN合…...

车载诊断进阶篇 --- 车载诊断概念

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

AD 多层线路及装配图PDF的输出

装配图的输出&#xff1a; 1.点开‘智能PDF’ 2. 设置显示顶层&#xff1a; 设置显示底层&#xff1a; 多层线路的输出 同样使用‘智能PDF’...

FramePack - 开源 AI 视频生成工具

&#x1f3ac; 项目简介 由开发者 lllyasviel 创建的一个轻量级动画帧处理工具库&#xff0c;专门用于游戏开发、动画制作和视频处理中的帧序列打包与管理。该项目采用高效的算法实现&#xff0c;能够显著提升动画资源的处理效率。 此 AI 视频生成项目&#xff0c;旨在通过低显…...

“this”这个关键字

一、什么是“this”&#xff1f; 简单来说&#xff0c;“this”是每个非静态成员函数隐含的指针&#xff0c;它指向调用该成员函数的那个对象本身。 换句话说&#xff0c;当你调用对象的方法时&#xff0c;编译器会自动传入一个指针&#xff0c;指向你调用的“那个对象”&…...

问题处理——在ROS2(humble)+Gazebo+rqt下,无法显示仿真无人机的相机图像

文章目录 前言一、问题展示二、解决方法&#xff1a;1.下载对应版本的PX42.下载对应版本的Gazebo3.启动 总结 前言 在ROS2的环境下&#xff0c;进行无人机仿真的过程中&#xff0c;有时需要调取无人机的相机图像信息&#xff0c;但是使用rqt&#xff0c;却发现相机图像无法显示…...

广度和深度优先搜索(BFS和DFS)

1. 广度和深度优先搜索&#xff08;BFS和DFS&#xff09; 1.1. Python实现BFS和DFS from collections import dequeclass Graph:"""无向图类&#xff0c;支持添加边&#xff0c;并实现了 BFS&#xff08;广度优先搜索&#xff09;和 DFS&#xff08;深度优先搜…...

React和Vue在前端开发中, 通常选择哪一个

React和Vue的选择需结合具体需求&#xff1a; 选React的场景 大型企业级应用&#xff0c;需处理复杂状态&#xff08;如电商、社交平台&#xff09;团队熟悉JavaScript&#xff0c;已有React技术栈积累需要高度灵活的架构&#xff08;React仅专注视图层&#xff0c;可自由搭配…...

Vue3学习(组合式API——reactive()和ref()函数详解)

目录 一、reactive()函数。 &#xff08;1&#xff09;介绍与使用。 &#xff08;2&#xff09;简单案例演示。 二、ref()函数。 &#xff08;1&#xff09;介绍与使用。 &#xff08;2&#xff09;简单案例演示。 <1>ref()函数获取响应式对象的本质与底层。 <2>基…...

数据结构 -- 树形查找(一)二叉排序树

二叉排序树 二叉排序树的定义 二叉排序树&#xff0c;又称二叉查找树 一棵二叉树或者是空二叉树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 左子树上所有结点的关键字均小于根结点的关键字 右子树上所有结点的关键字均大于根结点的关键字 左子树和右子树又各是…...

【实战教程】从零实现DeepSeek AI多专家协作系统 - Spring Boot+React打造AI专家团队协作平台

&#x1f680; 本项目是DeepSeek大模型应用系列的V3版本&#xff0c;基于V1和V2版本的功能进行全面升级&#xff0c;引入了多智能体协作机制&#xff01; 系列教程推荐阅读顺序&#xff1a; 【V1版本】零基础搭建DeepSeek大模型聊天系统 - Spring BootReact完整开发指南【V2版本…...

React事件机制

React事件机制 React 的事件机制是其实现高效、跨浏览器交互的核心系统&#xff0c;它通过 合成事件&#xff08;SyntheticEvent&#xff09;、事件委托&#xff08;Event Delegation&#xff09;、事件冒泡&#xff08;Bubbling&#xff09; 和 事件派发&#xff08;Dispatch…...

LeetCode 45. 跳跃游戏 II(中等)

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1] 的最…...