Step-Audio-EditX

Step-Audio-EditX —— 全球首个基于大语言模型(LLM)的开源音频编辑模型,能够在语音的情感、说话风格和副语言特征(如语气、语速、语调等)上实现高度富有表现力且可迭代的编辑,同时具备强大的零样本文本转语音(TTS)能力

核心创新在于:模型仅依赖大间隔(large-margin)合成数据进行训练,无需使用嵌入先验或辅助模块。这种大间隔学习策略使模型能够在多种音色上实现可迭代控制与高表达力,并从根本上区别于传统聚焦于表示层面解耦的思路。实验结果表明,Step-Audio-EditX情感编辑和其他细粒度语音控制任务上均超越了 MiniMax-2.6-hd 和 Doubao-Seed-TTS-2.0

当前 TTS 的问题:由于合成语音中的情感、风格、口音和音色等属性仍然直接来源于参考音频,限制了对这些属性的独立控制,另外,对于克隆语音通常无法有效地遵循提供的风格或情感指令。

许多以往关于语音解耦的研究依赖以下方法来实现属性分离:对抗式训练、特征工程以及创新的网络结构设计。相比之下,文章提出了一种简单但稳定的数据驱动方法。具体来说,我们设计了一条数据生成流程,用于构建高质量的数据对,这些数据对在保持完全相同语言内容的同时,在情绪、说话风格、口音、副语言特征等一个或多个属性上具有明显可区分的差异。通过在这样的数据对上训练模型,能够实现有效的属性解耦,使模型能够对输入语音的属性进行编辑。此外,通过多次迭代的“编辑”步骤,目标属性的强度可以被逐步增强或减弱。除了情绪、风格和副语言特征编辑之外,该方法可以扩展到其他任务,包括语速调整、语音去噪以及静音片段裁剪等。

主要贡献:

  • Step-Audio-EditX,这是首个基于大语言模型(LLM)的开源音频模型,擅长富有表现力且可迭代的音频编辑,涵盖情绪、说话风格和副语言特征,并具备强大的 zero-shot TTS 能力。
  • 实验结果表明,仅通过大间距(large-margin)数据的后训练,即可实现对情绪和说话风格的可控调节,无需额外的呈现建模或适配器模块。
  • 使用大间距数据进行后训练不仅能够实现可迭代的控制与高度的表达能力,而且在跨说话人场景下同样有效,这标志着从传统的基于表征层的解耦方法向新的范式转变。

Architecture

Prompt Text:任务提示/prompt音频对应的文本
Target Text:带合成的音频文本

基于 Step-Audio 中的音频编辑合成模型,主要改进包括扩展了情感和语音风格的范围,增加了零样本文本转语音 (TTS) 和副语言编辑功能,并将模型参数从 130B 减少到 3B。

系统由三个主要组件组成:

  1. 双码本音频分词器:将参考音频或输入音频转换为离散的 token;
  2. 音频大语言模型:生成双码本 token 序列;
  3. 音频解码器:使用流匹配(flow matching)方法,将音频 LLM 预测的双码本 token 序列转换回音频波形。

Audio Tokenizer:采用并行语言分词器(16.7 Hz,1024 码本)和语义分词器(25 Hz,4096 码本),交错比例为 2:3。观察到双码本分词器能够保留大量情感、韵律及其他非语言信息,这表明该方法在信息解耦方面仍不够理想,这一不足恰好使其非常适合作为验证LLM 后训练策略及所提出的大间隔数据驱动方法有效性的实验对象。

Audio LLM:为了充分利用预训练文本 LLM 的强大语言处理能力,3B 模型首先使用基于文本的 LLM 进行初始化,然后在文本数据与音频双码本token以 1:1 比例混合的数据集上进行训练。音频 LLM 以聊天格式处理文本token及其对应的双码本音频token,最终生成双码本token作为唯一输出。

