蒙面唱将,程序猿的正确观看姿势之声纹识别技术

音乐
雷峰塔里写代码
2016年10月10日 17:12

蒙面唱将是小猿最近在看的一档音乐节目,歌手带着面具唱歌,让大家更关注他们的声音而忘记他们的面容,撇开节目创意不谈,小猿更注意的是机器人小V。它每次出现的意义是利用内置的声纹匹配功能,向几位评委提供可能的歌手名单,虽然那英出现的次数太多,但是当它说出“驯鹿”有可能是周慧时,从巫启贤的反应依然能看出小V的能力还是不容小觑的。作为程序猿,小猿当然对这种声纹匹配功能更加感兴趣了,于是就简单的研究了一下这种相当成熟的人工智能技术。

首先声纹(Voiceprint),是用电声学仪器显示的携带言语信息的声波频谱。人类语言的产生是人体语言中枢与发音器官之间一个复杂的生理物理过程,人在讲话时使用的发声器官--舌、牙齿、喉头、肺、鼻腔在尺寸和形态方面每个人的差异很大,所以任何两个人的声纹图谱都有差异。每个人的语音声学特征既有相对稳定性,又有变异性,不是绝对的、一成不变的。这种变异可来自生理、病理、心理、模拟、伪装,也与环境干扰有关。尽管如此,由于每个人的发音器官都不尽相同,因此在一般情况下,人们仍能区别不同的人的声音或判断是否是同一人的声音。

而所谓声纹识别(Voiceprint Recognition, VPR),属于生物识别技术的一种,也称为说话人识别,其有两类,即说话人辨认和说话人确认。不同的任务和应用会使用不同的声纹识别技术,如缩小歌手范围时可能需要辨认技术,而银行交易时则需要确认技术。前者用以判断某段语音是若干人中的哪一个所说的,是“多选一”问题;而后者用以确认某段语音是否是指定的某个人所说的,是“一对一判别”问题。不管是辨认还是确认,都需要先对说话人的声纹进行建模,这就是所谓的“训练”或“学习”过程。

在说话人辨认方面,根据待识别的说话人是否在注册的说话人集合内,说话人辨认可以分为开集(open-set)辨认和闭集(close-set)辨认。前者假定待识别说话人可以在集合外,而后者假定待识别说话人在集合内。显然,开集辨认需要有一个对集外说话人的“拒识问题”,而且闭集辨认的结果要好于开集辨认结果。比如小V在蒙面唱将中使用的方法就是说话人辨认,它内置了很多的唱片集合,通过辨认歌手的声纹是否在唱片集合中来判断歌手的身份。

声纹识别可以说有两个关键问题,一是特征提取,二是模式匹配(模式识别)。

声纹识别的特征必须是“个性化”特征,而说话人识别的特征对说话人来讲必须是“共性特征”。虽然目前大部分声纹识别系统用的都是声学层面的特征,但是表征一个人特点的特征应该是多层面的,包括:(1)与人类的发音机制的解剖学结构有关的声学特征(如频谱、倒频谱、共振峰、基音、反射系数等等)、鼻音、带深呼吸音、沙哑音、笑声等;(2)受社会经济状况、受教育水平、出生地等影响的语义、修辞、发音、言语习惯等;(3)个人特点或受父母影响的韵律、节奏、速度、语调、音量等特征。从利用数学方法可以建模的角度出发,声纹自动识别模型目前可以使用的特征包括:(1)声学特征(倒频谱);(2)词法特征(说话人相关的词n-gram,音素n-gram);(3)韵律特征(利用n-gram描述的基音和能量“姿势”);(4)语种、方言和口音信息;(5)通道信息(使用何种通道);等等。

对于模式识别,有以下几大类方法:

(1)模板匹配方法:利用动态时间弯折(DTW)以对准训练和测试特征序列,主要用于固定词组的应用(通常为文本相关任务);

(2)最近邻方法:训练时保留所有特征矢量,识别时对每个矢量都找到训练矢量中最近的K个,据此进行识别,通常模型存储和相似计算的量都很大;

(3)神经网络方法:有很多种形式,如多层感知、径向基函数(RBF)等,可以显式训练以区分说话人和其背景说话人,其训练量很大,且模型的可推广性不好;

(4)隐式马尔可夫模型(HMM)方法:通常使用单状态的HMM,或高斯混合模型(GMM),是比较流行的方法,效果比较好;

(5)VQ聚类方法(如LBG):效果比较好,算法复杂度也不高,和HMM方法配合起来更可以收到更好的效果;

(6)多项式分类器方法:有较高的精度,但模型存储和计算量都比较大;

声纹识别的应用有一些缺点,比如同一个人的声音具有易变性,易受身体状况、年龄、情绪等的影响;比如不同的麦克风和信道对识别性能有影响;比如环境噪音对识别有干扰;又比如混合说话人的情形下人的声纹特征不易提取等等。尽管如此,与其他生物特征相比,声纹识别的应用有一些特殊的优势,使得声纹识别的应用越来越收到系统开发者和用户亲睐,声纹识别的世界市场占有率15.8%,仅次于手指和手的生物特征识别,并有不断上升的趋势。而一向以发烧自称的小米也在自己的小米5s首次使用了超声波声纹识别。

声纹识别的原理大概了解到这,作为程序猿我们还是习惯来点代码,下面就介绍1个在声纹识别方面比较优秀的开源框架:VoicePrint 是一款基于高斯混合模型的文本无关的声纹识别算法验证程序,源码地址如下:https://github.com/dake/openVP

中国娱乐在线©部分网站内容来自网络,如有侵权请联系我们,立即删除!
音乐
你该读读这些:一周精选导览
更多内容...

TOP

More