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

李宏毅NLP-9-语音转换

语音转换

在这里插入图片描述
语音转换(Voice Conversion, VC)的核心定义与本质,可从 输入输出、保留与改变的维度 解析:

1. 语音转换的定义:“换声不换内容”

  • 输入:原始语音信号(左侧波形),包含 内容(说什么)声学属性(怎么说,如说话人、情感、声纹等)
  • VC 系统:作为中间模块,修改语音的声学属性,但 保留内容
  • 输出:转换后的语音信号(右侧波形),内容与输入一致,但声学属性改变。

2. 保留的核心:Content(内容)

“Content” 指 语言层面的信息,包括:

  • 语义:所说的字词、句子(如 “你好” 还是 “再见”)。
  • 时序结构:语音的时间模式(如图中 TT′ 对应,说明 “每个音的出现顺序、时长比例” 保留,比如 “苹果” 的 “苹” 和 “果” 的时长关系不变)。

3. 改变的维度:“Many different aspects”(多种声学属性)

VC 可修改的声学属性包括(但不限于):

  • 说话人身份:将男声转女声,或模仿特定人的声纹(图中 dd′ 暗示声纹变化)。
  • 情感:从平静转为愤怒、开心等。
  • 口音:从方言转成标准音。
  • 韵律: pitch(音调)、能量(响度)、语速(若设计为保留时序,则语速可能不变,此处更侧重声纹等)。

在这里插入图片描述

1. 说话人的核心影响:“同一内容,不同效果”
同一文本(如 “你好”),由不同人说出,会因 声纹、情感、口音 等差异,产生不同的听感效果(如权威感、亲切感、幽默感)。

2. 技术应用:从 “Deep Fake” 到 “个性化 TTS”

(1)Deep Fake(深度伪造)

  • **“Deep Fake: Fool humans / speaker verification system”**利用语音转换 / 合成技术,模仿特定人的声纹,达到 欺骗人类听觉绕过说话人验证系统 的目的(如伪造名人语音、诈骗电话)。

(2)个性化 TTS(文本转语音)

  • “One simple way to achieve personalized TTS”:语音转换是实现 个性化语音合成 的基础:通过学习目标说话人的声纹,让 TTS 输出符合用户音色偏好的语音(如定制 “像自己声音” 的导航播报)。

(3)唱歌场景(Singing)

延伸应用:语音转换可用于 歌声转换(如将普通人的歌声转为专业歌手的音色,或修改演唱风格),参考文献提供了 “无监督歌声转换” 的技术实现思路。

3. 文献支撑:技术落地的路径

  • [Nachmani et al., INTERSPEECH’19]
    无监督歌声转换(Unsupervised Singing Voice Conversion),解决 “无需配对数据即可转换音色” 的难题。
  • [Deng et al., ICASSP’20]
    Pitch-Net 相关工作,聚焦 基频(Pitch)控制,让语音转换更精细(如调整唱歌的音高)。

在这里插入图片描述
说话风格转换(Speaking Style Conversion)”,核心是 “修改语音的风格属性,保留内容”,以下分类解析:

1. 按风格类型分类

(1)情感转换(Emotion)

  • 任务:将语音的情感从一种转为另一种(如平静→愤怒、开心→悲伤)。
  • 文献:[Gao et al., INTERSPEECH’19] → 研究情感解耦与重建,让语音 “换情绪不换内容”。

(2)Lombard 效应转换(Normal-to-Lombard)

  • 背景:Lombard 效应指人在嘈杂环境中会不自觉提高音量、改变韵律(更清晰但更费力)。
  • 任务:将 “正常语音” 转为 “Lombard 风格”(或反向),模拟嘈杂环境下的说话方式。
  • 文献:[Seshadri et al., ICASSP’19] → 解决 “如何学习 Lombard 风格的韵律特征并迁移”。

