CarelessWhisper: Turning Whisper into a Causal Streaming Model——将 Whisper 转变为因果流式模型

CarelessWhisper: Turning Whisper into a Causal Streaming Model——将 Whisper 转变为因果流式模型

这篇题为《CarelessWhisper: Turning Whisper into a Causal Streaming Model》的研究论文,提出了一种将非因果的Transformer语音识别模型(如Whisper)改造为低延迟、实时流式语音识别模型的方法。以下是其主要研究内容的概括总结:

一、研究背景与问题

  • 现状:Whisper 等先进语音识别模型在离线转录中表现出色,但由于其编码器的非因果性(需依赖未来上下文),无法直接用于低延迟实时流式转录
  • 挑战:现有流式化方法存在计算效率低、延迟高、需额外模块或多轮解码等问题。

二、核心方法

1. 因果编码器改造
  • 在 Whisper 的编码器中引入因果掩码(causal masking),使其仅依赖过去和当前语音帧,不依赖未来信息。
  • 提出分块注意力机制,支持以固定块大小(如 40、100、300 ms)逐步处理语音流。
2. 轻量级微调策略
  • 使用 LoRA(Low-Rank Adaptation) 对编码器和解码器进行微调,仅更新少量参数(低秩矩阵),保持模型大部分权重不变。
  • 弱对齐的语音-文本数据集上训练,学习语音流与token输出之间的对齐关系。
3. 流式解码机制
  • 提出稳定性检测机制:在贪婪解码和束搜索中,仅当 token 在连续块中预测一致时才输出,避免因信息不全导致错误。
  • 设计了流式贪婪解码流式束搜索解码算法,支持实时 token 生成与回溯修正。
4. 词级时间戳生成
  • 模型在训练过程中学会识别词边界,可在线生成词级时间戳,无需后处理对齐模块。

三、实验与结果

✅ 英语转录实验
  • 在 LibriSpeech 数据集上,CarelessWhisper 在多个块大小下优于 Simul-Whisper 和 Ufal-Whisper。
  • 在 300 ms 延迟下,词错误率(WER)与离线 Whisper 接近,且推理速度更快
🌍 多语言转录实验
  • 在多语言 LibriSpeech 数据集上,模型在法语、德语等语言上表现良好,但略弱于 Ufal-Whisper(后者依赖完整话语一致性)。
⚡ 效率优势
  • 由于引入 KV 缓存机制,编码器计算复杂度从 O(T3)O(T3) 降至 O(T2)O(T2),在低延迟场景中显著提升推理速度。
  • 在 A100 GPU 上,CarelessWhisper 比 Ufal-Whisper 快约 4 倍
🕒 时间戳准确性
  • 模型生成的词级时间戳在 TIMIT 数据集上表现优于 NVIDIA Canary 模型,尤其在起始与结束边界精度上更优。

四、贡献总结

  1. 首个因果化 Whisper 流式方案:无需两阶段解码或额外 CTC 头,直接改造编码器-解码器结构。
  2. 高效微调与推理:LoRA 微调参数量少,KV 缓存机制大幅降低计算开销。
  3. 支持在线时间戳:作为副产品,模型可输出高质量词级对齐信息。
  4. 开源代码与模型:发布训练和推理代码,促进流式 ASR 研究与应用。

五、局限性与未来方向

  • 需为不同块大小训练独立模型,未来可探索动态掩码或可变块大小训练。
  • 解码器 KV 缓存在流式场景中效果有限,未来可研究因果化交叉注意力以进一步提升效率。

一句话总结

本研究提出了一种基于 LoRA 微调和因果掩码 的方法,成功将 Whisper 改造为低延迟、高效率的流式语音识别模型,在保持高精度的同时显著提升实时转录速度,并支持词级时间戳输出。

这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:

项目地址在这里,如下所示:

摘要

