前言
根据前面的文章我们已经可以做出一个可用性较强的声纹识别系统了,但声纹识别的应用不仅限于声纹确认和声纹搜索中,例如我们今天说的说话人分离(也叫说话人分割聚类)也需要用到声纹模型。而说话人分离又分为在线说话人分离和离线说话人分离。
离线说话人分离
目前对包含多说话人并且语音不交叠的音频的离线说话人分离较为简单,简单说一下思路:
- 首先对原始音频应用VAD进行切分(对于大部分语音都能完成较好的切分,VAD如果有自己的模型可以使用自己的,如果没有建议使用webrtcvad,虽然其对噪音的过滤不是很好)。
- 经过切分的音频有条件还可以再次使用说话人改变点模型进行再次切分(当然这一步目前来说可有可无)。
- 将得到的切分音频一个个提取特征(根据之前声纹模型提取的特征来,例如Fbank)送入之前的声纹模型得到切分音频的声纹嵌入码。
- 直接使用声纹嵌入码进行聚类即可(聚类可使用Kmeans、谱聚类等)。当然这种聚类方法还是需要指定说话人的数量(即聚类的类别数)。
经过上面的步骤我们往往可以得到一个这样的结果:
[0, 1, 1, 2, 2, 1, 0, 1, 2]
上面的每个数字