微软牛津计划——声纹识别与视频识别API上线啦!
上个月,我们发布了牛津计划机器学习的情感识别API,能够帮助不同平台的开发者轻松添加智能应用,而无需精通人工智能领域。牛津计划仅仅是微软在人工智能领域探索中的一个实例,而我们的期望是实现更加注重个人使用体验和更优性能的产品,逐渐实现它看、听、说、理解甚至是进行推论的性能。
现在,声纹识别API和视频API已经公开预览,自定义识别智能服务(CRIS)可通过www.ProjectOxford.ai进行访问。
CRIS能提供开发者构建针对特定词库、环境、或用户群的语音识别系统。视频API使得分析和自动编辑视频更加便捷,它能识别出视频中的单个人脸并进行追踪,还能根据一组参数检测出视频中人物或者物体的动作,并且对视频进行流畅性和稳定性处理。
接下来,我们一起来了解声纹识别API的更多背景——如何使用以及它究竟使用了何种技术。
使用场景示例:使用声纹识别API实现更强的身份认证功能
声纹识别API可以根据声音识别出用户和客户(说话者),然而声纹识别API将不会取代更强的验证工具,而是提升验证工具的安全级别。声纹识别API还有另一个功能,就是通过自动识别用户,而无需代理人进行一问一答的过程手动验证客户身份信息,从而提升了客户服务体验。
声纹识别的目标是帮助开发者构建智能自动识别机制,在便捷使用者的同时又能避免欺诈情况的发生,但这并不是一件简单的事。在理想情况下,要进行身份认证需要以下三种信息:
你知道的事物(密码)
你拥有的事物(安全键盘、移动设备或者信用卡)
你的特征(生物特征例如语音,指纹和脸)
声音有着独特的特征,能够用它来鉴别人,在这方面过去几年内声纹识别系统有着巨大的提升。(详见文章末尾参考文献【1】【3】)
使用声纹识别API有两个阶段——注册登记和识别:
|
注册阶段:记录下说话者的声音,从中提取大量特征,形成独特的声纹,生成某一个人的唯一标识。这些特征是基于说话者口腔和咽喉的物理状态,然后表示为数学公式。 识别阶段:用提供的语言样本与预先创建的声纹进行对比。 |