自动语音识别(ASR)已取得显著进展,像 OpenAI Whisper 和 NVIDIA Canary 这样的模型在离线转录方面实现了最先进的性能。然而,由于其架构和训练方法的限制,这些模型并非为流式(在线或实时)转录而设计。我们提出一种方法,将 Transformer 编码器-解码器模型转变为低延迟的流式模型,该模型不关心未来的上下文。我们提出了一个分析,解释为何将编码器-解码器 Transformer 转换为低延迟流式模型并非易事。我们提出的方法通过使用低秩适应(LoRA)和弱对齐数据集对编码器和解码器进行微调,将现有的(非因果)编码器修改为因果编码器。然后,我们提出了一种更新的推理机制,该机制利用微调后的因果编码器和解码器进行贪婪和束搜索解码,并被证明是局部最优的。在低延迟块大小(小于 300 毫秒)上的实验表明,我们微调的模型在大多数情况下优于现有的非微调流式方法,同时使用更低的复杂度。此外,我们观察到我们的训练过程产生了更好的对齐,从而能够使用一种简单的方法来提取词级时间戳。我们发布我们的训练和推理代码以及微调的模型,以支持流式 ASR 的进一步研究和开发。

自动语音识别,流式 ASR,Whisper,因果掩码,低延迟

I 引言

近年来,自动语音识别(ASR)系统取得了显著进展,这在很大程度上得益于强大的神经架构的发展。自 Transformer 架构 [39] 提出以来,已提出广泛的策略使其适应 ASR 任务。这些包括仅基于 Transformer 编码器的模型 [32, 33, 12],其他采用仅 Transformer 解码器架构的模型 [37, 2],以及一些采用完整 Transformer 编码器-解码器模型的模型 [25, 29]。后一类中最著名的模型是 Whisper [29],它使用跨 100 种语言的 680,000 小时弱监督语音数据进行训练。其广泛的语言覆盖范围和抗噪鲁棒性使其成为多语言 ASR 的强大基线。

在离线设置中,Whisper 在噪声鲁棒性和多语言通用性方面提供了近乎无与伦比的性能。然而,其非因果编码器限制了其处理流式输入的能力。一些工作 [41, 23] 探索在不进行额外训练的情况下使用 Whisper,采用启发式方法来实现流式处理。例如,Simul-Whisper[41] 使用对齐头来决定何时发出一个 token,而 Ufal-Whisper[23] 则依赖于音频缓冲区和局部一致性算法 [20] 来生成实时转录。虽然两者都避免了微调,但它们的推理流程需要在每一步将输入填充到 30 秒,导致次优的计算效率。

U2-Whisper [46] 提出使用因果掩码微调 Whisper 编码器,并从头开始训练一个新的连接主义时间分类(CTC)[8] 头。在推理过程中,它执行两遍解码——首先使用 CTC 头预测 token,然后使用 Whisper 解码器对候选进行排序。WhisperFlow [42] 提出微调 Whisper 编码器以检测一个固定的静默词(该词被附加在每个块的末尾),从而使 Whisper 适应流式情况。

我们提出一种方法,将 Whisper 编码器-解码器架构转变为一个完全流式的模型,具有低延迟且不依赖于未来上下文。与先前要么避免训练、要么需要辅助头和多遍解码的方法不同,我们的方法直接调整 Whisper 的核心组件以实现因果、高效的推理。具体来说,我们将原始的非因果编码器修改为因果操作,并使用低秩适应(LoRA)[13] 在弱对齐数据集上对编码器和解码器进行微调。我们将 LoRA 层注入到编码器和解码器的注意力模块中,以使模型适应流式表示。训练使用弱对齐数据集上的交叉熵损失进行,这些数据集使用强制对齐 [24] 进行对齐。这种方法消除了对 CTC 损失或架构更改的需求。我们还引入了一种新颖的流式训练策略,避免了对所有可能的音频子段进行迭代的需要。这种轻量级的适应使得模型能够在流式场景中运行。为了支持高效的实时推理,我们引入了一种解码策略,该策略利用微调后的因果组件来执行贪婪解码和束搜索解码。我们的分析表明,所得到的输出是局部最优的,在流式 ASR 应用中提供了准确性和延迟之间的引人注目的平衡。

