如何用3D-CNN确认说话人身份?这里有Code+Paper

安妮 编译自 Github 量子位出品 | 公众号 QbitAI

说话人确认(Speaker Verification)是一种以语言特性确认说话人身份的技术。

近日,西弗吉尼亚大学的博士生Amirsina Torfi在Github上发布了用3D卷积神经网络(后简称3D-CNN)确认说话人身份的代码,并公布了研究论文。

Paper链接:

https://arxiv.org/abs/1705.09422

Code链接:

https://github.com/astorfi/3D-convolutional-speaker-recognition

概览

我们先利用3D卷积结构创造出说话人模型(Speaker model),它可以从说话人的表达中同时捕捉相关语音和时态信息。

说话人确认协议(SVP)

3D-CNN架构已经被利用在文本无关(Text-Independent)语句确认说话人的三个阶段:

1.在开发阶段,经过训练的CNN可以在表达层面将说话人分类。

2.在注册阶段,训练过的网络可以基于提取特征构建每个说话人的模型。

3.评估阶段中,从表达文本中提取的特征将会与存储的说话人模型做对比,最后验证说话人身份。

我们通常将上述提及的三个阶段视为SVP(Speaker Verification Protocol),构建说话人模型是目前的技术难点。之前的方法大多基于说话人的表达平均提取特征,也就是我们熟知的d-vector系统。

如何利用3D卷积神经网络

在本篇论文中,我们建议用3D-CNN直接创建开发和注册阶段的说话人模型,这两个阶段输入的是相同语句。这样网络就能够同时捕捉相关说话人信息,建立更强大的系统处理语音变化。这种方法明显优于d-vector验证系统。

代码实现

这个模型是在TensorFlow上实现的,输入管道(Input pipeline)需要由用户提供。其余部分的实现需要考虑包含了表达提取特征的数据集,它一般存储在HDF5的文件夹中。但这点也不是必须的,通过下面的代码,任何适应TensorFlow的文件格式都能实现。

输入管道

MFCC(Mel频率倒谱系数)特征可以作为框架级语音表达的数据表示,但最后生成MFCC的DCT 1运算会导致这些特征成为非局部特征。这一操作扰乱了局部性,也与卷积操作中的局部特征形成了鲜明的对比。

在这里我们就用到了对数能量,我们也称它为MFEC。MFEC中提取的特征与丢弃DCT运算得到的特征相似,它们的时间特征是重叠的20ms窗口,跨度为10ms,这是为了生成频谱特征。

在一个0.8秒的声音样本中,可以从输入语音特征图中获得80个时间特征集合(每个都组成40个MFEC特征)。每张输入特征图的维度是ζ×80×40,它们由80个输入帧和相似的图谱特征组成,ζ代表在开发和注册阶段用到的语句数量。

3D卷积运算的实现

下面这段代码已经可以实现三维卷积运算,这些高级的slim API使我们实现起来非常简单。

我们可以看到这里用到了slim.conv2d代码块,[k_x, k_y, k_z] 和stride=[a, b, c]这样的3D内核可以将它转化为3D-conv操作。 tf.contrib.layers.conv2d是slim.conv2d的基础。

灵感来源

代码结构部分的灵感来源自Slim和Slim的图像分类库。

相关Code:

https://github.com/tensorflow/models/tree/master/slim

原文发布于微信公众号 - 量子位(QbitAI)

原文发表时间:2017-06-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习入门与实践

【深度学习系列】用PaddlePaddle进行人脸识别

上个案例中我们讲了如何用PaddlePaddle进行车牌识别的方法,这次的案例中会讲到如何用PaddlePaddl进行人脸识别,在图像识别领域,人脸识别也属于...

4058
来自专栏AI科技大本营的专栏

手动特征工程已经OUT了!自动特征工程才是改进机器学习的方式

【导读】近年来,我们在自动模型选择和超参数调优方面取得了进展,但机器学习流程中最重要的方面-- 特征工程,在很大程度上被我们所忽略。在本文中,我们将使用 Fea...

1683
来自专栏AI研习社

用 TensorFlow 目标检测 API 发现皮卡丘!

在 TensorFlow 众多功能和工具中,有一个名为 TensorFlow 目标检测 API 的组件。这个库的功能正如它的名字,是用来训练神经网络检测视频帧中...

1275
来自专栏AI研习社

AI 玩微信跳一跳的正确姿势——跳一跳 Auto-Jump 算法详解

最近,微信小游戏跳一跳可以说是火遍了全国,从小孩子到大孩子仿佛每一个人都在刷跳一跳,作为无(zhi)所(hui)不(ban)能(zhuan)的 AI 程序员,我...

3918
来自专栏量子位

OpenAI发布新强化学习算法:近端策略优化

允中 编译自 blog.openai.com 量子位 出品 | 公众号 QbitAI OpenAI今天发布一类新的强化学习算法:近端策略优化(Proximal ...

3355
来自专栏腾讯大数据的专栏

深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用

深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用。DNN具有深层结构、数千万参数需要学...

2607
来自专栏机器之心

教程 | AI玩微信跳一跳的正确姿势:跳一跳Auto-Jump算法详解

39411
来自专栏月色的自留地

从锅炉工到AI专家(2)

1814
来自专栏顶级程序员

人工智能“鉴黄师”

最近,雅虎利用分类神经网络搭建了一套可以辨别Not Suitable for Work(上班不宜,以下简称NSFW)色情图片的Caffe模型,并将源码搬上了gi...

2989
来自专栏机器学习之旅

Google团队在DNN的实际应用方式的整理

很荣幸有机会和论文作者Emre Sargin关于之前发的Deep Neural Networks for YouTube Recommendations进行交流...

1232

扫码关注云+社区