Audio Decoder:音频解码器由 Flow Matching 模块和 BigVGANv2声码器组成。Flow Matching 模块在输出音频令牌、参考音频以及说话人嵌入(speaker embedding)作为条件下生成 Mel 频谱图,而 BigVGANv2 声码器则进一步将 Mel 频谱图转换为音频波形。对于 Flow Matching 模块,采用扩散变换器(DiT)作为骨干网络,并在 20 万小时高质量语音上训练该模型。

Data

SFT 数据:零样本 TTS、情感编辑、说话风格编辑以及副语言编辑。

  1. 零样本文本转语音:中文和英文以及少量粤语四川话的内部数据,总计约 60,000 个独立说话人
  2. 情感与说话风格编辑:高质量数据难以收集,提出简单高效的大边距合成数据方法

该方法在同一说话人之间进行零样本语音克隆,覆盖不同的情感和说话风格,同时确保对比样本对之间具有足够大的差距。仅需 每种情感或风格的一个提示音频片段,避免了昂贵的数据收集成本。此外,该方法巧妙地将复杂的情感与风格描述 转换为基于比较的样本对构建格式。具体方法如下:

  • 声优录音:声优录制表达丰富的情感和说话风格。对于每位声优,每种情感和风格组合录制约 10 秒 的音频片段。
  • 零样本克隆:对于每种情感和说话风格,构建三元组 ⟨文本提示, 中性音频, 情感/风格音频⟩。通过选择同一说话人的对应中性与情感/风格音频作为提示音频,并使用 StepTTS 语音克隆接口 处理,文本指令描述目标属性。
  • 边距评分(Margin Scoring):为评估生成的三元组,我们使用一个小型人工标注数据集训练评分模型。该模型对音频对进行 1-10 分评分,边距分数越高表示效果越理想
  • 边距选择(Margin Selection)根据边距评分阈值筛选样本。该阈值会根据不同情感和风格进行调整,通用下限设为 6 分。

3. 副语言编辑(Paralinguistic Editing)

副语言 如呼吸、笑声以及填充停顿(例如“嗯”),对于提升合成语音的自然度和表现力至关重要。通过使用 “半合成”策略 实现了副语言编辑能力,该策略利用 NVSpeech 数据集——一个表现力丰富的语音语料库,其对多种副语言类型进行了详细标注,从而使得构建用于模型训练的比较四元组成为可能。

四元组 ⟨text_without_tags, audio_without_tags, text_nv_source, audio_nv_source⟩ 的构建方式不同于三元组:它使用 NVSpeech 的 原始音频和转录文本 作为目标输出,而将通过 StepTTS 语音克隆生成的音频作为输入,该音频是基于去除副语言标注后的原始转录文本合成的。

由于副语言编辑是 在时间域上进行的编辑任务,且存在显著的内在边距差异,因此 数据选择不需要边距评分模型。只需一小部分四元组数据,即可有效激发模型的副语言编辑能力。

强化学习数据:基于人工标注,以及使用 LLM-as-a-Judge(大型语言模型作为评判) 方法

人工标注:收集用户提供的真实世界的 提示音频 及对应文本提示,然后使用 SFT 模型生成 20 个候选响应。接着,通过人工标注员根据 正确性、韵律和自然度 对每个响应进行 5 分制评分,构建 选择/拒绝对。仅保留评分边距大于 3 的样本对。

LLM-as-a-Judge:使用理解能力模型对模型响应的 情感和说话风格编辑 进行 1-10 分评分,再根据评分生成偏好对,并仅在最终数据集中保留 评分边距大于 8 分 的样本对。

经过筛选的大边距样本对将用于训练 奖励模型PPO

训练

两阶段:SFT,然后进行 PPO

SFT 阶段通过在 聊天格式下使用不同系统提示来增强模型的零样本文本转语音合成与编辑能力。

  • 在零样本 TTS 任务中,提示音频被编码为 双码本tokens,随后将其解码为字符串形式,并嵌入到系统提示的说话人信息中。待合成文本作为 用户提示,生成的双码本 tokens 则作为系统响应返回。
  • 对于编辑任务,所有操作在统一的系统提示下定义。用户提示包含 原始音频 及编辑操作的描述性指令,系统响应则返回 编辑后的音频 tokens