本文的组织结构如下。第二部分概述了相关工作,第三部分概述了问题设置,第四部分详细介绍了我们的训练和推理方法,第五部分提供了效率分析,第六部分详细介绍了训练过程,第七部分介绍了实验设置、展示并讨论了结果,第八部分总结了未来方向。

II 相关工作

多年来,已经开发了广泛的流式 ASR 方法。其中最著名的架构之一是循环神经网络传感器(RNN-T)[7],该架构已被广泛用于实现流式识别。RNN-T 模型通常包含一个长短期记忆(LSTM)网络 [11] 和一个双向循环神经网络(RNN)[34]。由于循环架构固有的因果特性,RNN-T 非常适合流式应用。

Kurata 等人 [17] 使用知识蒸馏将信息从离线教师模型转移到基于 RNN-T 的流式学生模型。Rao 等人 [30] 提出了一种预测词片(word-piece)而非单个字符的 RNN-T 架构,同时添加发音数据以提高性能。He 等人 [9] 设计了一种针对移动设备优化的 RNN-T 模型,通过应用量化和优化推理效率。

另一种方法是 Transformer Transducer [44],它用 Transformer 编码器替换了 RNN-T 的循环组件。Tripathi 等人 [36] 提出了一种能够处理在线和离线转录的 Transformer Transducer,使用了一种融合了两种类型 Transformer 编码器(一种具有因果掩码,一种没有)的混合架构。Chen 等人 [3] 应用了具有因果掩码的分块注意力,同时使用 LSTM 作为预测网络。Zhang 等人 [45] 提出了一种与 Tripathi 等人类似的架构,并对编码器的前馈层进行了轻微修改。Kumar 等人 [16] 将自监督预训练模型集成为传感器编码器,使得现有模型能够快速适应流式场景。

近期的努力也直接探索了基于 Transformer 的模型用于流式 ASR [39]。Moritz 等人 [25] 将 Transformer 编码器与 CTC 头和触发注意力 [26] 解码器相结合。Moritz 等人 [27] 提出了一种结合触发注意力 [26] 解码器的双重因果/非因果自注意力机制,产生了一个双重 ASR 模型。其他工作 [2, 37] 研究了仅解码器的 Transformer 架构,由于 Transformer 解码器的因果性质,这种架构自然适合流式范式。Shi 等人 [35] 引入了 Emformer,这是 Wu 等人 [43] 的增强记忆 Transformer 的增强版本。Wang 等人 [40] 训练了一个 Transformer 编码器,使用强制对齐 [24] 来检测词边界。Jia 等人 [15] 提出了一种 SpeechLLM 方法,将音频和文本嵌入交错输入到大型语言模型(LLM)解码器中,并在 CTC 对齐的数据集上进行训练,同时限制过去的上下文窗口。Choi 等人 [4] 微调自监督语音模型(S3M),探索不同的掩码策略以使模型适应流式处理。Tsunoo 等人 [38] 提出了一种通过知识蒸馏 [18, 10, 22] 训练的编码器-解码器 Transformer。为了增强转录质量,他们引入了块级同步束搜索与块边界检测技术相结合的方法。

尽管 Whisper 模型 [29] 并非为流式处理而设计——这是由于其在编码器-解码器框架内编码器的非因果性质——但一些研究已尝试克服这一限制。Machacek 等人 [23] 避免微调,通过使用音频缓冲区作为输入,并仅在完整话语形成后才发出转录,应用子话语之间的局部一致性 [20]。类似地,Wang 等人 [41] 也放弃了微调,通过开发一种基于 Whisper 对齐头的启发式方法,并使用截断检测模块来确定何时发出 token。虽然这些方法不需要训练,但截断检测模块必须单独训练。此外,两种方法都存在效率低下的问题,因为它们需要将每个缓冲区输入填充到模型的全上下文长度,导致不必要的计算。

