总结了一波Kaldi中声纹识别的流程和所用的可执行文件,.

把可执行文件当作一个库来用,自己来仿照这sre08,sre10,或者aishell的run.sh用自己的数据来完成自己的声纹识别系统就好.

自己还在研究,但是说几个我认为比较关键的地方:

1.

gmm-gselect : 对每帧选择能取得最高likelihood的前n个分量, 其他的分量忽略. 返回的是这些分量的索引,后面计算的时候对于每帧只用这些索引的高斯分量进行统计量计算.减少计算过程和时间.

详细理论参考 :GMM-UBM论文

2.

计算ivector 时,因为ivector的计算公式为:

首先需要两个统计量,分别式零阶的统计量和一阶的统计量

如最下的流程图所示:

1. 零階統計量相關的操作 : fgmm-global-gselect-to-post 和scale post

fgmm-global-gselect-to-post  输入是协方差全矩阵的features 以及 所选择的高斯分量,输出是对所选择的高斯分量的后验概率,这样的话,原本后言概率的矩阵是  frames 长度*高斯总分量,现在变成了 长度*select过的高斯分量的个数

scale-post 乘上一個系數0 ~ 1的系數 控制連續的,繼承的特徵高度相關,因爲這兩步是維了去計算0階統計量,對角線都是後驗概率的協方差矩陣. 所以這裏可能可能是跟T矩陣的原因有關? 因爲我們知道T矩陣lowrank,這裏是否來控制冗餘??? (这里我猜测)

上面是爲了計算零階統計量的操作,即N(u)就是對每個分量,每個frame計算gamma和

2. Ivector 的計算,T矩陣的計算:

ivector-extractor.h中一些變量的解析和理解
首先確定kaldi與輪中中對一些參數的變量的名字是不一樣的,這裏的D,I,S分別代表着mfcc特徵的維度,高斯的分量數以及ivector的維度,公式中分别式  F,C, I
 
//  D is the feature dim (e.g. D = 60)
//  I is the number of Gaussians (e.g. I = 2048)
//  S is the ivector dim (e.g. S = 400)

首先是 weight projection vector,因爲default 訓練ivector的extractor時:use_weights=false # set to true to turn on the regression of log-weights on the ivector
所以先不管它,表示是權重投影矩陣 那麼
Vector<double> w_vec_ 表示UBM的高斯分量的權重

std::vector<Matrix<double> > M_; 是ivector中最關鍵的元素,公式M=m+Tw中,M_就是T, 它是一個映射矩陣,能把高斯統計量映射到低緯度說話人表徵 i-vector,起到降維的作用. 它只用於表徵說話人變化,不帶有信道與噪聲變化.
它的維度是[ID,S]維矩陣, S要遠遠小於ID,V<<ID.

ivector=(Identity_matrix+T^(transpose)*sigma^(-1)*零階統計量*T)^(-1)*(T^(transpose)*sigma^(-1)*一階統計量)

std::vector<SpMatrix<double> > Sigma_inv_; 經過MAP的GMM-UBM說話人模型的協方差矩陣的^-1
上面ivector中的sigma^(-1)就是該值,通過公式,其實他的維度應該是 [ID,ID]維度,但kaldi中的[ID,D]維度有點怪

Matrix<double> U_;通過 上面公式所得的一個推到出來的變量 =T^transpose * sigama^-1 * T
自己把这些维度照着公式带入就好,N(u)是[ID,ID]维度,F(u)是[ID,1]

3.

因爲在论文中ivector假設一個人的所有語音都是由不同的人產生的,

ivector-extract是去extract每一個utterance的ivector
所以在kaldi中,它對每個音頻都有一個ivector,
所以在最後提取ivector中
會有
    ivector-normalize-length scp:$dir/ivector.scp  ark:- \| \
    ivector-mean ark:$data/spk2utt ark:- ark:- ark,t:$dir/num_utts.ark \| \
    ivector-normalize-length ark:- ark,scp:$dir/spk_ivector.ark,$dir/spk_ivector.scp || exit 1;
目的是
首先先對每個音頻的ivector進行標準化處理,然後根據spk2utt文件,對所有來自與同一個人的音頻的ivector進行平均處理
然後再標準化 得到最終的屬於每一個人的ivector.

参考论文: Ivector定义

后续还会整理和更新

有问题的地方请各位大大们提出