模型在 SFT 阶段训练 1 个 epoch,学习率范围从 1 × 10⁻⁵ 到 1 × 10⁻⁶

强化学习用于提升模型在 零样本 TTS 的稳定性,以及在执行编辑指令时的能力和表现力。当 源提示音频与目标编辑输出在情感或风格上存在显著差异 时,这种提升尤为明显,例如将快乐语音生成悲伤语音,或将高音量语音转换为耳语。

该强化学习方法提供了一种新的思路:不再单纯追求理想的语音表示解耦,而是同时优化大边距样本对的构建与奖励模型的评估效果

奖励模型从 3B SFT 模型 初始化,并使用 人工标注数据与 LLM-as-a-judge 生成的大边距数据 进行训练,优化方法采用 Bradley-Terry 损失

  • 模型为 token 级奖励模型,直接在大边距双码本 token 对上训练,无需在奖励计算过程中通过音频解码器将 token 转回波形。
  • 模型训练 1 个 epoch,学习率采用 余弦衰减策略(cosine decay),初始值为 2 × 10⁻⁵,下限为 1 × 10⁻⁵

PPO 训练:获得奖励模型后,使用 PPO 算法 进行进一步训练。训练使用与奖励模型训练相同的提示种子,但只选择 对 SFT 模型最具挑战性的提示

  • 在 PPO 阶段,critic 先预热 80 步,随后再训练执行者(actor)。
  • 优化器初始学习率为 1 × 10⁻⁶,遵循余弦衰减策略,下限为 2 × 10⁻⁷
  • 使用 PPO 剪切阈值 ϵ = 0.2,并施加 KL 散度惩罚系数 β = 0.05

Evaluation

情感与说话风格编辑结果: 如表 1 所示,在 Iter0 音频进行首次编辑后,情感和说话风格的准确率都有显著提升。此外,经过连续迭代编辑后,情感和说话风格的准确率进一步增强。

闭源模型上的泛化能力:Step-Audio-EditX 首次编辑 后,所有声音模型的情感和风格准确率均显著提升。经过接下来的两轮迭代,准确率进一步增强,从而有力证明了本模型的 强泛化能力

闭源模型上的情感控制,Step-Audio-EditX 在零样本克隆能力下展现出 更高的情感准确率,优于其他两款模型。仅经过 一次编辑迭代,所有音频样本的情感准确率均显著提升。将一次情感编辑迭代应用于零样本克隆音频,其效果 超过了闭源模型原生情感控制功能生成的结果

副语言编辑: 如表 4 所示,在仅进行一次编辑迭代后,通过加入副语言标签(paralinguistic tags),模型在副语言元素的重建与插入方面取得了显著性能提升。实验结果表明:经过一次 Step-Audio-EditX 的副语言编辑后,生成的副语言效果已经可与闭源模型使用原生副语言标签直接合成的结果相媲美,展现出强大的泛化能力与编辑一致性。

扩展能力

语速编辑:构造了三元组⟨text, audiosource, audiofaster/slower⟩,其中针对同一说话人,通过 SoX 工具包 的受控速度扰动生成快/慢版本音频。由于语速变化会显著改变 token 序列长度,仅使用 SFT 即可实现有效的语速编辑

去噪与静音剪裁:基于生成式的方法,实现提示音频和合成音频的定向编辑,包括去噪静音剪裁

去噪(Denoising)构造三元组:⟨text, audioaugment, audiosource⟩其中 audiosource 为干净音频(ground truth),audioaugment 通过添加噪声与混响模拟生成。

静音剪裁(Silence Trimming)构造三元组:⟨text, audiosource, audiotrimming⟩audiosource 含有静音片段,audiotrimming 则通过 Silero-VAD 提取语音区间后拼接生成。

