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

【TTS】基于GRPO的流匹配文本到语音改进:F5R-TTS

论文地址:https://arxiv.org/abs/2504.02407v3

摘要

我们提出了F5R-TTS,这是一种新颖的文本到语音(TTS)系统,它将群体相对策略优化(GRPO)集成到基于流匹配的架构中。 通过将流匹配TTS的确定性输出重新表述为概率高斯分布,我们的方法能够无缝集成强化学习算法。 在预训练期间,我们训练了一个基于概率重新表述的流匹配模型,该模型源自F5-TTS和一个开源数据集。 在随后的强化学习(RL)阶段,我们采用一个由GRPO驱动的增强阶段,该阶段利用双重奖励指标:通过自动语音识别计算的词错误率(WER)和通过验证模型评估的说话人相似度(SIM)。 零样本语音克隆的实验结果表明,与传统的基于流匹配的TTS系统相比,F5R-TTS在语音可懂度(WER相对降低29.5%)和说话人相似度(SIM得分相对提高4.6%)方面都取得了显著的改进。 音频样本可在https://frontierlabs.github.io/F5R访问。

Refer to caption
图1: 我们进行了零样本语音克隆实验,比较了不同数据集上的三个不同模型。 
评估是从两个关键角度进行的:说话人相似度(由SIM衡量)和语义准确性(由WER衡量)。 
更高的SIM值和更低的WER值表示性能更优。

1、引言

近年来,文本到语音(TTS)系统的显著进步使得能够生成高保真、自然的声音和零样本语音克隆能力。这些发展涵盖了自回归(AR)[1, 2, 3, 4]和非自回归(NAR)[5, 6, 7]模型架构。 AR模型通常使用语音编解码器将音频编码成离散符元,然后采用基于语言模型(LM)的自回归模型来预测这些符元。 然而,这种方法存在推理延迟和暴露偏差的问题。 相反,基于去噪扩散或流匹配的NAR模型利用并行计算来加快推理速度,展现出强大的应用潜力。

此外,正如DeepSeek系列[8, 9, 10, 11]所示,强化学习(RL)已引发了大语言模型(LLM)研究的趋势。 直接偏好优化(DPO)[12]和组相对策略优化(GRPO)[8]等RL方法已被证明能够有效地使LLM输出与人类偏好保持一致,通过反馈优化来增强生成文本的安全性和实用性。 在图像生成领域,去噪扩散策略优化(DDPO)[13]等RL方法也已成功应用。 这种范式现已扩展到AR TTS系统:Seed-TTS[14]使用说话人相似度(SIM)和词错误率(WER)作为奖励,并结合近端策略优化(PPO)[15]、REINFORCE[16]和DPO实现了RL集成。 在一些其他的AR架构工作中,也探讨了DPO及其变体[17, 18, 19, 20]。 然而,由于与LLM的根本结构差异,将RL集成到NAR架构中仍然具有挑战性。 当前的研究没有显示出在基于NAR的TTS系统中成功集成RL的案例,这表明这一挑战仍在等待可行的研究解决方案。

在本文中,我们介绍了F5R-TTS,这是一种新颖的TTS系统,它通过两项关键创新将GRPO应用于流匹配模型。 首先,我们将基于流匹配模型的确定性输出重新表述为概率序列,其中F5-TTS[7]被用作我们修改的骨干。 这种重新表述使得在后续阶段能够无缝集成RL算法。 其次,设计了一个由GRPO驱动的增强阶段,使用WER和SIM作为奖励指标,两者都与人类感知高度相关。 实验结果证明了该系统的有效性,与传统的NAR TTS基线相比,在语音清晰度(WER相对降低了29.5%)和说话人一致性(SIM得分相对提高了4.6%)方面都取得了显著改进。

本工作的关键贡献如下。

  • 我们提出了一种方法,将基于流匹配的TTS模型的输出转换为概率表示,这使得各种强化学习算法能够方便地应用于流匹配模型。
  • 我们成功地将GRPO方法应用于NAR-TTS模型,使用WER和SIM作为奖励信号。
  • 我们已在零样本语音克隆应用场景中实现了 F5R-TTS 模型,并证明了其有效性。

