8倍提升表现:谷歌新算法,从多人对话里分清谁在发言,错误率降到2%
栗子 来源: 量子位RNN-T最合适了。
其实,从多人对话的音频里,分辨出哪段话是哪个人说的,早就不是新鲜问题了。
不过,可以有新鲜解法啊 (毕竟从前的成绩不够好) 。
谷歌AI团队说,最近这20年套路都没变过,就分两步:
他们不想被传统做法困住,开发了新方法:利用语音识别,把语言学线索和声学线索搭配食用,帮助区分。
团队还发现,要有机结合这两种线索, RNN-Transducer (RNN-T) 是最合适的架构。
最终结果,谷歌新模型把单词级的错误率 (WDER) ,从降到了。且多种错误情况皆有明显改善。
推特已有500多人点赞。
论文还中选了 INTERSPEECH 2019 。
传统方法缺陷在哪
谷歌团队总结了四个主要的局限:
第一 ,对话先要被拆解成单人片段。不然就没办法准确传达 一个 说话人的特征。
但事实上,现有的说话人变换检测方法不完美,会导致拆分出的片段里,还是有多个说话人。
第二 ,聚类的时候,必须要知道 总共有多少个说话人 。这个信息如果不准确,就会严重影响模型的表现。
第三 ,系统需要在 拆分片段的大小 上面,做一个艰难的权衡。
片段越长,嗓音名片的质量就越好,因为每个说话人的信息多了。但风险在于,短暂的插话 (Short Interjections) 容易被判断错误。
这在医疗或金融领域的对话上,都可能产生很严重的后果。
比如,医生问患者:“你有没有按时吃药?”
患者回答“有 () ”,和医生问“有么 () ”,差别是很大的。
第四 ,传统方法没有一个简单的机制,来利用好语言学线索。
比如,“你用药多长时间了?”通常是医生问的,不是患者问的。
所以,这些坑要怎么填呢?
得天独厚的RNN-T
RNN-T这个架构,原本是在语音识别上大展拳脚。
而团队发现,它最适合用来把 声学 和 语言学 的线索整合到一起。注意, 语音识别 和 说话人区分 ,不是暴力结合,是优雅地整合成了一个简单系统。
RNN-T模型,由三个不同的网络组成:
划重点,架构里有一个 反馈循环 (Feedback Loop) 。在这里,先前识别出的单词都会作为输入,反馈回去。
这样,RNN-T模型就能利用语言学的线索了: 比如一个问句结束,很可能是要换人了。
谷歌说,这个模型可以像训练语音识别系统那样训练:
训练样本,是一个人说的话加上一个标签 (Tag) ,用来定义说话人的角色。比如:
训练完成,就可以输入一段语音,得到每个字的分类结果了。
那么,和基线对比一下,来看成果如何。
主角是把语音识别 (Speech Recognition) 和说话人区分 (Speech Diarization) 结合成一个系统,基线是把两者分开再适配:
结果,说话人区分的单词级错误率 (Word Diarization Error Rate) ,从基线的15.8%,下降到了新方法的2.2%。
除此之外,多种原因造成的错误,RNN-T都能有效避免,包括:
说话人在很短的时间里发生变化,单词边界 (Word Boundaries) 处的切分,语音重叠造成的数据集说话人标注错误,以及音频质量差的问题。
红色是RNN-T,蓝色是传统方法。每一种错误情况都大幅减少。
团队还补充说,RNN-T系统在各种不同的对话里,平均错误率比传统方法更稳定:方差更小。
传送门
论文在这里:
博客在这里:
— 完 —
版权所有,未经授权不得以任何形式转载及使用,违者必究。