ASR专有名词纠错后处理:SS+GL方法

核心:基于音频特征+实体词库,使用神经网络检索可能最的实体词,然后通过LLM进行纠错

华为这篇论文的核心目标——解决ASR(自动语音识别)里“专有名词老认错”的问题。比如像“ChatGPT”“长江白鲟”这种领域特定的命名实体,ASR(比如Whisper)在通用场景里挺准,但遇到这些词常转错,后续用这些转录文本做任务就全乱了。

命名实体纠错 (NEC) 方法是指用于纠正ASR转录文本中的命名实体错误,现在主流的命名实体纠错 (NEC)方法分两类:

(1) 在转录文本生成过程中同时纠正错误;一般需要训练额外的模块,使 ASR 模型具备上下文偏置能力,或者利用上下文信息来纠正 ASR 模型中的命名实体错误。 这些方法需要对ASR系统进行修改,使其具备纠错能力,因此这些方法很难应用于第三方 ASR 系统。

(2) 在转录文本生成后纠正错误,即后编辑错误。不需要对 ASR 系统进行任何修改,因此后编辑 NEC 方法更具适用性。其中最常见的是PED-NEC(基于语音编辑距离的方法),当 ASR 转录文本中实体和相关错误文本的词形相似时,我们可以通过遍历实体数据存储轻松定位错误,但PED-NEC有个大毛病——如果错的文本和真实实体“长得太不一样”,就彻底歇菜。比如:

  • “大语言模型”被ASR转成“大原模型”,俩词字面差挺多;
  • “Midjourney”转成“米德仲尼”(英文变中文音译);
  • “灵耀X”转成“01X”(汉字变数字);
  • “ChatGPT”转成“Check GPT”(拼写差一截)。

这时候PED-NEC没法定位错词,自然就纠正不了,这就是论文要解决的核心问题。

为了解决上述问题,创新性地提出了一种基于生成式方法NEC(命名实体校正) 方法,用于在转录文本中自动标注待纠正片段。具体来说,利用语音声学特征、候选命名实体以及 ASR 转录结果,生成(标注)出转录文本中需要被纠正的词语,并据此进行修正。该基于错误标注的 NEC 方法能够在识别出待纠正文本后,实现端到端的文本纠错,无需考虑词形变化,因此相比以往基于规则的替换方法具有更高的优越性。

Method:核心是两步:SS(语音特征检索候选实体)+ GL(生成式标注错误文本)。简单说,不依赖文本长得像不像,而是基于语音相似性进行实体检索,再让模型“智能标出”错词,最后替换——完美解决“长得不一样”的问题。

纠错流程如图2所示。首先预先构建一个数据存储库(datastore),用于保存实体的音频-文本对。在获得语音片段和 ASR 转录结果后,执行语音检索SAN(自注意力网络)和FFN(前馈网络)】,以判断该语音片段的某一部分是否与数据存储库中某个候选实体的语音特征相似。

如果存在相似的候选实体,就将该候选实体与 ASR 转录文本拼接在一起,作为提示(prompt)输入纠错模型,以引导模型生成 ASR 转录中可能错误的词语(即与正确实体对应的错误文本)。最后,将检测出的错误文本替换为数据存储库中的正确实体。

Datastore Creation:收集实体列表 X={x1,x2,…​xn} ,以及基于TTS合成对应的的语音:

将 TTS 生成的音频输入到编码器,并将编码器最后一层的输出作为实体 xi 的语音表示。为了提高检索准确率并降低内存占用,我们在编码器的末尾添加了一个CNN层

数据存储存储键值(表示实体)对:

Entity Retrieval:用户的输入音频片段 s 输入到编码器中,并从编码器最后一层的输出中得到它的表示 s​’

引入自注意力网络(SAN)和前馈网络(FFN)来计算数据存储区 s 包含候选实体 xi′ 的概率 pi :

最后应用平均池化,获取最终的分类:

