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

简介:
本文来自AI新媒体量子位(QbitAI)

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

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

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

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的文件格式都能实现。

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

 输入管道

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

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

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

3D卷积运算的实现

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

我们可以看到这里用到了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

【完】

本文作者:安妮 
原文发布时间:2017-06-26
相关文章
|
5月前
|
存储 自然语言处理 API
【网安AIGC专题11.1】12 CODEIE用于NER和RE:顶刊OpenAI API调用、CodeX比chatgpt更好:提示工程设计+控制变量对比实验(格式一致性、模型忠实度、细粒度性能)(下)
【网安AIGC专题11.1】12 CODEIE用于NER和RE:顶刊OpenAI API调用、CodeX比chatgpt更好:提示工程设计+控制变量对比实验(格式一致性、模型忠实度、细粒度性能)
57 0
|
3天前
|
API
大模型应用实战技巧:大模型说‘抱歉,我无法完成您的要求‘怎么办 - 你真的了解你给大模型的Prompt吗
大模型应用实战技巧:大模型说‘抱歉,我无法完成您的要求‘怎么办 - 你真的了解你给大模型的Prompt吗
12 0
|
5月前
|
存储 Java API
【网安AIGC专题11.7】17ASAP如何更好地改进少样本提示:在LLMs的prompt中添加语义信息,来提高代码摘要生成+代码补全任务的性能。CodeSearchNet数据集(下)
【网安AIGC专题11.7】17ASAP如何更好地改进少样本提示:在LLMs的prompt中添加语义信息,来提高代码摘要生成+代码补全任务的性能。CodeSearchNet数据集(下)
62 0
|
2月前
|
自然语言处理 知识图谱
RAG中用户问答的答案是大模型产生的吗?
RAG中,答案是大模型产生的,还是向量检索产生的?RAG是一种结合了大模型生成和向量检索的自然语言处理技术。它通过大模型生成答案的主体部分,并利用向量检索从知识库中获取相关的参考文本片段。这种结合使得RAG能够生成更丰富、更准确的答案。然而,随着技术的发展和应用场景的不断扩大,我们还需要进一步研究和解决RAG面临的一些挑战和问题。
237 2
|
5月前
|
存储 自然语言处理 Apache
【网安AIGC专题11.7】17ASAP如何更好地改进少样本提示:在LLMs的prompt中添加语义信息,来提高代码摘要生成+代码补全任务的性能。CodeSearchNet数据集(上)
【网安AIGC专题11.7】17ASAP如何更好地改进少样本提示:在LLMs的prompt中添加语义信息,来提高代码摘要生成+代码补全任务的性能。CodeSearchNet数据集(上)
59 1
|
5月前
|
存储 自然语言处理 API
【网安AIGC专题11.1】12 CODEIE用于NER和RE:顶刊OpenAI API调用、CodeX比chatgpt更好:提示工程设计+控制变量对比实验(格式一致性、模型忠实度、细粒度性能)(中)
【网安AIGC专题11.1】12 CODEIE用于NER和RE:顶刊OpenAI API调用、CodeX比chatgpt更好:提示工程设计+控制变量对比实验(格式一致性、模型忠实度、细粒度性能)
56 0
|
5月前
|
消息中间件 设计模式 Java
如何使用ChatGPT提升自己的“码”力?
经过我两个月的使用,我发现ChatGPT目前还完全无法替代程序员,尤其是在一些强上下文的编程场景下,比如一些重业务的编程场景。而在一些比较通用化的编程场景下,其展现出来的能力尚可。总结起来,我们程序员目前不必太担心ChatGPT抢我们饭碗的情况,但是可以利用它来完成一些编程相关的事,把它当做一个工具来大幅度提升我们的工作效率,下面是一些我总结的可以利用ChatGPT的一些场景,希望对大家有所帮助。
43 0
|
8月前
|
人工智能 自然语言处理 文字识别
Sam Altman:大家如此喜爱Code Interpreter!这是结合Midjourney的神奇用例
Sam Altman:大家如此喜爱Code Interpreter!这是结合Midjourney的神奇用例
|
10月前
|
机器学习/深度学习 自然语言处理 算法
【ChatGPT】一文教你怎么编写清晰有效的(Prompt)提示词~(一)
【ChatGPT】一文教你怎么编写清晰有效的(Prompt)提示词~(一)
|
10月前
|
Web App开发 JavaScript 前端开发
【ChatGPT】一文教你怎么编写清晰有效的(Prompt)提示词~(四)
【ChatGPT】一文教你怎么编写清晰有效的(Prompt)提示词~(四)