SpeechGen:用Prompt解锁语音语言模型生成能力( 二 )


在序列到序列的LMs(如mBART)中,我们采用了自我监督学习模型(如)来处理输入和目标语音 。这样做可以为输入生成离散单元,并为目标生成对应的离散单元 。我们在编码器和解码器输入的前面都添加了提示向量,以构造输入序列 。此外,我们还通过替换注意力机制中的关键值对,以进一步增强提示的指导能力 。
在模型训练中,我们以交叉熵损失作为所有生成任务的目标函数,通过比较模型的预测结果和目标离散单元标签来计算损失 。在这个过程中,提示向量是模型中唯一需要训练的参数,而 LMs的参数在训练过程中保持不变,这确保了模型行为的一致性 。我们通过插入提示向量,引导LMs 从输入中提取任务特定信息,并提高产生符合特定语音生成任务的输出的可能性 。这种方法允许我们微调并调整LMs 的行为,而无需修改其基础参数 。
总的来说,我们的研究方法基于一种全新的框架 ,通过训练提示向量,引导模型的生成过程,并使其能有效地产生符合特定语音生成任务的输出 。
实验
我们的框架可以用于任意的LM 及各类生成任务,具有很好的潜力 。在我们的实验中,由于 VALL-E 和不是开源的,我们选择使用 Unit mBART 作为LM 进行案例研究 。我们用语音翻译 ( )、语音修复 ( )、语音连续 ( ) 当作例子,来展示我们的框架的能力 。这三个任务的示意图如下图所示 。所有的任务都是语音输入,语音输出,无需文本的帮助 。
语音翻译
我们在训练语音翻译 ( ) 时,用的时西班牙文转英文的任务 。我们给模型输入西班牙语的语音,希望模型产生英文的语音,整个过程无需文本帮助 。以下是几个语音翻译的例子,我们会展示正确答案 ( truth) 与模型的预测 (model ) 。这些演示示例表明模型的预测捕捉到了正确答案的核心含义 。
语音修补
在我们进行语音修补 ( ) 的实验中,我们特别选取超过 2.5 秒的音频片段作为后续处理的目标语音,并通过随机选择过程挑选出一段时长介于 0.8 至 1.2 秒的语音片段 。然后我们对选出的片段进行遮蔽,模拟语音修补任务中缺失或受损的部分 。我们使用词错误率 (WER) 和字符错误率 (CER) 作为评估受损片段修复程度的指标 。

SpeechGen:用Prompt解锁语音语言模型生成能力

文章插图
对生成的输出与受损语音进行比较分析,我们的模型可以显著重建口语词汇,将 WER 从 41.68% 降低到 28.61%,将 CER 从 25.10% 降低到 10.75%,如下表所示 。这意味着我们提出的方法能够显著提高语音重建的能力,最终促进语音输出的准确性和可理解性 。
下图是一个展示样例,上面的子图是受损的语音,下面的子图是产生的语音,可以看到,很好地修复了受损的语音 。
语音连续
我们将通过展示语音连续任务的实际应用 。在训练提示()期间,我们的策略是让模型只看到片段的种子片段(seed ),这个 seed占据了语音总长度的一个比例,我们将其称为条件比率( ratio, r),并让模型继续产生后续的语音 。
以下,我们为您展示一些实例 。黑色的文字代表种子片段(seed ),而红色的文字则是生成的句子(这里的文字首先经过语音识别得到的结果 。在训练和推理过程中,模型完全进行的是语音到语音的任务,且完全不接收任何文字信息) 。不同的条件比率使能够生成不同长度的语句以实现连贯性,并完成一句完整的话 。从质量角度看,可以观察到生成的句子与种子片段在语法上基本一致,并且语义相关 。虽然,生成的语音仍然无法完美地传达一个完整的意思 。我们预期这个问题将在未来更强大的语音模型中得到解决 。