判断数据存储中是否存在语音片段中的实体。如果概率 pi 高于我们设定的阈值,则选择前 K 个候选实体进行进一步校正。

Error Correction:通过上述实体检索方法获得若干候选实体,用符号“|||”连接实体,然后用引号将实体字符串与 ASR 转录文本连接起来。实体+转录文本字符串用作提示,引导纠错模型在转录文本中生成与候选实体具有相似语音特征的错误实体。该过程实际上是一种生成式标注方法,因为纠错模型会在原始 ASR 转录文本中输出一个或多个单词。

方法还具备实体拒绝功能。如果模型无法将候选实体与转录文本中可能存在的错误实体匹配,则会生成符号<empty> 表示没有返回结果。

emptry表示改候选词不采用,Error 表示错误的文本,用该位置的原本实体词替换

模型旨在找到语音相似且符合语言模型的待更正文本,最后一步是用数据存储中的真实实体替换错误文本。

Experimental 

1. 数据准备:训练+测试集都很实在训练数据:用了Aishell数据集里的54129个中文实体,正负样本1:10(正样本是含实体的音频文本对,负样本是不含的);还特意让20%的Prompt里加了“无关实体”(比如该纠正“ChatGPT”,却加了“Midjourney”当候选),练模型生成“”的能力,避免过纠正。测试集:搞了两个,一个是开源的,一个是自己建的:

  • Aishell测试集:从Aishell的开发集和测试集里挑了3101个去重实体,测通用场景;
  • BuzzWord测试集:自己建的“难点集”,1500段2023-2024年的语音——500段是“正例”(含新词、外来词、数字实体,比如“ChatGLM-6B”“苍兰诀”“Matebook D16”),1000段是“负例”(不含实体),还特意平衡了男女说话人,模拟真实场景。

评估指标:看四个关键数据,别嫌麻烦,这些数能直接看出效果:

  • CER:整体字符错误率(越低越好);
  • NNE-CER:非实体部分的错误率(越低越好,要是这数高了,说明把不该改的改了,过纠正);
  • NE-CER:实体部分的错误率(越低越好);
  • NE-Recall:实体召回率(越高越好,意思是“能把多少实体从错的里捞对”)。

对比的基线方法:跟四种方法比,确保新方法真的好:

  • 原始Whisper(没纠正的ASR结果);
  • PED-NEC(传统的基于编辑距离的方法);
  • PED+GL(用PED找候选,用新的GL纠正);
  • SS+NEC(用新的SS找候选,用传统PED纠正)。
  • 原始Whisper最差,实体召回率才70.85%;
  • PED-NEC比Whisper好,但有个问题:NNE-CER从10.00升到10.42,说明它有点“瞎改”,把非实体的内容也改坏了(过纠正);
  • 而SS+GL呢?所有指标都最优:整体CER最低(9.85),实体错误率最低(7.41),实体召回率最高(87.31,比PED-NEC高4个百分点),而且NNE-CER几乎和Whisper一样(10.01),没怎么过纠正——这就很牛了!

论文还特意从Aishell里挑了50个“错词和实体长得特别不一样”的案例做了个“词形差异集”,SS+GL在这上面表现更突出,把PED-NEC甩得更远。

BuzzWord难点集这是最能体现新方法优势的地方,因为这里面全是ASR最容易认错的新词、外来词,数据更惊艳:

  • 原始Whisper在这直接“崩了”,实体召回率才12.22%——10个实体里才对1个多,可见这些新词多难认;
  • PED-NEC虽然比Whisper好,但召回率也才61.82%,实体错误率还有23.62%;
  • 再看SS+GL:实体召回率直接冲到87.47%,比PED-NEC高了26个百分点!实体错误率也降到7.26%,而且NNE-CER还是15.29,没瞎改非实体内容——这就证明,对付“长得不一样”的新词、外来词,SS+GL是真的行。

关键图表分析:证明方法为啥有效