Wang 等人 [42] 提出训练 Whisper 来检测每个块末尾指定的静默词,使得模型能够适当地停止解码。他们还引入了混合 CPU/GPU 流水线,将大部分解码过程卸载到空闲的 CPU 资源上。这种方法不需要为每个块将输入填充到全上下文长度。Zhou 等人 [46] 提出在 Whisper 编码器之上训练一个新的 CTC 头,该编码器使用因果掩码进行微调,以使编码器输出与流式输入兼容。在这种方法中,推理分两遍进行:CTC 头预测最可能的下一个 token,然后 Whisper 解码器对候选假设进行排序。

尽管越来越多的研究工作旨在将预训练模型(如 Whisper)适应于流式应用,但现有方法存在显著的局限性。一些方法未能实现真正的流式行为,而另一些则引入了高计算开销。此外,Zhou 等人 [46] 和 Wang 等人 [42] 提出的方法需要对模型架构进行修改或对整个模型进行微调,除了原始的 Whisper 模型外,还导致专为流式任务所需的参数数量大幅增加。

III 问题设置

尽管如此,我们建议通过实证检验这种近似,以评估我们的微调方法是否诱导了模型注意力模式中更单调或更稳定的行为。

图 3: Whisper 模型(左)和 CarelessWhisper(右)在给定真实前缀 'she had' 条件下,第三个 token 随时间变化的 token 分布。完整话语是:“she had your dark suit in greasy wash water all year.” 这些图显示了第三个 token 的概率分布,而不是预测的 token 序列。因此,只要有足够的声学证据来预测 'your',EOT 就被预测为 token。因此,token 'had' 不会在 token 'your' 之前出现。

复杂度分析

由于所提出的流式 Transformer 模型不依赖于非因果注意力,我们进行复杂度分析以估计其计算效率优势。

VI 微调过程

在本节中,我们描述微调过程。该过程在附录的图 7 中有所描述。我们为训练过程定义了两个主要目标:(1) 使编码器适应因果语音表示,(2) 教导解码器何时发出新 token。为了解决这些目标,我们将 LoRA 层 [13] 注入到编码器的自注意力层以及解码器的自注意力和交叉注意力层中。这种配置确保只需要训练 LoRA 组件,从而产生一个紧凑高效的模块,支持离线和流式转录功能。完整的微调算法在算法 5 中详述。

VII 实验

我们将我们的算法称为 CarelessWhisper,强调其在推理过程中不关心未来上下文。我们在多个任务上评估 CarelessWhisper。首先,我们关注其主要目标:流式转录,使用词错误率(WER)及其相关变体进行评估,我们将在下面详述。然后,我们使用诸如实时因子(RTF)和平均延迟等指标分析运行时性能。最后,我们评估模型生成的词级时间戳的准确性。

流式转录

我们首先描述用于评估不同流式转录模型性能的指标。

VII-A1 评估指标

为了更好地评估流式转录质量,我们采用比标准词错误率(WER)更适合流式场景的指标。

当转录流式音频时,必须在流结束时生成完整的转录,同时最小化每个词的延迟。由于 RWER 不捕捉延迟或对齐,我们引入了额外的指标。

对齐相对词错误率(ARWER) ARWER 定义为:

ARWER 更适合评估随时间推移的转录质量,因为它考虑了假设与每个点预期应被转录的真实词之间的对齐。具有较高每个词延迟的模型往往具有较高的 ARWER,这是由于删除增加所致。

词错误率(WER) 我们还报告了标准的 WER,它是在流式处理结束时生成的最终假设与完整真实转录之间计算的。

IV-A2 英语转录
IV-A3 多语言转录

对于多语言转录任务,使用块大小为 300 毫秒和初始块大小为 600 毫秒微调了一个单一的 large-v2 模型。训练数据由多语言 LibriSpeech 语料库(不包括英语部分)组成,并补充了完整的 960 小时 LibriSpeech 训练集,训练了两个周期。微调的完整细节见附录 C。

评估在多语言 LibriSpeech 数据集的法语、德语、葡萄牙语和西班牙语测试子集上进行,使用了贪婪流式解码和流式束搜索,束大小为 b=5,n=2。我们将我们模型的性能与 Simul-Whisper 和 Ufal-Whisper 进行比较,在相同的分块配置下(300 毫秒块大小,600 毫秒初始块)。