本文的其余部分组织如下:第 2 节描述了所提出的方法。 然后,第 3 节介绍了实验设置和评估结果。 最后,第 4 节总结了本文。

2、提出的方法

所提出的方法将训练过程分为两个阶段。 我们首先使用流匹配损失对模型进行预训练,随后使用 GRPO 改进模型。 在本节中,我们将详细解释如何利用 GRPO 策略来改进基于流匹配的模型。

2.1、预备知识

我们的模型主要遵循 F5-TTS [7],这是一种具有零样本能力的新型基于流匹配的 TTS 模型。 该模型在文本引导的语音填充任务上进行训练。 根据流匹配的概念,目标是预测 x_1-x_0 以  (1-t)x_0+tx_1作为输入,其中 x_1\sim 数据分布 q⁢(x) 和 x_0\sim N(0,1) 。标准目标函数定义为

其中 θ 参数化神经网络 v_t

并且我们旨在使用GRPO进一步增强模型的性能,GRPO是PPO的简化变体,它消除了价值模型,并通过基于规则或基于模型的方法计算奖励。 惩罚项KL散度 \mathbb{D}_{KL} 之间 \pi_\theta 和 \pi_{ref} 的估计如公式所示。 

对于每个问题 q ,它根据输出的相对奖励计算优势 o 在每个组内,然后通过最大化以下目标来优化策略模型 \pi_\theta 。

其中 ε 和 β 是超参数,优势 \widehat{A}_{i,t} = \overset{\sim}{ r}_i = \frac{r_i-mean(r))}{std(r)}

2.2、输出概率化和预训练

Refer to caption
图2:F5R-TTS 的主干架构,它源自基于流匹配的TTS模型。 
我们模型中最重要的区别在于修改了最终的线性层,以便准确预测每个流步骤的概率分布。

我们将模型的输出重新表述为概率术语,以增强与GRPO的兼容性,从而能够预测……的分布概率 x_1-x_0。 图2显示了模型的整体结构。 在第一阶段,我们保留了流匹配目标函数。 流匹配目标是将标准正态分布中的概率路径与近似于数据分布的分布匹配。

所提出的模型也在填充任务上进行了训练。 在训练过程中,模型接收流步骤 t、噪声声学特征 (1-t)x_0+tx_1、掩蔽声学特征 (1-m)\bigodot x1以及完整语音的文本转录 T_{gt}作为输入。 我们使用提取的梅尔谱图特征作为训练的声学特征,并将文本特征填充到与声学特征相同的长度。

所提出的模型并不直接预测……的精确值 m\bigodot (x_1 - x_0) 。我们让模型预测均值 μ⁢(x) 以及方差 σ⁢(x) 最后一层高斯分布和参数 θ 被优化以最大化以下对数似然 x_1-x_0

简化公式后 4,我们可以得到以下改进的目标函数

在预训练阶段,我们使用公式 5来优化模型。

2.3、使用GRPO增强模型

在预训练阶段之后,我们继续使用GRPO来提高模型的性能。 GRPO阶段的流程如图3所示:

Refer to caption
图3:GRPO阶段的流程。 我们采用ASR模型和说话人编码器来推导奖励,随后用于优化策略模型。 
KL散度被纳入作为惩罚项,以增强GRPO阶段的训练稳定性。

在第二阶段,我们进一步训练预训练模型作为策略模型 \pi_\theta 同时初始化参考模型 \pi_{ref} 使用预训练参数。 在整个 GRPO 阶段,参考模型保持冻结状态。 在 GRPO 训练期间,我们的 TTS 模型的前向操作与预训练阶段不同。 存在一个类似于推理的采样操作。 策略模型 \pi_\theta 接收 x_0\sim N(0,1) 作为输入,然后计算每个流程步骤的输出概率。 策略模型的采样结果 o 用于计算奖励以及与参考模型结果相比的 KL 损失x_{ref} .