这图看的是模型的注意力分布,能看到:

  • 模型标注的错误文本(比如“米德仲尼”)、候选实体(比如“Midjourney”),还有对应的语音片段,这三者之间的注意力值特别高;
  • 这就说明模型真的把“错词-候选实体-语音”三者关联起来了,不是瞎标错词,标注是有依据的。
检索阈值和纠正效果的关系——证明“容错性好”

这图横坐标是检索时的概率阈值(比如0.1、0.2…0.9),纵坐标一边是检索的F1值(越高说明检索越准),一边是纠正的CER(越低说明纠正越好)。

  • 有意思的是:不是检索F1越高,纠正效果越好;反而当阈值低一点(比如0.3左右),检索召回率高、精度低的时候,纠正的CER最低;
  • 原因很简单:SS+GL的GL模块能“容错”——就算检索多找了几个不太准的候选,GL也能通过生成“”排除掉,不用怕候选里有“杂质”。

实体拒绝案例——证明“不瞎改”

这个案例特别典型:候选实体是“韩宇”(人名),ASR转录本里有两个发音一样的词——“韩雨”(另一个人名,需要改)和“韩语”(语言,不用改)。

  • PED-NEC:因为发音一样,把俩都改成“韩宇”了,造成过纠正;
  • SS+GL:只把“韩雨”改成“韩宇”,“韩语”不动——因为GL模块能结合语境判断,知道“韩语”不是人名,不用改,避免了瞎改的问题。

除了纠正效果好,SS+GL还有三个大优势:

  • 联合标注有效:图4已经证明了,模型能精准关联“语音-候选实体-错词”,不会标错对象;
  • 实体拒绝能力强:检索时能滤掉低相似度的候选,GL还能生成“”跳过不用改的,所以检索时可以放宽阈值,多找候选也不怕,反而能提高召回率;
  • 自带CED功能:CED是“错误实体检测”,传统PED-NEC得单独加个CED模块才能找错词,而SS+GL的GL模块在生成错词的过程中,就已经完成了“检测错词”的步骤,不用额外加模块,更简洁。

基于生成式的纠错方法只对“待纠正文本”进行标注,从而使得时间消耗极小,但当数据存储库(datastore)中包含大量实体时,实体检索部分可能会变得非常耗时。

在这种情况下:

  • 一方面,我们可以用 PED(即前文提到的 PED+GL 方法) 替代检索步骤,以降低整体延迟;
  • 另一方面,未来我们计划将当前的检索方法改进为向量检索(vector search),借助现有成熟的向量搜索引擎,大幅提升检索速度。

Phoenix-VAD

文:https://arxiv.org/pdf/2509.20410

口语对话模型在智能人机交互方面取得了显著进展,但仍缺乏一种可即插即用的全双工语义端点检测模块,从而限制了音频交互的无缝体验。本文提出了一种基于大语言模型(LLM)的流式语义端点检测模型——Phoenix-VAD。Phoenix-VAD 利用大语言模型的语义理解能力,并结合滑动窗口训练策略,实现了在流式推理场景下的可靠语义端点检测。实验证明,在语义完整与语义不完整的语音场景中,Phoenix-VAD 均取得了优异且具竞争力的性能。

现有方法在这一方面存在明显局限。传统的VAD仅依赖声学特征判断“是否存在人声”,无法理解语义层面的意图,因而难以实现自然的语义对齐。语义VAD虽在一定程度上引入了语义判断,但通常依赖外部自动语音识别(ASR)模块,导致系统延迟增加,并可能损失语音中的细粒度语义信息。至于如 RTTL-DG、Moshi 等端到端方案,虽具备一定的语义理解能力,但模型高度耦合,难以在不同对话系统中直接复用,每次更换对话模型都需重新训练或微调,部署成本较高。

Phoenix-VAD ——一种基于大语言模型的语义端点检测框架,旨在实现模块化、低延迟、可流式推理的全双工语音交互。