如表 II 所示,尽管我们的 LoRA 微调模型优于 Simul-Whisper,但在所有评估的语言中,其 WER 和 ARWER 都始终被 Ufal-Whisper 超越。这可能是由于微调期间多语言曝光有限——与原始 Whisper 模型不同,我们微调的版本很可能没有保留足够的语言多样性以有效地跨多种语言泛化。

图 4: ARWER 与块大小的关系,针对每种方法和 large-v2 模型。左子图显示在 LibriSpeech test-clean 上的结果。右子图显示在 LibriSpeech test-other 上的结果。

IV-A4 使用解码器自注意力 KV 缓存运行

CarelessWhisper 在某些假设下允许使用解码器自注意力 KV 缓存。为了评估 KV 缓存对转录质量的影响,我们在 LibriSpeech test-clean 集上进行了评估,使用了贪婪流式解码和束搜索流式解码,束大小 b∈{3,5,7},n=2。

如图 5 所示,在解码器自注意力中使用 KV 缓存会导致转录性能显著下降。尽管编码器输出是因果的,但交叉注意力机制似乎受益于对新到达帧的访问,可能改进了 token 预测。这与先前的发现一致,即并非所有注意力头都纯粹作为对齐头运作。

在没有 KV 缓存的情况下,贪婪解码显得过于僵化,而较大的束大小(例如 b=7)会导致性能下降——可能是由于训练数据不足导致分布泛化能力差。最佳性能是在束大小为 b=5 时实现的。此外,由于输入缓冲区可能截断单词中间,可能会发生幻觉,尽管模型已被微调以将此类事件视为停止条件。当使用 KV 缓存时,增加束大小导致性能进一步下降。这表明,一旦一个 token 被发出,假设其与新声学输入的相关性变得可以忽略不计是不合理的。此外,更大的束大小加剧了 KV 缓存带来的影响,因为模型无法纠正这种假设引入的漂移。

未来的工作可以通过引入正则化机制来减少交叉注意力中非对齐头的影响,从而解决这一局限性。或者,可以探索注意力的因果设计,以鼓励注意力和声学输入之间更强的一致性。

表 I: 跨模型、延迟和指标的性能。每个指标、每个数据集和每个延迟的最佳结果以粗体标出。为了比较,添加了非流式情况下的 Whisper 结果。

(注意:原文中表 I 和 II 是图片形式,此处仅保留标题和说明。表格内容将以其描述性文本形式呈现,不复制原始表格数据,因其为图片且格式复杂。)

表 II: 跨语言的 WER 变体,在 large-v2 模型上评估,使用块大小 300 毫秒,初始块大小 600 毫秒。最佳结果以粗体标出。

表 I 和表 II 的具体数据请参见原文图表,此处不进行文本化翻译。

运行时

我们报告流中所有帧的平均 RTF。此外,我们报告平均每帧延迟,即接收到新帧到完成其差异之间的平均处理时间。

如图 6 所示,我们的方法在 small 和 large-v2 模型大小上都始终实现了更快的推理时间。对于 large-v2 模型,我们的方法比 Ufal-Whisper 快近四倍(比较相同的束大小 b=5),比 Simul-Whisper 快近三倍。对于 small 模型,虽然性能差距较小,但我们的方法仍然优于两个基线。

值得注意的是,Simul-Whisper 仅依赖于贪婪解码,而 Ufal-Whisper 使用束搜索 b=5 并在 Fast Whisper 后端上运行。相比之下,我们的方法使用原始的 OpenAI Whisper 实现,没有任何优化,如 FlashAttention [5]。所有被比较的方法都没有实现解码器侧的 KV 缓存。尽管如此,我们的方法仍然更快——即使运行我们提出的具有各种束大小的流式束搜索。