就奖励指标而言,我们选择 WER 和 SIM 作为改进语义一致性和说话人相似性的主要标准,因为它们代表了语音克隆任务中最关键的两个方面。 我们使用一个 ASR 模型来转录合成的语音,获得转录文本 T_{pol} ,然后将转录文本与真实语音的 T_{gt}真实文本进行比较以计算 WER。 此外,我们利用说话人编码器 Enc_{spk} 来提取合成的说话人嵌入 emb_{pol} 和真实说话人嵌入 emb_{gt} 分别来自生成的语音 o 和真实语音样本 x_{gt}。 通过计算这些嵌入之间的余弦相似度来评估说话人相似度。

因此,GRPO奖励被分为语义相关奖励和说话人相关奖励,定义如下。

总奖励定义为:

其中 \lambda _W 和\lambda _S  是各自奖励的权重项。

计算奖励后,我们可以通过组相对优势估计[8]得到优势。

为了保持模型输出的稳定性,GRPO还需要使用参考模型 \pi_{ref} 来提供约束。 最后,我们定义公式。 10作为第二阶段的目标函数。

3、实验

在本节中,我们的实验重点在于验证所提出方法在增强零样本语音克隆任务性能方面的有效性。

3.1、数据集和实验设置

在预训练阶段,我们使用了WenetSpeech4TTS Basic [21],这是一个包含7226小时多说话人语料的普通话开源数据集,作为训练集。 在GRPO阶段,我们从同一数据集中随机选择了100小时的语音数据进行训练。 在评估中,遵循Seed-TTS的测试设置,我们使用Seed-TTS-eval测试集(cn集)1中的参考语音合成了2020个通用样本和400个困难样本。 通用样本使用纯文本,而困难样本使用难以处理的文本,例如绕口令或包含高频重复词语和短语的文本。 为了测试噪声鲁棒性,我们使用同一测试集中的70个含噪语音生成了140个样本。

我们的模型架构主要遵循F5-TTS论文中描述的配置,仅对最后一层输出层进行了修改。 在预训练阶段,模型在8个A100 40GB GPU上进行了100万次更新训练,批量大小为160,000帧。 在GRPO训练阶段,模型在8个A100 40GB GPU上进行了1100次更新训练,批量大小为6400帧。 对于GRPO训练,我们使用SenseVoice [22]作为自动语音识别(ASR)系统来计算 R⁢e⁢w⁢a⁢r⁢dW ,并使用WeSpeaker [23]作为说话人编码器进行 R⁢e⁢w⁢a⁢r⁢dS 计算。

我们选择原始F5-TTS作为我们实验的基线。 为了证明GRPO在改进TTS模型方面的有效性,我们比较了原始F5-TTS、输出概率化F5-TTS和所提出的方法的性能。 我们分别将它们命名为F5、F5-P和F5-R。 F5严格保留了原始架构和参数设置。 F5-P也是GRPO阶段的预训练模型。 我们在相同的预训练数据集上训练所有模型。

3.2、评估

3.2.1、可视化分析

我们尝试可视化不同模型在零样本语音克隆任务中的性能差异。

图4: 通过t-SNE进行的说话人相似度可视化。 从左到右,三列分别对应F5、F5-P和F5-R。 
图表中的每个小数字代表一个话语样本。 不同的数字或颜色对应不同的目标说话人。 
带星号的数字表示目标说话人的参考话语(数字代表的目标说话人)。 不带星号的数字指的是合成的语音。 并用红箭头标出了一些错误案例。
图5: 真实说话人话语和不同模型合成的语音的全局方差。 
在每个子图中,横轴表示梅尔频谱系数数量,纵轴表示方差。 每个子图中都有4条GV曲线,对应不同的来源。 
曲线的对应关系如图例所示,其中gt表示ground truth(真实值)。

 我们首先使用t-SNE[24]将说话人相似度可视化到二维空间。 T-SNE可以以无监督的方式对数据(例如说话人嵌入)进行聚类。 对于此分析,我们从Seed-TTS-eval test-cn集中随机选择了10个未见过的说话人作为目标说话人,然后模型分别为每个说话人合成了10个话语。 我们使用WeSpeaker获取话语的说话人嵌入,然后通过t-SNE进行可视化。 我们可以直观地看到合成结果与真实样本之间的相似性。 我们还可以观察到目标说话人之间的分布差异。 如图4所示,F5-R的结果根据目标说话人进行了很好的聚类。 同时,F5和F5-P的子图显示,对应于某些目标说话人的合成结果并未完全聚在一起。 这意味着F5-R的合成结果具有更好的说话人相似性。