Phoenix-VAD 基于用户语音的语义完整性进行端点检测,并使用不同的超时阈值来判断终止条件。当用户查询语义不完整时,模型会应用更长的超时阈值,以避免过早终止响应。

音频编码器:用的是150M参数的Zipformer,之前还在10万多组内部ASR数据上训练过,能把原始语音波形转换成25Hz的“帧级特征”——简单说就是先把语音里的关键信息抽出来,方便后续处理。

适配器:就是两个线性层加个ReLU激活函数,专门解决“音频特征和文本特征对不上”的问题。它先把编码器输出的音频特征,按几帧拼一块做下采样,再转成LLM能“看懂”的文本embedding,最后输出适配好的特征。

LLM:用的是Qwen2.5-0.5B-Instruct,给它喂两样东西:一是适配器处理好的音频特征,二是文本提示(比如告诉它“你是个VAD,要判断用户是不是还在说”),最后让它输出两个结果:要么是“Continue Speaking”(用户还在说),要么是“Stop Speaking”(用户说完了)。

Sliding Window:

滑动窗口策略仅使用每个窗口内的音频进行预测,从而降低了对整个输入序列的依赖。与处理整个序列相比,它能够进行增量式的分块预测,在延迟方面具有潜在优势。同时,该模型可以利用每个窗口内的信息,为语义推理提供足够的局部上下文,并支持流式推理。

针对100Hz的语音特征序列,窗口设成256帧(对应2560ms),每次往前挪32帧(320ms);训练的时候,只盯着每个窗口“最后一个chunk”做监督——不用等整段语音,就能一块一块增量预测,既保留了局部的语义上下文,又能减少延迟,刚好满足实时交互的需求。

在训练过程中,音频编码器被冻结,仅训练适配器和 LLM。LLM 骨干网络使用 LoRa 进行微调,以增强其多模态推理能力。训练目标使用标准交叉熵损失进行优化

Data:

造文本:结合内部的文本资源和ChatGPT API,生成两种文本:一种是“语义完整”的(比如“帮我查一下最新的订单信息”),一种是“语义不完整”的(比如“帮我查<停顿>最新的订单信息”);

合成音频:用Index-TTS工具把文本合成语音,为了模拟不同人的声音,还从库里随机选了1007个英语、1010个中文说话人的声音模板;另外还故意插点静音段,还原真实聊天里的“犹豫、中断”场景;

标标签:用Paraformer工具给每个字标上时间戳,再根据“用户停止说话”的时间点,标两种训练标签:“Continue”(还在说)和“Stop”(说完了)。还特别设置了不同的超时阈值:语义完整的话,等400毫秒就判断“说完了”;不完整的话,等1000毫秒,避免提前打断用户。

Experiments:

用40万条音频(总共570小时)训练,然后拿2000条“语义完整”+2000条“语义不完整”的音频做测试:

语义不完整的场景里,准确率98.5%,“说完了”的F1分数0.918,“还在说”的F1分数0.992

语义完整的场景更稳,准确率98.6%,“说完了”F1 0.905,“还在说”F1 0.993

简单说就是,判断“用户还在说”几乎不会错,判断“说完了”也很靠谱。

对比其他开源VAD:

消融实验

如果把滑动窗口的步长从320毫秒缩到160毫秒(更细的粒度),性能会下降——因为太细的粒度会让判断更犹豫,还会放大时间戳标注的误差;如果适配器只在ASR数据上训练,也不如“联合训练”效果好,因为ASR数据只关注“语音转文字对不对”,缺了“判断说话边界”需要的时间线索。

Phoenix-VAD最核心的价值就是:靠LLM的语义理解能力,加上滑动窗口的实时 trick,弄出了一个“靠谱、实时、能随便用”的语义端点检测模块,刚好补上了全双工语音交互的短板。以后优化方向:一是让模型能过滤“没用的声音”(比如背景噪音、无意义的嘟囔);二是用真实场景的录音再训练,让它在实际聊天里更好用;最后打算把它装到端到端的对话系统里,让整个交互更顺畅。