(3)耳语转正常(Whisper-to-Normal

  • 任务:将 “耳语语音”(轻、含糊)转为 “正常语音”(清晰、响亮),修复语音质量。
  • 文献:[Patel et al., SSW’19] → 研究耳语的声学特征,重建正常发音的韵律和清晰度。

(4)歌手发声技巧转换(Singers vocal technique conversion)

  • 任务:模仿 / 转换歌手的演唱技巧(如颤音、气声、高音风格),让普通歌声具备专业表现力。
  • 文献:[Luo et al., ICASSP’20] → 聚焦声乐技巧的解耦(如音高控制、共鸣腔模拟)。

2. 技术实现:CycleGAN 等生成模型

“Normal ↔ Lombard” 的音频链接指向 CycleGAN 相关工作:

  • CycleGAN:一种无监督生成对抗网络,擅长 “跨域转换”(如语音风格的域:正常 vs Lombard)。
  • 价值:无需配对数据(如同一内容的正常 / Lombard 语音),即可学习风格转换,降低数据收集成本。

3. 核心逻辑:风格解耦与重建

所有任务的本质是 “解耦语音的‘内容’和‘风格’,修改风格后重建语音”

  • 内容:字词、时序(必须保留)。
  • 风格:情感、Lombard 效应、耳语、演唱技巧(需要转换的属性)。

在这里插入图片描述

提升语音可懂度(Intelligibility),从 医疗场景口音转换 两个方向展开,核心是 “让语音更清晰、更易被理解”,解析如下:

1. 医疗场景:改善患者语音可懂度

  • 针对 喉部手术患者(如切除部分发音器官,articulators),其语音因生理结构改变,往往含糊不清、难以理解。

  • 通过语音转换 / 增强技术,修复 / 重建患者的语音信号,提升可懂度(让他人能听清、理解患者说的内容)。

  • [Biadsy et al., INTERSPEECH’19]、[Chen et al., INTERSPEECH’19] → 研究如何通过声学模型、生成网络,补偿患者发音器官的缺失,重建清晰语音。

2. 口音转换(Accent Conversion)

  • 非母语者的口音(如中国人说英语的口音),转换为 母语者的口音 / 发音模式(如英语母语者的标准发音)。

  • 语言学习:帮助学习者模仿母语者的发音,提升口语水平(听到自己语音被转换为标准口音,辅助纠正发音)。

  • 跨文化交流:减少口音导致的理解障碍,让语音更易被母语者接受。

  • [Zhao et al., INTERSPEECH’19] → 研究口音的声学特征解耦(如声调、韵律、发音位置),实现口音转换。

3. 核心逻辑:“可懂度” 的本质

无论医疗场景还是口音转换,目标都是 “降低语音的‘理解难度’”

  • 医疗场景:修复生理缺陷导致的声学信号失真。
  • 口音转换:对齐非母语者与母语者的发音模式,减少认知差异。

在这里插入图片描述
语音转换(VC)在 “数据增强(Data Augmentation)” 中的应用,核心是 “用 VC 生成更多训练数据,提升模型鲁棒性”。利用 语音转换技术,将 “已有数据” 转换为 “新的、带不同属性的数据”,无需额外采集真实样本。
场景 1:跨说话人数据增强

  • 原始数据:男性说话人的语音通过 VC转换为女性说话人的语音。训练数据量 翻倍(x2),增加 “说话人多样性”。

  • 解决 “说话人数据稀缺” 问题:若只有少量女性语音数据,可通过 VC 从男性数据转换生成,让模型学习更多说话人特征。

  • [Keskin et al., ICML workshop’19] → 验证跨说话人 VC 增强对说话人识别、语音合成模型的提升。

场景 2:跨噪声环境数据增强

  • 需要 “带噪声的语音数据”(Noisy Speech)训练鲁棒模型,但真实噪声数据难收集。尝试:用 VC 技术,模拟噪声环境的语音转换(如给干净语音添加噪声特征,或反向转换)。
  • 生成 “噪声 - 干净” 语音对,用于训练 去噪模型、鲁棒 ASR(自动语音识别),提升模型在真实嘈杂环境的表现。

  • [Mimura et al., ASRU 2017] → 探索用 VC 生成噪声数据,增强 ASR 模型的抗噪能力。


实现

在这里插入图片描述
语音处理中的两个关键环节,即语音转换与声码器的工作流程:

  • 语音转换流程:在实际应用中,输入是语音波形及其对应的长度为 T 的帧序列,经过转换后输出长度为 T’(通常 T’等于 T)的语音波形和帧序列,所以不需要使用 Seq2seq 模型。
  • 声码器流程:声码器接收帧序列作为输入,它有规则方法(如 Griffin - Lim 算法)和深度学习方法(如 WaveNet),经过处理后输出语音波形。

语音转换的关键是 “属性变换与时序对齐”,无需复杂的 Seq2seq 模型;而声码器作为 “特征→波形” 的通用模块,支撑从 VC 到 TTS 的多任务需求。

“对称数据(Parallel Data)” 与 “非对称数据(Unparallel Data)” 的区别及应对策略,解析如下:

数据分类:对称 vs 非对称

对称数据(Parallel Data)

  • 定义:输入输出 内容完全相同,仅风格(如说话人、情感、口音)不同的语音对。
    • 示例:同一句话 “How are you?”,分别由不同说话人(或不同风格)录制的两段语音。
  • 价值:直接提供 “内容不变,风格变化” 的配对,便于模型学习 “风格迁移” 的映射。

非对称数据(Unparallel Data)

  • 定义:输入输出内容不同,仅风格(如说话人)存在关联的语音对。
    • 示例:中文 “天氣真好”(说话人 A)与英文 “How are you?”(说话人 B),内容无关,但需迁移说话人 A 的风格到内容 B。
  • 挑战:模型需 “解耦内容和风格”,再重组 “目标内容 + 源风格”,技术难度更高。

解决数据稀缺的策略

针对 “训练数据不足(Lack of training data)”,图中给出两种方案:

模型预训练(Model Pre-training)

  • 思路:用大规模通用数据预训练模型,学习 “内容 - 风格解耦” 的通用能力,再用少量目标数据微调。
  • 文献:[Huang et al., arXiv’19] → 探索预训练在语音风格迁移中的应用。

合成数据(Synthesized data)

  • 思路:通过 语音转换(VC)等技术,人工合成对称数据(如用已有语音生成风格不同的配对)。
  • 文献:[Biadsy et al., INTERSPEECH’19] → 验证合成数据对风格迁移模型的提升。

技术本质:“音频风格迁移” 的跨域借鉴

  • 图像风格迁移(如将照片转为梵高画风)的核心是 “内容 - 风格解耦”(用 VAE、GAN 等模型分离内容和风格特征)。
  • 语音风格迁移借鉴此思路,尝试用类似方法(如 CycleGAN、VAE)分离语音的 “内容特征”(如文本、语义)和 “风格特征”(如说话人、情感),再重组生成目标语音。

在这里插入图片描述
非对称数据下,有两种核心策略:

特征解耦(Feature Disentangle)

  • 流程:
    • 内容编码器(Content Encoder) 提取 “语音内容特征”(如音素、语义,对应图中 “phonetic information”)。
    • 说话人编码器(Speaker Encoder) 提取 “风格特征”(如声纹、情感,对应图中 “speaker information”)。
    • 重组时,将 “目标内容特征” 与 “源风格特征” 结合,生成新语音。
  • 本质:通过编码器 “解耦” 内容和风格,让模型学习 “内容与风格独立控制”,支持跨内容的风格迁移(如用说话人 A 的风格说内容 B)。

直接变换(Direct Transformation)

  • 思路:不严格分离内容和风格,直接学习 “源语音→目标风格语音” 的映射(如用 GAN 直接生成目标风格,无需显式解耦)。
  • 挑战:易受内容干扰,难以灵活控制风格(如无法单独替换说话人而保留内容)。

特征解耦的核心价值是处理非对称数据的 关键技术

  • 让模型突破 “内容必须相同” 的限制,实现 “任意内容 + 任意风格” 的组合(如用特朗普的风格说 “天氣真好”)。
  • 支撑更复杂的应用(如个性化 TTS、跨语言风格迁移),是现代语音风格转换的主流方向。
    在这里插入图片描述
    在这里插入图片描述
    基于 “内容 - 说话人解耦” 的语音风格迁移模型流程,核心是分离语音的 “内容信息” 和 “说话人风格信息”,再重组生成目标语音,分步解析如下:

模块拆解:编码器 → 重组 → 解码器

(1)Content Encoder(内容编码器)

  • 输入:源语音(男性说 “Do you want to study PhD?” ,绿色波形)。
  • 功能:提取 内容特征(如语义、音素序列,绿色向量),仅保留 “说什么” 的信息,剥离说话人风格。

(2)Speaker Encoder(说话人编码器)

  • 输入:目标风格语音(女性说 “Good bye” ,橙色波形)。
  • 功能:提取 说话人风格特征(如声纹、情感,橙色向量),仅保留 “怎么说” 的信息,剥离内容。

(3)特征重组

  • 操作:将 “源内容特征”(绿色)与 “目标风格特征”(橙色)拼接 / 融合,得到新的特征向量(绿色 + 橙色)。
  • 本质:实现 “用目标风格说源内容”(即用女性风格说 “Do you want to study PhD?” )。

(4)Decoder(解码器)

  • 输入:重组后的特征向量。
  • 功能:将特征向量转换为 语音波形(女性说 “Do you want to study PhD?” )。
    在这里插入图片描述
    利用说话人信息重建语音” 的模型架构**,核心是 “用独热编码(One-hot)显式注入说话人身份”,分步拆解如下:

前提条件
训练时,每条语音的说话人标签已知(如 Speaker B 的语音标注为 “Speaker B”),可利用这些标签显式控制说话人信息。

模块流程

(1)输入:Speaker B 的语音(input audio)包含 内容信息(说什么)和 说话人信息(谁来说)。

(2)**Content Encoder(内容编码器)**功能:提取 纯内容特征(绿色向量),剥离说话人信息(只保留 “说什么”)。

(3)说话人信息注入:One-hot 向量

  • 设计:为每个说话人分配 独热编码(如 Speaker A 是 [1, 0],Speaker B 是 [0, 1])。
  • 操作:此处因输入是 Speaker B,故注入 [0, 1](灰色模块)。

(4)Decoder(解码器)

  • 输入:内容特征 + 说话人独热编码。
  • 功能:重建语音,强制输出 Speaker B 的风格(因注入了 Speaker B 的独热编码)。

(5)输出:reconstructed audio(重建的 Speaker B 语音)

  • 目标:让重建语音 保留内容(与输入一致),且 说话人身份严格匹配注入的标签(Speaker B)。

核心设计:“显式控制说话人”

  • 独热编码的作用:用最简单的 “0-1 向量” 显式标记说话人身份,让解码器 “知道” 该用哪个说话人的风格重建语音。
  • 对比隐式解耦:不同于之前 “用 Speaker Encoder 隐式提取风格”,这里通过 已知标签 + 独热编码,直接控制说话人身份,更简单直接(但依赖说话人标签)。
    在这里插入图片描述

局限

  • 依赖标签:训练数据必须有说话人标签,否则无法生成独热编码。
  • 扩展性差:新说话人需重新训练(独热编码维度随说话人数量增加),不适用于开放域场景(如任意新用户)。
    这种架构通过 独热编码显式注入说话人信息,实现了 “内容与说话人身份的严格绑定重建”,在封闭域(已知说话人集合)任务中简单有效,但因依赖标签和扩展性差,更适合作为 “基准方法” 对比隐式解耦模型。

在这里插入图片描述
从输入音频开始,经过内容编码器提取内容特征,说话人编码器提取说话人特征,最后由解码器结合二者重建音频。

在这里插入图片描述
基于对抗训练(Adversarial Training)的语音风格迁移模型,核心是让生成的语音 “欺骗” 说话人分类器,从而学习到更纯粹的 “内容特征” 和 “风格特征”,分步解析如下:

模块角色:生成器 vs 判别器

(1)生成器(Generator)

Content Encoder + Speaker Encoder + Decoder 组成:

  • Content Encoder:提取语音的 内容特征(如 “说什么”:“How are you?” )。
  • Speaker Encoder:提取目标说话人的 风格特征(如 “谁来说”:图中女性说话人)。
  • Decoder:结合内容和风格特征,重建语音(尝试让重建语音的风格接近目标说话人)。

(2)判别器(Discriminator)

Speaker Classifier

  • 输入:重建后的语音特征(或重建语音)。
  • 任务:判断 “重建语音的说话人身份”(如是否是目标女性说话人)。

对抗训练逻辑:“欺骗与反欺骗”

  1. 生成器目标“Learn to fool the speaker classifier”
    → 让重建语音的风格 足够逼真,使判别器无法正确分类说话人(如让判别器误以为重建语音来自目标说话人)。
  2. 判别器目标
    准确分类说话人身份,区分真实语音和生成语音的风格差异
  3. 迭代优化
    生成器与判别器 交替训练
    • 生成器努力 “欺骗” 判别器 → 提升风格迁移的逼真度。
    • 判别器努力 “识破” 生成器 → 强化对风格差异的识别能力。

核心创新:“风格纯净度” 的提升

通过对抗训练,模型被迫学习 更精准的 “内容 - 风格解耦”

  • 若生成器的风格迁移不彻底(如残留源说话人特征),判别器会识破 → 生成器需进一步优化,剥离源风格。
  • 最终,内容编码器更专注于 “内容提取”(剥离风格干扰),说话人编码器更专注于 “风格提取”(纯净度更高)。

在这里插入图片描述
通过 “实例归一化(Instance Normalization, IN)” 优化网络架构的语音风格迁移模型,核心是在内容编码器中去除说话人信息,解析如下:

核心模块与流程

(1)输入:说话人 A 的语音(“How are you?” ,绿色波形)包含 内容信息(“How are you?” )和 说话人信息(说话人 A 的声纹、风格)。

(2)Content Encoder + 实例归一化(IN)

  • Content Encoder:提取语音的特征表示。
  • IN 的作用“remove speaker information”: 通过实例归一化,剥离内容特征中的说话人信息,只保留 “纯内容”(如语义、音素序列)。

(3)Speaker Encoder:提取 目标说话人的风格信息(如说话人 B 的声纹、情感,黄色向量)。

(4)Decoder

  • 输入:纯内容特征(绿色,已去说话人信息) + 目标风格特征(黄色)。
  • 功能:重建语音,用目标风格(说话人 B)说源内容(“How are you?” )

(5)输出:重建的语音(绿色波形,说话人 B 的风格)

在这里插入图片描述
内容编码器(Content Encoder)中的 “实例归一化(Instance Normalization, IN)” 操作,核心是 “对每个通道独立归一化,去除说话人信息”,分步拆解如下:

归一化的目标:“零均值、单位方差”

对每个通道(特征维度)的特征,进行标准化处理,让其均值为 0,方差为 1。

实例归一化的流程

(1)输入特征

内容编码器处理后的特征(绿色模块输出),每个通道的特征分布可能因 “说话人信息” 而不同(如不同说话人的特征均值、方差差异大)。

(2)逐通道归一化

  • 对每个通道(图中蓝色→绿色的垂直模块),计算该通道的 均值(mean)方差(variance)
  • 用公式标准化:xi=(xi−μi)/σix_i=(x_i−μ_i)/σ_ixi=(xiμi)/σi

(3)输出特征

归一化后,每个通道的特征分布被 “拉平”(零均值、单位方差),消除了说话人带来的特征分布差异(如说话人 A 的特征均值高,说话人 B 的均值低,归一化后统一)。

实例归一化的作用

  • 去除说话人信息:说话人带来的特征分布差异(均值、方差)被标准化,内容编码器输出的特征更 “纯净”,只保留 “内容信息”(如语义、音素)。
  • 提升模型鲁棒性:统一特征分布,让模型更关注 “内容差异” 而非 “说话人差异”,提升风格迁移的稳定性(如不同说话人的同一句话,归一化后特征更相似)。

与其他归一化的区别

  • 批量归一化(Batch Norm):对批量内的样本归一化,受 batch 大小影响。
  • 实例归一化(Instance Norm):对单个样本的每个通道归一化,更适合 “单样本风格迁移”(如语音转换只需处理单个 utterance)。

在这里插入图片描述

结合实例归一化(IN)和自适应实例归一化(AdaIN)的语音风格迁移模型,核心是 “先去风格,再注入风格”,分步拆解如下:

模块功能与流程

(1)Content Encoder + IN

  • 输入:说话人 A 的语音(“How are you?” ,绿色波形)。
  • 操作:
    • Content Encoder 提取特征。
    • IN(实例归一化)“remove speaker information”
      → 剥离特征中的说话人 A 信息,得到 纯内容特征(绿色向量,仅保留 “说什么”)。

(2)Speaker Encoder

  • 输入:目标说话人 B 的语音(图中隐含,通过 Speaker Encoder 提取)。
  • 操作:提取 说话人 B 的风格特征(黄色向量,保留 “怎么说”)。

(3)Decoder + AdaIN

  • 输入:纯内容特征(绿色) + 说话人 B 的风格特征(黄色)。
  • 操作:
    • AdaIN(自适应实例归一化)“only influence speaker information”
      → 用说话人 B 的风格特征,调整内容特征的分布(如均值、方差适配说话人 B),但不改变内容。
    • Decoder:将调整后的特征转换为语音波形(绿色,说话人 B 的风格说 “How are you?” )。

IN 与 AdaIN 的分工

模块作用核心逻辑
IN去除源说话人信息标准化特征分布,剥离 “怎么说” 的干扰
AdaIN注入目标说话人信息用目标风格的均值 / 方差调整内容特征

技术创新:“精准风格控制”

  • 先 “去” 后 “加”:通过 IN 彻底去除源风格,再用 AdaIN 精准注入目标风格,避免源风格残留。
  • 自适应调整:AdaIN 依据目标说话人特征动态调整内容特征的分布,让风格迁移更自然(如适配目标说话人的音高、韵律)。
    在这里插入图片描述
    自适应实例归一化(AdaIN)的数学与流程实现,核心是 “用说话人编码器的输出控制内容特征的分布”,分步解析如下:

AdaIN 的核心公式

zi′=γ⊙zi+βz_i^′=γ⊙z_i+βzi=γzi+β

  • 符号含义:
    • ziz_izi:内容编码器输出的第 iii 个通道的特征。
    • γ,βγ,βγ,β:说话人编码器输出的 缩放因子偏移因子
    • ⊙:逐元素相乘(缩放操作)。
  • 作用:用γγγβββ 调整 ziz_izi 的分布,注入目标说话人风格(如均值、方差适配目标说话人)。

流程拆解:从说话人特征到 AdaIN

(1)说话人编码器输出(γ,β)

  • 输入:目标说话人的语音(隐含)。
  • 输出:两个向量 γ(缩放因子)和 β(偏移因子),编码目标说话人的风格信息(如声纹、韵律)。

(2)内容特征预处理(IN)

  • 操作:对内容编码器输出的特征(蓝色模块),先进行 实例归一化(IN),标准化每个通道的均值和方差(消除源说话人干扰)。

(3)AdaIN:缩放与偏移

  • 对每个通道的归一化后特征 ziz_izi ,用 γ 缩放、β 偏移,得到 zi‘z_i^‘zi
  • 数学意义:让归一化后的内容特征,适配目标说话人的分布(如目标说话人音高更高,则 γ 增大对应通道的特征值)。

(4)全局相加(Add Global)

  • 操作:将所有通道的 zi‘z_i^‘zi进行全局相加,整合跨通道的风格信息。
  • 作用:确保风格特征在全局维度上一致(如目标说话人的整体韵律特征被保留)。

(5)解码器输入

  • 处理后的特征(绿色模块)输入解码器,生成 目标风格的语音(如用目标说话人的风格说源内容)。

  • 动态适配γβ 由说话人编码器动态生成,适配不同目标说话人(每个说话人对应独特的 γ,β)。

  • 解耦与重组:先通过 IN 解耦源风格,再用 AdaIN 重组目标风格,实现 “内容不变,风格自由切换”。

AdaIN 精准控制内容特征的分布,让 “风格注入” 从 “黑盒操作” 变为 “可解释的数学变换”。这种机制是语音风格迁移、个性化 TTS 实现 “千人千声” 的核心技术,也为图像、视频风格迁移提供了通用思路。

在这里插入图片描述
右侧的散点图展示了 “未见说话人(Unseen Speaker Utterances)” 的特征分布

  • 横轴纵轴:说话人编码器输出的特征维度(降维后可视化)。
  • 颜色与聚类:不同颜色代表不同说话人,聚类区域标注 “male”(男性)和 “female”(女性)。
  • 验证解耦效果:
    • 内容编码器的特征(经 IN 处理)应 “无法区分说话人”。
    • 说话人编码器的特征应 “清晰区分说话人”(如图中男性和女性聚类明显,边界清晰)。
http://www.lryc.cn/news/583385.html

相关文章:

  • 大数据在UI前端的应用深化:用户行为模式的挖掘与预测性分析
  • Java基础--stream的使用
  • 学术绘图(各种神经网络)
  • 数据结构--堆的实现
  • 【04】MFC入门到精通——MFC 自己手动新添加对话框模板 并 创建对话框类
  • 【PDF提取内容改名】批量提取pdf多个指定区域内容到excel表格的操作步骤和方法
  • 专题:2025母婴行业洞察报告|附60+份报告PDF汇总下载
  • Context Engineering:从Prompt Engineering到上下文工程的演进
  • React、Vue、Angular的性能优化与源码解析概述
  • 深度学习 必然用到的 微积分知识
  • RAG实战之dify源码文件解析-pdf文件解析流程
  • 【Oracle报错】[INS-13001] 环境不满足最低要求。
  • 什么是幂等
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
  • 第四节 chatPDF
  • 神经网络基础及API使用详解
  • 机器学习(西瓜书) 第四章 决策树
  • 通用游戏前端架构设计思考
  • 自动化测试报告优化:jenkins+jmeter定制化HTML报告生成
  • skywalking-agent-docker镜像
  • 方差、协方差和协方差矩阵
  • Windows 10/11新系统跳过强制联网激活和注册微软账户
  • JavaScript数组键值去重方法
  • 【C++】容器适配器 + stack/queue/deque详解
  • EFK9.0.3 windows搭建
  • Ubuntu连接不上网络问题(Network is unreachable)
  • ubuntu环境下调试 RT-Thread
  • windows部署多实例filebeat监控相同路径下文件
  • 【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
  • SAP-ABAP:SAP中DELECT语句用法详解实例总结