其次,我们使用了全局方差(GV)[25]。 GV是一种可视化话语频谱方差分布的方法。 我们分别为Seed-TTS-eval test-cn集中的4个未见过的说话人(2个女性和2个男性)生成了20个话语。 然后,我们计算了参考话语和合成话语的GV。 合成曲线和参考曲线越接近,表明性能越好。 如图5所示,F5-R的红色曲线比其他曲线与参考话语的蓝色曲线更好地吻合,这也表明F5-R的合成结果与参考话语更相似。

3.2.2、指标分析

为评估模型性能,我们基于seed-tts-eval test-cn采用了WER和SIM作为客观指标。 对于指标计算,我们利用了seed-tts-eval提供的官方评估工具包。 对于WER,我们使用了Paraformer-zh[26]进行转录。 对于SIM,我们利用了基于WavLM-large的说话人识别模型[27]提取说话人嵌入。 这些指标分别量化了语义准确性(较低的WER更佳)和说话人相似度(较高的SIM更佳)。 表1展示了这三个模型的比较评估结果。

表1: 使用WenetSpeech4TTS Basic训练的不同方法的零样本语音克隆目标指标比较。

就SIM而言,可以观察到F5和F5-P在两个不同的测试集上表现出相当的性能,F5略优于后者。 我们提出的模型在这两个集合上都取得了优越的性能,确立了其顶级性能的地位。 值得注意的是,在通用测试集上,我们的模型以至少0.03 SIM点的优势优于其他模型。 与F5相比,F5-R在通用测试集和困难测试集上分别取得了4.6%和5.6%的相对增长。 这表明GRPO对提高说话人相似度有积极贡献。

就词错误率 (WER) 而言,F5 和 F5-P 在两个不同的测试集上保持高度一致。 然而,我们的模型在这两个数据集上都取得了显著更好的结果。 在通用测试集上,与基线相比,它实现了 29.5% 的 WER 相对降低,在困难测试集上进一步降低了 5.9%。 这些结果最终证实了 GRPO 在提高语义准确性方面的有效性。

对于噪声鲁棒性测试,我们使用噪声话语作为参考音频。 噪声对所有模型的 SIM 影响微乎其微,同时导致 F5 和 F5-P 的 WER 增加。 同时,F5-R 显示出显著改进的噪声鲁棒性。 我们发现 F5-R 在噪声条件下也保持了优越的节奏性能。 噪声鲁棒性测试的音频样本可在 https://frontierlabs.github.io/F5R 获取。

表2: 使用我们内部数据集训练的不同方法的零样本语音克隆客观指标比较。

为了证明所提出方法的泛化能力,我们在其他数据集上进行了并行实验。 对于预训练阶段,我们使用了一个包含 10,000 小时语料库的内部普通话数据集,主要来自广播和有声读物。 我们对数据集进行了预备的基于质量的过滤。 此外,随机选择了一个 100 小时的子集用于 GRPO 训练。 使用内部数据集的客观指标比较如表 2 所示。 与F5相比,F5-R在通用测试集上的字错误率(WER)相对降低了18.4%,语音相似度(SIM)相对提高了3.1%。 在困难测试集上,F5-R的WER相对降低了8.1%,SIM相对提高了1.1%。 在噪声测试集上,F5-R的WER相对降低了26.1%,SIM相对提高了2.2%。 总体结果与在WenetSpeech4TTS Basic上获得的结果一致,表明GRPO持续提高了不同数据集上的模型性能。