Kaldi中 声纹识别的流程图相关推荐

  1. kaldi中的声纹识别

    kaldi中的声纹识别 文章目录 kaldi中的声纹识别 kaldi的安装 运行aishell例程 使用TIMIT数据库进行声纹识别 kaldi中声纹识别的流程 我的博客:https://yutouw ...

  2. 深度学习声纹识别_kaldi/语音识别ASR/声纹识别SRE/资源汇总

    化 按时间顺序降序排列,最新内容在最上面 最下方有一些我通过各方渠道偶然得知的技术交流qq群,感兴趣可以加入 刘斌总结的学习资源,中科院自动化所博士生,研究方向为鲁棒性声学建模. [语音识别]从入门到 ...

  3. 探秘身份认证利器——声纹识别!

    在这个移动互联网大行其道的年代,人们不用互相见面就可以完成很多事情,比如社交.购物.网上开店.金融交易等等,但是如何验证身份变成了人和人在不见面的情况下最难的事情.传统的解决方案就是密码或者秘钥,它需 ...

  4. 说话人识别(声纹识别)综述

    目录 声纹识别背景介绍 声纹识别组成 数据 特征 模型 评价指标 声纹识别目前的挑战 参考文献 声纹识别背景介绍 声纹识别,也称作说话人识别,是一种通过声音判别说话人身份的技术.在现实生活中声纹识别的 ...

  5. python声纹识别_【kaldi学习.4】Aishell V1(说话人识别、声纹识别)中的run.sh详解...

    下面打算用aishell来做声纹识别,在做声纹识别之前,肯定是要对run.sh这个文件做个深入的了解,才可以继续往下走,接下来会记录如何修改run.sh去运行自己的数据,而不是手动输入自己的数据... ...

  6. 从《人民的名义》看声纹识别技术在案件侦查中的应用

    被号称为"史上最大尺度反腐剧"的<人民的名义>即将收官,播出期间,该剧一直备受好评.除了曲折的故事情节之外,该剧最大的看点就是公安机关曲折的案件侦查过程,只不过因为剧中 ...

  7. 详解声纹识别:如何正确评价小度在最强大脑中战平人类?|独家解析

    雷锋网按:作者陈孝良,博士,声智科技创始人,曾任中科院声学所副研究员和信息化办公室主任,中科院上海高等研究院客座,北京市公安局首届网络应急专家,主要从事声学信号处理和 GPU 深度学习算法研究工作.本 ...

  8. 声纹识别(说话人识别)技术

    说话人识别(Speaker Recognition,SR),又称声纹识别(Voiceprint Recognition,VPR),顾名思义,即通过声音来识别出来"谁在说话",是根据 ...

  9. [深度学习概念]·声纹识别技术简介

    声纹识别技术简介 声纹识别,也称作说话人识别,是一种通过声音判别说话人身份的技术.从直觉上来说,声纹虽然不像人脸.指纹的个体差异那样直观可见,但由于每个人的声道.口腔和鼻腔也具有个体的差异性,因此反映 ...

最新文章

  1. 明日开播 | 7 场不可错过的 AI 技术专题
  2. 程序员老司机“随意开车”,恶搞代码让你分分钟玩死程序员!
  3. 『求助』请求服务器超时或失败问题
  4. matlab路面,赛道道路路况分析问题 matlab高手进下
  5. ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 第7章)
  6. SAP 电商云 Spartacus UI product 明细页面的路由配置
  7. correct ways to define variables in python
  8. 不选择互联网行业,学弟学妹可以选择这些新兴科技行业发展!
  9. python实现将文件夹下文件随机移动指定数量到另一个文件夹下
  10. reids的持久化 RDB和AOF
  11. 软件测试测试 python_Python测试简介
  12. 【1024】我的CSDN博客之路,感谢CSDN,我们一路同行!深度学习系列专栏回顾
  13. 下载并还原AdventureWorksDW2012数据库
  14. Ubuntu赋予root权限
  15. 阿里巴巴商品详情API接口(item_get-获得商品详情接口),阿里巴巴API接口
  16. 微服务轮子项目(45) -Jenkins自动化部署
  17. BCM ESW芯片和Marvell CAT芯片的比较
  18. TensorFlow学习笔记02:使用tf.data读取和保存数据文件
  19. 电子商务(电销)平台中订单模块(Order)数据库设计明细
  20. android es file下载,es文件浏览器下载安装

热门文章

  1. ribbonmq超时配置_使用RabbitMQ实现订单超时取消(延迟队列)
  2. 基于springboot的ShardingSphere5.2.1的分库分表的解决方案之数据加密之RSA的解决方案(九)
  3. 【超快捷】Windows系统自带的快捷键合集
  4. ThingWorx中的Date操作
  5. vue项目 - 封装loding组件
  6. unity简单技能系统
  7. Python+OpenGL绘制任意长度和次数的B样条曲线
  8. kivy部署移动端预测模型网页计算器记录
  9. ubuntu16.04 安装显卡驱动
  10. window.print() 表格打印 完美实现分页