重要的是,编码器侧 KV 缓存的好处随着块大小的减小而变得更加明显,其中编码器的计算负担增加。表 III 报告了我们的 CarelessWhisper large-v2 模型在块大小为 300 毫秒时的平均每帧延迟。实证结果与定理 4 中的复杂度分析一致。与我们的方法不同,Simul-Whisper 和 Ufal-Whisper 在每一步都重新计算完整的非因果编码器自注意力,增加了大量的计算开销。由于其局部一致性机制计算成本高,Ufal-Whisper 的延迟和 RTF 特别高。虽然 Simul-Whisper 的轻量级交叉注意力启发式方法使得对于小模型,其 RTF 值更接近我们,但非因果点积操作导致对于较大模型的延迟显著更高。

图 5: 使用我们的方法时,ARWER 与束大小的关系,使用 large-v2 模型。当束大小增加时,使用解码器 KV 缓存的模型的 WER 快速发散。

表 III: 不同模型和束大小的平均延迟。所有模型均为 large-v2 大小,使用块大小 300 毫秒。

图 6: 在 300 毫秒块大小流式情况模拟下的 RTF 比较。注意,Ufal-Whisper 在后台运行更快的 whisper,使用束大小 5。Simul-Whisper 使用贪婪解码。

词级时间戳

我们的模型在弱对齐数据上使用强制对齐算法 [24] 进行了微调,特别侧重于学习何时停止发出 token 并产生转录结束标记。这种训练策略鼓励模型在声学上更加对齐,隐式地学习改进的 token 边界预测。为了评估生成的时间戳质量,我们在 TIMIT [6] 测试数据集上进行了评估,使用了仅在英语数据上微调的 CarelessWhisper large-v2 模型,块大小为 40 毫秒和 100 毫秒。

与强制对齐器(接收转录作为输入)不同,我们的模型作为一个标准的 ASR 系统运行,在其转录过程中生成词级时间戳。我们报告了如 [14] 中定义的精确率、召回率、标准差(SD)和端点偏差(ED)指标。我们在相同测试集上将我们的模型与 NVIDIA Canary-180m-flash 和 NVIDIA Canary-1b-flash 模型进行了比较。我们选择 NVIDIA Canary 系列进行比较,因为其模型朴素地生成词级时间戳,而不依赖于后处理步骤,如动态时间规整 [31, 32],这些步骤在基于 Whisper 的方法 [29] 中常用。

使用 240 毫秒的阈值,如表 IV 所示,两个 Canary 模型都实现了更高的精确率和召回率。然而,如表 V 所示,它们在起始差异(SD)和结束差异(ED)方面表现不佳。我们的方法,特别是在使用最小块大小时,在 TIMIT 测试集上产生了更好的起始和结束边界准确性。

当将阈值从 240 毫秒降低到 80 毫秒时,如表 VI 所示,两个 Canary 模型的精确率显著下降。相比之下,我们的两个模型都保持了更高的精确率,表明与 Canary 模型相比,我们的模型具有更好的词级时间戳分辨率,尽管以转录准确性为代价。值得注意的是,Canary 模型并非为流式处理而设计,并且根据 [14] 中精确率和召回率的定义,转录准确性更好的模型自然在这些指标上更受青睐。评估排除了在前 600 毫秒(我们所有模型使用的初始块大小)内结束的单词。此外,尽管依赖于当前单词的开始与前一个单词的结束对齐的假设,我们的模型仍比 Canary 模型实现了更好的平均时间戳准确性。

VIII 结论、讨论、未来工作

我们提出了一种方法,用于将非因果 Transformer ASR 模型(如 Whisper)适应为因果变体,该变体能够以最小的性能下降和降低的每转录计算成本实现显著更快的实时转录。我们训练方法的一个额外好处是模型能够使用简单且朴素(naive)的解码策略生成词级时间戳。利用 LoRA,我们的方法支持一种双设置模型,可以根据用户需求动态切换,且内存开销可忽略不计。我们还对所提出方法的运行时复杂度进行了分析。我们方法的主要局限性是需要为每个块大小训练一个单独的模型。未来工作的一个潜在方向是在掩码方案中引入随机化。此外,该方法尚未解决与在流式场景中使用解码器 KV 缓存相关的局限性。一种可能的解决方案是掩码交叉注意力头,以强制与输入声学对齐,而不是依赖于在时间上远离 token 起源区域的稀疏性假设。