总体而言,F5和F5-P的性能大体相当。 正如预期,以WER和SIM作为奖励的GRPO使模型在语义准确性和说话人相似度方面均取得了提升。 在说话人相关奖励组件的指导下,该模型通过上下文学习展示了增强的克隆目标说话人特征的能力。 在困难测试集上,所提出的模型在WER性能方面表现出更明显的相对优势。 我们假设这种改进源于WER相关的奖励组件,该组件有效地增强了模型的语义保持能力。 然而,所有三个模型在困难测试集上都表现出性能下降,这表明文本复杂性的增加通常会降低模型的稳定性。 这一观察结果可以作为未来优化工作的重点。

4、结论

在本文中,我们提出了F5R-TTS,它将GRPO方法引入基于流匹配的NAR TTS系统。 通过将基于流匹配模型的输出转换为概率表示,GRPO可以集成到训练流程中。 实验结果表明,与基线系统相比,所提出的方法实现了更高的SIM和更低的WER,这表明具有适当奖励函数的GRPO对语义准确性和说话人相似性都有积极的贡献。

我们下一步将投资于以下方向的研究。

  • 强化学习方法研究: 我们计划探索将额外的强化学习方法(例如,PPO,DDPO)集成到NAR TTS系统中。
  • 奖励函数优化: 为了进一步增强模型在挑战性场景中的稳定性,我们将继续研究优化的奖励函数设计。
  • 数据探索: 为了更好地理解模型在大数据集上的性能,我们将利用更多训练数据进行进一步的实验。

参考文献 

参见原文

相关文章:

【TTS】基于GRPO的流匹配文本到语音改进:F5R-TTS

论文地址:https://arxiv.org/abs/2504.02407v3 摘要 我们提出了F5R-TTS,这是一种新颖的文本到语音(TTS)系统,它将群体相对策略优化(GRPO)集成到基于流匹配的架构中。 通过将流匹配TTS的确定性输出重新表述为概率高斯分布,我们的方…...

动态规划-152.乘积最大子数组-力扣(LeetCode)

一、题目解析 根据示例nums数组中存在负数,下面分析时需注意 二、算法原理 1、状态表示 此时f[i]表示:以i位置为结尾的所有子数组中的最大乘积,但是由于nums中存在负数,所以还需要g[i]表示:以i位置为结尾的所有子数组…...

1-1 初探Dart编程语言

Dart 是 Google 最初开发的一种开源编程语言,适用于客户端与服务端开发。它配套提供 Dart SDK,其中包含 Dart 编译器、Dart 虚拟机(Dart VM)以及一个名为 dart2js 的工具,可将 Dart 脚本转换为 JavaScript,…...

搭建最新版开源监控平台SigNoz踩的坑

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权并注明出处。感谢您喜爱本文,请文明转载,谢谢。 一、前言 SigNoz 是一款开源应用程序性能监控工具,在往期相关文章(文末有链接)中…...

Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南 免费内网穿透家用服务器

Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南 本文档总结了服务器配置相关内容,包括 Ubuntu 服务器配置、硬盘扩容、静态 IP 设置以及 Cloudflare Tunnel 的部署步骤。 目录 硬盘分区与扩容设置静态 IPCloudflare Tunnel 部署SSH 通过 Cloudflare Tunnel常见…...

无人机多人协同控制技术解析

一、运行方式 无人机多人点对点控制通常采用以下两种模式: 1. 主从控制模式 指定一个主控用户拥有最高优先级,负责飞行路径规划、紧急操作等关键指令;其他用户作为观察者,仅能查看实时画面或提交辅助指令,需经主…...

【东枫科技】KrakenSDR 测向快速入门指南