声纹识别两阶段(编辑自Douglas Reynolds PPT)
声纹识别提供了最先进的算法,从音频流中识别人的声音,包括验证和辨识两部分:
|
说话人验证:根据用户声音或演讲自动识别和确认身份。它与身份验证方案密切相连,通常需要使用密码短语。因此,我们选择了文本依赖识别方式:即在注册和验证阶段说话者都需要选择使用一个特定的密码短语。 说话人辨识:从给定的一组说话者音频中自动识别出样本音频的说话人。将输入音频与所提供的一组音频进行一一配对,如果找到匹配的,则识别出了说话者的身份,这是文本独立识别方式:即在注册和识别阶段对于说话者的内容没有限制。 |
声纹识别技术综述
包括成熟API在内的现代系统,大都使用了i-矢量方法。文献中的大部分工作都集中在场景验证,不论是与文本无关的NIST评估还是文本依赖型的密码短语,例如RSR数据库。二者通过标准测试,以及针对会议场景(有无排斥反应)内的大型识别任务测试,建立了基准。它在验证任务中获得的结果很有竞争力,有最高的精准度。在辨识方面,精确度超90%,而拒绝率只有约5%。
以下将简要总结不同技术组件,给感兴趣的读者提供参考。
我们简要概括声纹识别系统的i-矢量基本程序,并重点讨论一下身份确认,声音识别在修改评分阶段仅做了简单的修改。
特征提取:特征提取每10ms会生成一个表示语音的向量,梅尔频率倒谱系数(MFCC)被广泛地用于说话者和语音识别中。API中,我们使用一个强健、专有版本的MFCC,相当于60维的MFCC,它广泛用于声纹识别,在嘈杂环境中性能提升显著。
无监督训练:这一步被称为无监督训练,是因为它不使用说话者的标签。相反,它使用大的高斯混合模型来描述听觉空间和总变化矩阵来描述说话者(和信道)空间。构建通用背景模型(UBM)从早期的声纹识别,到使用大量数据和标准GMM训练技术进行构造此模型过程中,都是很有名的。另一方面,关于在联合因子分析(JFA)的背景下研究的T矩阵,建议读者参考【1】介绍。同时使用UBM和T,一个声音可以映射到固定的三维空间中(通常是在几百的量级),在这个空间构造判别变换,并注册登记和评分。
监督训练:在训练中,一旦构造出UBM模型和T矩阵,每一种表述方式和说话者标签都会映射到一个固定维度的向量中,使用这些(向量,标签),构造一个概率线性判别分析模型(PLDA)(可以把它看做一个有助于分解说话者和信道变化的概率线性判别分析模型)。如何训练和使用PLDA,详见【2】。训练PLDA模型,和找到在注册和测试阶段使用的相同变量是非常重要的(例如,在文本依赖型的确认阶段中通道变化和语音变化),这些在实践中都有很好的表现。
登记注册/测试:以上这些步骤是在使用一个大规模数据库的前提下。实际上,上述所有模型都是使用了数以千计小时的音频训练而来,这些在我们的API中都有提供。在注册登记阶段,每一个说话者将使用该系统表示的短语或长句的实例(用于文本依赖验证)。例如,一分钟的段落或者文本独立的确认或识别。使用输入构造出在i-矢量的说话者空间模型。在测试阶段,被测试的表达方式映射到i-矢量空间并与说话者模型进行比较后作出判断。
希望大家很快就能使用这些API,如果你想查看关于在牛津计划中用到的其它技术的文章,请反馈给我们。
参考文献:
【1】NajimDehak, Patrick Kenny, Pierre Dumouchel, Reda Dehak, Pierre Ouellet, «Front-endfactor analysis for speaker verification » in IEEE Transactions on Audio,speech and Language Processing 2011.
【2】Simon J.D. Prince, James H. Elder, «Probabilistic lineardiscriminant analysis for inference about identity » in Proceedings ICCV 2007.
【3】Anthony Larcher, Kong Aik Lee, Bin Ma, Haizhou Li, «Text-dependent speaker verification: Classifiers, databases and RSR2015»in Speech Communication, (60), 2014.
最后,小编还有一个呼吁:
立即访问http://market.azure.cn
微软牛津计划——声纹识别与视频识别API上线啦!的更多相关文章
- MicrosoftProjectOxford 微软牛津计划
光学字符识别 上传本地图片或者提供一个图片URL,查看光学字符识别的演示. 视觉特征分析 上传本地图片或者提供一个图片URL,查看视觉特征分析的演示. 缩略图 上传本地图片或者提供一个图片URL,查看 ...
- 【年度开源、工具合集】牛津计划,DMTK,Graph Engine…提高你的工作效率!
本篇合集包括以下三个部分的内容: 1.微软亚洲研究院过去一年的所有开源合集,如分布式机器学习工具包DMTK等. 2.利用微软研究院的技术提高工作效率的工具合集,如让没有机器学习背景的开发人员也能开发出 ...
- 微软在Build 2016开发者大会中发布 “认知服务”,牛津计划有正式名字啦!
2016年3月30日:微软在Build 2016开发者大会中发布“认知服务”. 在Build 2016开发者大会中,微软发布了新的智能服务:微软认知服务(Microsoft Cognitive Ser ...
- 脸识别API微软牛津项目
微软牛津项目人脸识别API初探 按照董子的这篇博客中的介绍,到微软牛津项目的网站申请到测试用的人脸识别Key,按照官方文档的介绍,把wpf项目建好之后,按照一步步的流程下来就可以完成example中的 ...
- 微软牛津项目人脸识别API初探
按照董子的这篇博客中的介绍,到微软牛津项目的网站申请到测试用的人脸识别Key,按照官方文档的介绍,把wpf项目建好之后,按照一步步的流程下来就可以完成example中的功能了.但是这仅仅是个examp ...
- 记录参加“牛津计划.Docker在线黑客松”比赛的过程
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 使用javacv录像,同时进行讯飞声纹认证
由于最近的demo中需要在活体检测的同时进行音视频录制 , 尝试使用MediaRecord和camera来录制视频 , 然而Camera.onPreviewFrame 不能与 MediaRecord ...
- 基于Deep Learning 的视频识别方法概览
深度学习在最近十来年特别火,几乎是带动AI浪潮的最大贡献者.互联网视频在最近几年也特别火,短视频.视频直播等各种新型UGC模式牢牢抓住了用户的消费心里,成为互联网吸金的又一利器.当这两个火碰在一起,会 ...
- CVPR2020:扩展架构以实现高效的视频识别(X3D)
CVPR2020:扩展架构以实现高效的视频识别(X3D) X3D: Expanding Architectures for Efficient Video Recognition 论文地址: http ...
随机推荐
- C回调函数
转自:https://segmentfault.com/a/1190000008293902?utm_source=tag-newest 在面试的时候被问到什么是回调函数,我是属于会用但不懂概念的那类 ...
- 命令行下class redis not found 解决
1.在命令行下输入 php --ini 2.在浏览器中查看 phpinfo() 可以看出,我 的phpinfo和命令行的就不是一个php.ini文件.因为我有几个版本的php , 并且在环境变量中配 ...
- Math.round、Math.floor、Math.ceil 区别
1.Math.round() 按照四舍五入的方式返回值 例如:Math.round(9.5)=10 Math.round(9.4)=9 2.Math.floor()返回最小整数 例如:Math. ...
- Github提交PullRequest
Github提交PullRequest工作流程: 以Kubernetes为例 1. Fork Kubernetes到自己的Github目录 访问:https://github.com/kubern ...
- JSON中的坑
坑一. 在使用localStorage时,我们会给一个key存取一个value,这个value可以是一个普通的字符串,也可以是一个对象,如果是一个字符串,我们就需要通过JSON.stringify来转 ...
- 【ExtJS】一些基本概念的梳理
学习ExtJS有一段时间了,一些相关知识点虽然每天都在用,不过如果猛的一问起来还是会一愣,趁现在好好梳理下吧.长期修改添加,弄清楚什么就加入什么. 1.Ext.onReady(): onReady() ...
- Android文字识别之tesseract的使用
关于tesseract识别工具有Google提供的版本有tesseract-android-tools,不过还有一个tesseract-two也是非常好用的,这里我们使用的是tesseract-two ...
- 九度oj 1002 Grading 2011年浙江大学计算机及软件工程研究生机试真题
#include<iostream> #include<queue> #include<cstdio> #include<cstring> #inclu ...
- c++字符前面的L和_T
字符串前面加L表示该字符串是Unicode字符串._T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变.因此,Visual C++里边定 ...
- Java 基础(5)——数据转换 & 特殊的引用类型
数据转换 变量在第(3)篇中有讲到过八种数据类型,分别是能够用来表示整型的 byte.short.int.long 和表示浮点型的 float.double 以及字符型 char.布尔型 boolea ...