附录 A 定理证明

图 7: 微调过程示意图。上面的示例演示了一个使用块大小为 300 毫秒的编码器。使用这种方法使训练更高效,因为无需遍历流式处理中每个可能的帧。

Read more

高效代码开发助手vscode+(Copilot/Cline+Copilot(让cline调用Copilot的模型))

高效代码开发助手vscode+(Copilot/Cline+Copilot(让cline调用Copilot的模型))

一、引言 随着AI智能体的出现,越来越多方便的工具也随之产生,作为一名开发者自然不能错过这波浪潮。本篇文章带来的是如何在vscode上使用插件Copilot/Cline+Copilot,两种方式实现自动化辅助编程。 二、在vscode上使用Copilot 安装 Copilot插件 在 VSCode 中安装 Copilot插件: 1. 打开 VSCode 扩展市场 2. 搜索 “Copilot” 3. 点击安装 4. 安装完成后,使用 GitHub 账号登录授权(在Copilot插件安装完成后,通过向导完成登录授权) 5. 重启 VSCode 测试自动化编写代码功能 打开聊天框: 选择Agent模式;选择模型(想用Claude 4 sonnet可去某宝买copilot计划,价格挺便宜): 输入测试内容: 结果展示: 三、在vscode上使用Cline+Copilot Cline也是一个受到众多好评的自动化编程的插件。

By Ne0inhk

一步到位!VSCode Copilot 终极魔改:智谱 GLM-4.6 接入 + 任意大模型适配

VSCode Copilot 接入 GLM-4.6 方法 安装 vscode-zhipuai 插件后,在 VSCode 设置中添加以下配置: { "zhipuai.apiKey": "你的API_KEY", "zhipuai.model": "GLM-4" } 通过 Ctrl+Shift+P 调出命令面板,执行 ZhipuAI: Toggle Chat 即可激活对话窗口。该插件支持代码补全、对话和文档生成功能。 任意大模型适配方案 修改 VSCode 的 settings.json 实现通用 API 对接: { "ai.

By Ne0inhk
AIGC实战——CycleGAN详解与实现

AIGC实战——CycleGAN详解与实现

AIGC实战——CycleGAN详解与实现 * 0. 前言 * 1. CycleGAN 基本原理 * 2. CycleGAN 模型分析 * 3. 实现 CycleGAN * 小结 * 系列链接 0. 前言 CycleGAN 是一种用于图像转换的生成对抗网络(Generative Adversarial Network, GAN),可以在不需要配对数据的情况下将一种风格的图像转换成另一种风格,而无需为每一对输入-输出图像配对训练数据。CycleGAN 的核心思想是利用两个生成器和两个判别器,它们共同学习两个域之间的映射关系。例如,将马的图像转换成斑马的图像,或者将苹果图像转换为橙子图像。在本节中,我们将学习 CycleGAN 的基本原理,并实现该模型用于将夏天的风景图像转换成冬天的风景图像,或反之将冬天的风景图像转换为夏天的风景图像。 1. CycleGAN 基本原理 CycleGAN 是一种无需配对的图像转换技术,它可以将一个图像域中的图像转换为另一个图像域中的图像,而不需要匹配这两个域中的图像。它使用两个生成器和两个判别器,其中一个生成器将一个域中的图像

By Ne0inhk

【AIGC】即梦omnihuaman-api调用实现

即梦数字人视频生成(Streamlit Demo) 基于 火山引擎即梦(Jimeng)CV API 的数字人视频生成示例项目。 支持 图片 + 音频驱动 的数字人视频生成流程,集成了主体检测、Mask 选择、Prompt 控制、视频生成与下载等完整功能,适合 内部测试 / 技术演示 / 二次开发。 一、功能概览 ✅ 核心功能 * 🔐 AK / SK 在线填写 * 支持火山引擎 Access Key / Secret Key 在页面中直接输入 * 无需写死在代码中,便于多账号切换 * api key申请地址:https://console.volcengine.com/iam/keymanage * 🖼 图片上传(人物图像) * 支持 JPG / PNG

By Ne0inhk