本快速入门指南旨在帮助您使用运行在 Raspberry Pi 4/5 或 Orange Pi 5B (OPI5B)(带 WiFi 型号)上的 KrakenSDR 尽快连接到测向应用程序。不过,请务必阅读本手册的其余部分,以了解无线电测向的工作原理。 你需要什么 本指南假设…...

使用LangChain与多模态模型实现图像中的文字和表格提取(PDF可转图片)

引言 在实际工程应用中,经常需要处理含有工程检验标准、施工图纸等复杂内容的PDF文档。这些文档往往包含大量水印、背景图层或无关信息,直接使用OCR识别容易引入噪声,影响后续的信息处理与分析。 为了解决这一问题,我尝试通过网页版Qwen进行测试,发现其对图像中的文字和…...

【Redis】hash

Hash 哈希 几乎所有的主流编程语言都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数组、映射等。在 Redis 中,哈希类型指值本身又是一个键值对结构,形如 key “key”, value {{field1, value1}, …{field…...

基于Vite的前端自动化部署方案

👨 作者简介:大家好,我是Taro,全栈领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、主流解决方案二、了解SCP概念三、自动化部署…...

antDesignVue中a-upload上传组件的使用

工作中需要使用上传组件,记录一下a-upload部分属性用法 1.showUploadList属性使用 使用:showUploadList"{ showRemoveIcon: true ,showDownloadIcon: true }"属性可控制右侧下载,删除图标 2.如何实现回显功能 使用:defaultFileList"fil…...

龙舟竞渡与芯片制造的共通逻辑:华芯邦的文化破局之道

端午节承载着中华民族数千年的精神密码,龙舟最初是古人沟通天地、祈求风调雨顺的仪式载体。战国时期,屈原投江的悲壮故事为端午注入了家国情怀,龙舟竞渡从此兼具纪念英雄与祈福避疫的双重意义。这种文化内核,与深圳市华芯邦“以科…...

机房网络设备操作安全管理制度

该制度围绕机房网络设备操作安全,规定账号实行系统管理员、操作管理员、一般用户三级分级管理,遵循最小授权和权限分割原则,账号需实名制、禁止共享及转借,密码设置需至少 8 位、3 种字符组合且每 3 个月修改一次;高危指令执行需上级审批、双人核查,远程登录需限制权限、…...

CentOS中安装Docker Compose

在CentOS中安装Docker Compose的步骤如下: 步骤 1:确保Docker已安装 Docker Compose依赖Docker环境,请先安装Docker: # 添加Docker官方仓库 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://downlo…...

Linux Kernel动态调试:运行时调试的利器

前言 之前我们在 Linux Kernel调试:强大的printk(二) Linux Kernel调试:强大的printk(三) 文章中介绍过pr_debug和dev_dbg,如下是dev_dbg的定义: #if defined(CONFIG_DYNAMIC_DEBUG) || \(defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_M…...

Milvus分区-分片-段结构详解与最佳实践

导读:在构建大规模向量数据库应用时,数据组织架构的设计往往决定了系统的性能上限。Milvus作为主流向量数据库,其独特的三层架构设计——分区、分片、段,为海量向量数据的高效存储和检索提供了坚实基础。 本文通过图书馆管理系统的…...

5月课程精彩回顾 | 2025高通边缘智能创新应用大赛系列公开课

当边缘计算与人工智能的碰撞掀起技术革命浪潮,如何抢占创新先机?2025高通边缘智能创新应用大赛以行业顶尖资源赋能开发者,在初赛阶段重磅打造系列公开课。 5月13日至29日,大赛主办方高通技术公司携手承办方阿加犀,以及…...

设计模式25——中介者模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 中介者模式(Mediat…...

阿里云配置安全组策略开放端口

目录 1. 测试端口是否开放 1.1 测试程序 1.2 测试工具 2. 阿里云安全组开放端口 3. 测试开放之后是否能访问 1. 测试端口是否开放 1.1 测试程序 Linux: This repository is specifically designed to store Linux code - Gitee.comhttps://gitee.com/Axurea/linux/tree/…...

uniapp 搭配uviwe u-picker 实现地区联栋

原始数据: ["id": 2,"createTime": null,"updateTime": null,"citycode": null,"adcode": "410000","cityName": "河南省","level": "province","cent…...

win10电脑时间同步失败的解决方法

win10电脑时间同步失败 问题如下: 解决方法如下: 搜索里搜索:控制面板,然后选择时钟和区域 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d734b28553514f6699d559d4218e5e99.png 此处输入:ntp.aliyun.com 然后时间就同步完成了~ 可以…...

每日c/c++题 备战蓝桥杯(Cantor 表)

Cantor 表的探究与实现 在数学中,有理数的可枚举性是一个令人惊叹的结论。今天,就让我们一起深入探讨这个经典问题,并分享一段精心编写的代码,揭开这一数学奥秘的神秘面纱。 问题背景 在 19 世纪末,伟大的数学家康托…...

代码随想录打卡|Day53 图论(Floyd 算法精讲 、A * 算法精讲 (A star算法)、最短路算法总结篇、图论总结 )

图论part11 Floyd 算法精讲 代码随想录链接 题目链接 代码 三维DP数组 import java.util.Scanner;public class Main {// 定义最大距离值,避免使用Integer.MAX_VALUE防止加法溢出public static final int INF 100000000; // 10^8足够大且不会溢出public static…...

yum安装nginx后无法通过服务方式启动

背景 在linux系统下,通过yum方式安装nginx后 通过nginx命令 nginx 可以启动nginx 但是作为测试或者生产服务器,我们需要配置开机自启动,这时候需要用服务方式启动 yum安装后的nginx 已经默认生成了服务启动方式的 nginx.service文件 按…...

数据基座觉醒!大数据+AI如何重构企业智能决策金字塔(下)

1. 数据架构的量子跃迁 1.1 从线性堆叠到立体网络 传统六层架构正在经历基因重组。某智能家居企业将数据流转路径重构为三维拓扑网络后,新品研发周期从18个月压缩至9个月。这个改造的核心在于打破数据层间的物理隔离,让原始数据流能直接触达决策中枢。…...

在线博客系统【测试报告】

🕒 一. 项目背景 由于纸质笔记容易丢失,携带不变,为了方便自己学习的过程中记录笔记,特开发了这个博客系统。这个系统后端采用 SpringBoot MyBatis SpringMVC ;前端使用Html CSS JS;数据库使用的是Mysq…...

Void:免费且隐私友好的 AI 编码利器,挑战 Cursor 地位?

开发者圈儿里最近有点小激动,大家都在议论一个叫Void的开源AI代码编辑器。这家伙在GitHub上人气飙涨,短时间内就斩获了超过22.1k的星标,简直成了科技圈的新宠。它被誉为“黑马”,不仅因为它继承了大家都很熟悉的Visual Studio Cod…...

Elasticsearch的写入流程介绍

Elasticsearch 的写入流程是一个涉及 分布式协调、分片路由、数据同步和副本更新 的复杂过程,其设计目标是确保数据一致性、可靠性和高性能。以下是写入流程的详细解析: 一、写入流程总览 二、详细步骤解析 1. 客户端请求路由 请求入口:客户端(如 Java 客户端、REST API)…...

【PCB工艺】PCB设计中的基本概念

此文结合实例讲解PCB的设计流程和一些基本概念。 🧱 PCB 是什么? PCB(Printed Circuit Board)(即印制线路板) 是电子元器件的载体,是没有焊接任何器件的“裸板”。 PCB只是板子,没有焊接元件,而PCBA可以理解为焊接好元件的完成板子。 简单点说,PCB 只包含:铜线、电源…...

WPF事件处理器+x名称空间

目录 ​编辑 一、事件处理器知识点 1. XAML中的事件绑定 2. C#中的事件处理方法 3. 方法签名解释 4. 命名规范 工作流程 二、导入引用名称空间 三、x名称空间及其常用元素 (1)x名称空间的由来和作用 (2)x名称空间里都有…...