语音基石模型Speech Foundation Models( 四 )


(GSLM)
这篇论文就是语音版的GPT
首先还是这些套路 , 一段语音信号 , 先用生成伪文本表示(包括K-means 、)
然后用这些为文本表示再训一个 only 的unit语言模型 , 就可以让它像GPT 一样 , 一直去生成后面的 unit , 然后再只需经过一个unit to , 就可以继续合成之后的语音信号 。
当然 , 这个unit to的模型也是需要训练的 , 怎么训练呢?可以拿一堆语音数据 , 把它抽成unit , 这样就有和unit的pair data , 模型可以用之前的(比如 , 等等) 。
这个unit to和-only uLM没有联合训练 , 只要单独训好就行 。整个模型没有任何文字信息 。
这个GSLM模型和GPT一样 , 可以做条件生成 , 或非条件生成任务 。区别就是条件的需要先输入一段预测好的语音 , 让模型接着这个话讲;而非条件的不需要输入语音 , 只给一个begin of (BOS)的token , 它输出就是随机的语音 。生成模型本来就具有一定的随机性 。
这篇文章还探讨了一个东西 , 叫作 。就是GSLM输入 < BOS > , 输出不是3 , 而是一个机率分布(就是3的机率最高) 。GSLM是一个自回归的模型 , 把预测出的3会再喂给自己 , 产生下一个unit , 这样循环 。
就是去调整预测出来的机率 。。的值设很低的话 , 比如把3的机率调大 , 其他调小(大的越来越大 , 小的越来越小) , 生成的语音会(结巴) , 比如重复说一句话 。的值设很高的话 , 比如把3的机率调小 , 其他调大(大的调小 , 小的调大 , 均匀一点) , 生成的语音就会(胡言乱语) 。
一般=1 。
这个模型有个缺点就是局部关联“”  , 就是局部分几个字之间看着蛮合理的 , 但整个一句话就不太合理 。比如生成如下的话 , 也不太懂什么意思 , 让翻译一下 , 还是很混乱 。该缺点可能是模型大小 , 或训练资料的局限导致的 。
这篇文章的输入除了SSL模型输出的表示特征(变成伪文本)以外 , 还输入了韵律和说话人特征 。
目的是输入和输出要一样(内容 , 韵律 , 说话人都不变) 。
但发现伪文本特征中说话人信息很少 , 基本只有内容信息 。这是另一篇文章 , 可以看到做说话人识别任务 , 只要做量化 , 准确率就会立马下降 , 所以现在的共识就是 , SSL表示特征经过k-means的量化后 , 会把说话人信息给去掉 。
所以需要额外把韵律和说话人信息补上 , 这也是为什么上面模型分成三个流 。这个模型可以做Voice 任务 。
就是通过特征解耦后 , 只要替换信息(把 抽换掉) , 就可以做语音转换 。可以看到还是的模型性能好 。

语音基石模型Speech Foundation Models

文章插图
除了做语音转换 ,  模型还可以做 codec任务 。就相当于是语音压缩表示 。比如把语音从A端传输到B端 , 先对语音做量化 , 得到更细致的表示 , 通过很少的数据就可以传输 , 最后可用返回语音 。
下面结果 , 横轴是传输语音资料的大小 , 纵轴是合回声音的品质 。可以看到在保证语音质量的前提下 , 可以把它压缩的很小 。