![b64c3bc78e7dbf8ed519abf6be21bed3.png](https://i-blog.csdnimg.cn/blog_migrate/f3454c5196ca3483815f747c7fb32f06.jpeg)
在interspeech2019会议上,一篇名为《Joint Speech Recognition and Speaker Diarization via Sequence Transduction》的谷歌论文,又把说话人分割聚类技术提升到了一个新的阶段,成功的将语音识别技术和说话人分割聚类任务融合在一起,联合训练,不仅可以知道“什么时候说了什么”,最重要的是可以知道“谁在什么时候说了什么”。论文使用了大量的医患之间的对话语料进行实验,相比于传统的基线系统,该论文提出的方法将词级别的说话人分割聚类错误率从15.8%降到了2.2%,性能提升了7倍多。该论文的主要贡献是将联合语音识别和说话人分割聚类方法定义为序列传导问题,并且使用了循环神经网络变体进行了模型实现。
1.“谁在什么时候说了什么话”传统的系统方案
目前的语音应用在处理对话场景时,不仅仅需要识别“什么时候说了什么话”,而且需要确定“谁在什么时候说了什么话”。为了解决这个问题,很多传统的实现方案都是meger语音识别系统和说话人分割聚类系统的结果。这两个系统根据不同目标函数进行分别训练,毫无关联。传统的区分”谁在什么时候说了什么话”的方法,一般分为以下三个步。框架图如图1所示。
(1)使用语音识别系统将语音数据识别为文本;
(2)使用说话人分割聚类系统完成“谁在什么时候说了话”;
(3)最后将(1)和(2)得到的识别文本和说话人标签进行结合,确定”谁在什么时候说了什么话”。
![834f95cee9cdba61b04462554dd2ca3a.png](https://i-blog.csdnimg.cn/blog_migrate/cca64ce2ebf7dfdc871d853de4c08145.jpeg)
目前工业界最常用的说话人分割聚类方法就是首先将语音流切分成固定时间段,然后再对每一个分割段进行说话人标注。虽然在过去的很多年提取了很多不同的说话人分割聚类模型,但是大都是同一个模式:
(1)使用语音活动检测技术对语音进行静音和噪音去除;
(2)对语音通过固定的长度分割成段,然后提取声学特征,例如MFCC;
(3)利用提取的特征提取feature embedding,例如 i-vectors, x-vectors;
(4)根据提取到了ferature embedding,通过聚类技术将同一说话人聚合,