专栏首页CSDN博客基于Kersa实现的声纹识别
原创

基于Kersa实现的声纹识别

原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 本文链接:基于Kersa实现的声纹识别

基于Kersa实现的声纹识别

本项目是基于VGG-Speaker-Recognition开发的,本项目主要是用于声纹识别,也有人称为说话人识别。本项目包括了自定义数据集的训练,声纹对比,和声纹识别。

本教程源码:https://github.com/yeyupiaoling/Kersa-Speaker-Recognition

安装环境

本项目使用的是Python 3.7,Keras2.3.1和Tensorflow1.15.3,音频处理使用librosa库,安装方法如下。

1、安装Tensorflow GPU版本,CUDA为10.0,CUDNN为7。

pip install tensorflow-gpu==1.15.3

2、安装Keras。

pip install keras==2.3.1

3、安装librosa库,最简单的方式就是使用pip命令安装,如下。如安装的是librosa 0.6.3--0.7.2,依赖的是numba0.49.0,源码安装的时候要留意,否者会报错No module named numba.decorators

pip install pytest-runner
pip install librosa

如果pip命令安装不成功,那就使用源码安装,下载源码:https://github.com/librosa/librosa/releases/, windows的可以下载zip压缩包,方便解压。

pip install pytest-runner
tar xzf librosa-<版本号>.tar.gz 或者 unzip librosa-<版本号>.tar.gz
cd librosa-<版本号>/
python setup.py install

如果出现libsndfile64bit.dll': error 0x7e错误,请指定安装版本0.6.3,如pip install librosa==0.6.3

如果出现**audioread.exceptions.NoBackendError**错误,解决方法如下。

Windows: 安装ffmpeg, 下载地址:http://blog.gregzaal.com/how-to-install-ffmpeg-on-windows/,笔者下载的是64位,static版。

然后到C盘,笔者解压,修改文件名为 ffmpeg,存放在C:\Program Files目录下,并添加环境变量C:\Program Files\ffmpeg\bin

最后修改源码,路径为C:\Python3.7\Lib\site-packages\audioread\ffdec.py,修改32行代码,如下:

COMMANDS = ('C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe', 'avconv')

Linux: 安装ffmpeg。

sudo add-apt-repository ppa:djcj/hybrid
sudo apt-get update
sudo apt-get install ffmpeg  

配置环境变量。

export PATH=/usr/bin/ffmpeg:${PATH}

4、其他的依赖库自行安装。

自定义数据训练

本节介绍自定义数据集训练,如何不想训练模型,可以直接看下一节,使用官方公开的模型进行声纹识别。

数据获取

自定义数据列表格式如下,前面是音频的相对路径,后面的是该音频对应的说话人的标签,就跟分类一样。

dataset/ST-CMDS-20170001_1-OS/20170001P00001A0119.wav	0
dataset/ST-CMDS-20170001_1-OS/20170001P00001A0120.wav	0
dataset/ST-CMDS-20170001_1-OS/20170001P00001I0001.wav	1
dataset/ST-CMDS-20170001_1-OS/20170001P00001I0002.wav	1
dataset/ST-CMDS-20170001_1-OS/20170001P00001I0003.wav	1

1、本项目默认是支持Aishell,Free ST-Chinese-Mandarin-Corpus,THCHS-30,VoxCeleb2这4个数据集的,需要把他们下载并解压到dataset目录下,有一点要注意的是,VoxCeleb2数据集解压之后,把训练集和测试集里的aac目录下的文件夹都放在同一个VoxCeleb2目录下,他们的下载地址如下。

2、下载并解压完成之后,执行create_data.py生成数据列表,如何读者有其他自定义的数据集,可以参考这个文件中的代码,生成自己数据集的数据列表,其中delete_error_audio()函数是检查数据是否有错误或者过短的,这个比较耗时,如果读者能够保证数据没有问题,可以跳过这个函数。

训练

在执行训练之前,可能需要修改train.py中的几个参数。

  • gpu是指定是用那个几个GPU的,如何多卡的情况下,最好全部的GPU都使用上。
  • resume这个是用于恢复训练的,如何之前有训练过的模型,可以只用这个参数指定模型的路径,恢复训练。
  • batch_size根据自己显存的大小设置batch的大小。
  • n_classes是分类数量,这个可以查看上一步生成数据列表最后一个得到分类数量,但也记得加1,因为label是从0开始的。
  • multiprocess这个参数是指定使用多少个线程读取数据,因为读取音频需要比较慢,训练默认也是使用4个多线程训练的,所以如果使用多线程读取数据,就不要使用多线程读取数据,否则反之,Ubuntu下最好使用多线程读取数据。但是Windows不支持多个线程读取数据,在Windows下必须是0。
  • net参数是指定使用的模型,有两种模型可以选择,较小的resnet34s,和较大的resnet34l。

最后执行train.py开始训练,在训练过程中,每一步都会保存模型,同时也使用Tensorboard记录训练的logs信息。

预测

使用训练完成的模型,或者是官方提供的模型,笔者这里提供了国内的下载:点击下载,把模型存放在pretrained目录下。

本项目提供三种预测方案:

  • 第一种是声纹对比predict_contrast.py,即对比两个音频的声纹相似度,其中参数audio1_pathaudio2_path就是需要对比的音频路径,其他的参数需要跟训练的一致。
  • 第二种是录音识别predict_recognition.py,即通过录音识别说话的人属于声纹库中的那个,并输出说话人的名称和跟声纹库对比的相识度,同样其他的参数需要跟训练的一致。
  • 第三种是服务接口方式predict_server.py,即通过HTTP提供接口,通过网络请求注册或者识别声纹,还有也提供了在线录音识别的页面,但是在线录音只能在localhost下使用,否则只能是HTTPS协议才能调用chrome浏览器的录音功能。

声纹对比:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rA0JjbX6-1594777446873)(https://s1.ax1x.com/2020/07/15/UdpbXd.jpg)

录音声纹识别:

录音声纹识别

页面:

声纹识别服务

启动日志:

在这里插入图片描述

录音识别结果:

声纹识别服务

在线播放录音:

声纹识别服务

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用PaddlePaddle实现声纹识别

    本章介绍如何使用PaddlePaddle实现简单的声纹识别模型,首先你需要熟悉音频分类,没有了解的可以查看这篇文章《基于PaddlePaddle实现声音分类》

    夜雨飘零
  • 使用Tensorflow实现声纹识别

    本章介绍如何使用Tensorflow实现简单的声纹识别模型,首先你需要熟悉音频分类,没有了解的可以查看这篇文章《基于Tensorflow实现声音分类》。基于这个...

    夜雨飘零
  • 学界 | 只对你有感觉:谷歌用声纹识别实现定向人声分离

    「语音识别」已经跟随着手机语音助手和智能音箱的普及变成了普通人日常生活的一部分,然而尽管包括谷歌、微软在内的诸多公司纷纷宣称其模型可以在标准数据集上「词错率降低...

    机器之心
  • 基于FPGA的数字识别的实现

    现如今随着机器识别技术的日益成熟,在我们的日常生活中机器识别也随处可见。大家常见的有二维码识别,指纹识别,车牌识别等,这些技术已经相当成熟。还有现如今比较火的...

    FPGA开源工作室
  • 基于FPGA的数字识别的实现二

    对于FPGA识别数字的基本算法知识请查看《基于FPGA的数字识别的实现》一文,对于数字位置的实时跟踪的基本算法知识请查看《基于FPGA的实时移动目标的追踪》...

    FPGA开源工作室
  • 基于MTCNN和MobileFaceNet实现的人脸识别

    本教程是教程是介绍如何使用Tensorflow实现的MTCNN和MobileFaceNet实现的人脸识别,并不介绍如何训练模型。关于如何训练MTCNN和Mobi...

    夜雨飘零
  • 基于PyTorch实现MNIST手写字识别

    本篇不涉及模型原理,只是分享下代码。想要了解模型原理的可以去看网上很多大牛的博客。

    Awesome_Tang
  • 基于 Openpose 实现人体动作识别

    伴随着计算机视觉的发展和在生活实践中的广泛应用,基于各种算法的行为检测和动作识别项目在实践中得到了越来越多的应用,并在相关领域得到了广泛的研究。在行为监测方面,...

    AI科技大本营
  • 基于Pytorch实现的MASR中文语音识别

    MASR是一个基于端到端的深度神经网络的中文普通话语音识别项目,本项目是基于masr 进行开发的。

    夜雨飘零
  • [深度学习概念]·声纹锁与声纹识别技术原理解析

    声纹锁的工作原理是什么?声纹识别技术原理是怎样的?声纹锁也是智能门锁的新兴品种。利用声纹识别技术进行开锁,在门锁中也开锁得到了应用。声纹锁和指纹锁有着异曲同工...

    小宋是呢
  • Milvus 实战|生物多因子认证系列 (一):声纹识别

    声纹识别(又称说话人识别)是从说话人发出的语音信号中提取声纹信息,并对说话人进行身份验证的一种生物识别技术。简单来说,声纹识别技术可以“确认说话人是谁”。我们说...

    Zilliz RDS
  • 语音识别应用场景(3):声纹识别打造个性化语音指纹

    声纹识别最早是在40年代末由贝尔实验室开发,主要用于军事情报领域,随着该项技术的逐步发展,60年代末后期在美国的法医鉴定、法庭证据等领域都使用了该项技术,从19...

    用户7623498
  • Python基于Dlib的人脸识别系统的实现

    之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别。

    砸漏
  • 基于OpenCV与tensorflow实现实时手势识别

    基于OpenCV与tensorflow object detection API使用迁移学习,基于SSD模型训练实现手势识别完整流程,涉及到数据集收集与标注、V...

    OpenCV学堂
  • 学界 | 批训练、注意力模型及其声纹分割应用,谷歌三篇论文揭示其声纹识别技术原理

    机器之心
  • 声纹识别在智能家居中备受青睐,但还面临一些“困扰”

    镁客网
  • 深度学习-IMBD二分类问题

    IMBD自互联网电影数据库(IMDB)的50 000条评论数据。 分为训练集25000和测试25000 测试集合训练集的好评和差评按照1:1分配

    火星娃统计
  • 基于TensorFlow的CNN实现Mnist手写数字识别

    本文实例为大家分享了基于TensorFlow的CNN实现Mnist手写数字识别的具体代码,供大家参考,具体内容如下

    砸漏
  • 依图科技声纹识别权威竞赛夺冠,智能语音再下一城

    在奥地利召开的机器语音国际顶会 InterSpeech 2019 上,国际声纹识别权威竞赛 VoxCeleb Speaker Recognition Chall...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券