声纹识别资源汇总(不断更新)

2024-01-02 14:20

本文主要是介绍声纹识别资源汇总(不断更新),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、任务说明
  • 二、指标
  • 三、声纹识别研究现状
  • 四、数据集开源
    • (1)VoxCeleb:
    • (2)WSJ and LibriSpeech Corpus
    • (3)VOiCES Dataset
    • (4)English Multi-speaker Corpus for Voice Cloning
  • 五、开源代码
    • 1、Alize
    • 2、MSR Identity Toolkit
    • 3、d-vector
    • 4、LSTM with GE2E loss
    • 5、y-vector

调研关键词:Speaker Recognition/Identification/Verification/diarization

一、任务说明

Speaker Recognition是一个大方向,包含说话人验证(speaker verification),说话人辨认(speaker identification),说话人分离(diarization)等小方向,本项目中需要的是说话人辨认这个方向。
speaker identification的概念就是拍段一段语音是谁所说,说话人辨认分为开集辨认和闭集辨认,当确定说话人在注册声纹库里时,是一个N选一的有限范围选一个的闭集任务,当不确定当前音频是否在注册声纹库里时,是一个开集任务。开集比闭集的要难很多。(需要明确到底是开集辨认还是闭集辨认)

在这里插入图片描述

二、指标

参考链接:添加链接描述

三、声纹识别研究现状

声纹识别搜索关键词:Speaker Recognition/Identification/Verification
声纹识别有三个阶段:

  • machine learning:最佳基线模型iVector
  • deep learning:bottleneck feature、d-vector、x-vector、j-vector
  • attention mechanism、Learning to rank
    在这里插入图片描述
    声纹识别的主要问题在于语音时长、文本无关、开集比对、背景噪声等问题上。目前基于d-vector、x-vector的深度学习模型和TE2E/GE2E等的损失函数设计在短时长上比较占优势。传统方法的state-of-the-art是i-vector,采用pLDA信道补偿算法,所有基于深度学习的模型都会引用ivector的ERR作为baseline进行比对。以前的方法有UBM-GMM和JFA信道补偿,但是需要大量的不同信道的语料样本。传统方法的相关开源框架有Kaldi、ALIZE、SIDEKIT、pyannote-audio等。深度学习的方法有d-vector、x-vector、j-vector(文本有关)以及结合E2E损失函数的模型。还有基于GhostVlad和直接基于wave信号的SINCNET。

四、数据集开源

(1)VoxCeleb:

1、属于完全的集外数据集 in the Wild,音频全部采自YouTube,是从网上视频切除出对应的音轨,再根据说话人进行切分;
2、属于完全真实的英文语音;
3、数据集是文本无关的;
4、Speakers总数1,251,句子总数153,516,时长总数351h;
5、每句平均时长8.2s,最大时长145s,最短时长4s,短语音较多;
6、每人平均持有句子116句,最大持有250句,最小持有45句;
7、数据集男女性别较均衡,男性有690人(55%),女性有561人;
8、采样率16kHz,16bit,单声道,PCM-WAV音频格式;
9、语音带有一定真实噪声,非人造白噪声,噪声出现时间点无规律,人声有大有小;
10、噪声包括:环境突发噪声、背景人声、笑声、回声、室内噪音、录音设备噪音;
11、视频场景包括:明星红地毯、名人讲台演讲、真人节目访谈、大型体育场解说;
12、音频无静音段,但不是VAD的效果,而是截取了一个人的完整无静音音频片段;
13、说话人范围广泛,具有多样的种族,口音,职业和年龄;
14、数据集自身以划分了开发集Dev和测试集Test,可直接用于Speaker Verification(V),测试集共676句;
15、做SV的话,可参考voxceleb1_txt这个文件夹的信息,里面的Eartha_Kitt、Eddie_Griffin……Ezra_Miller等等E字母开头的speakers都是被划分为test,其他字母开头的speakers是被划分为dev;
链接:https://www.robots.ox.ac.uk/~vgg/data/voxceleb/
模型:Deep-Speaker就是基于这个数据集

(2)WSJ and LibriSpeech Corpus

数据采集自有声书网站,首先对每个句子做一遍语音识别,识别模型使用WSJ示例中的声学模型,语言模型使用二元文法,语言模型数据为语音数据对应的电子书文本。根据识别结果,统计每个说话人的WER,从低到高排序,前一半标记为clean,表示这些说话人语音比较清晰,其余标记为other。该数据集是包含大约1000小时的英语语音的大型语料库。这些数据来自LibriVox项目的有声读物。它已被分割并正确对齐,如果你正在寻找一个起点,请查看已准备好的声学模型,这些模型在kaldi-asr.org和语言模型上进行了训练,适合评估。
Link:https://www.openslr.org/12
使用该数据集的模型:d-vector

(3)VOiCES Dataset

发布时间:2018年
时长:总共15小时(3903个音频文件)
参与人数:300人
这个数据集是在复杂的环境设置(声音)语料库掩盖的声音呈现在声学挑战性条件下的音频记录。录音发生在不同大小的真实房间中,捕捉每个房间的不同背景和混响轮廓。各种类型的干扰器噪声(电视,音乐,或潺潺声)同时播放干净的讲话。在房间内精心布置的12个麦克风在远处录制音频,每个麦克风产生120小时的音频。为了模仿谈话中的人类行为,前景扬声器使用电动平台,在记录期间旋转一系列角度。
三百个不同的扬声器从LibriSpeech的“干净”的数据子集被选择作为源音频,确保50-50女性男性分组。在准备即将到来的数据挑战时,语音语料库的第一次发布将只包括200个发言者。剩下的100个发言者将被保留用于模型验证;一旦数据挑战赛被关闭,完整的语料库(300个发言者)将被释放。除了完整的数据集之外,我们还提供了一个DEV集合和一个迷你DEV集合。两者都保持了语音语料库的数据结构,但都包含了一小部分数据。DEV集包括四个随机选择的扬声器(50-50个女性男性分组)的音频文件,用于ROM-1中记录的数据。这包括所有12个麦克风的数据。迷你开发套件仅包括一个扬声器、一个房间(1号房间)和录音棚话筒.
LINK: https://voices18.github.io/downloads/
https://huggingface.co/datasets/librispeech_asr

(4)English Multi-speaker Corpus for Voice Cloning

这个CSTR VCTK语料库包含109个以不同口音的英语为母语的人的语音数据。每个说话者朗读大约400个句子,其中大部分是从报纸上选出来的。所有的语音数据记录使用相同的录音设置:一个全向头戴式麦克风(DPA 4035), 96kHz采样频率,在爱丁堡大学的半消声室。所有录音转换为16位,根据STPK下采样到48 kHz
Link:https://www.kaggle.com/datasets/mfekadu/english-multispeaker-corpus-for-voice-cloning/data
模型:LSTM with GE2E loss、y-vector

五、开源代码

1、Alize

主要包括GMM-UBM、i-vector、JFA三种传统的方法,C++版,简单易用。
可以用来生成基线算法。
Link:https://alize.univ-avignon.fr/

2、MSR Identity Toolkit

微软开源的工具箱,MATLAB版本,包含GMM-UBM和i-vector的demo,简单易用。
Link:https://www.microsoft.com/en-us/research/publication/msr-identity-toolbox-v1-0-a-matlab-toolbox-for-speaker-recognition-research-2/

3、d-vector

Data: WSJ and LibriSpeech Corpus
Link: https://github.com/rajathkmp/speaker-verification
(一个简单的教程)https://medium.com/saarthi-ai/using-d-vector-for-speaker-recognition-and-diarization-4a3450dd8a01

4、LSTM with GE2E loss

https://www.kaggle.com/code/mnitin59/tensorflow-speaker-verification

5、y-vector

Link:https://www.kaggle.com/code/mariasamorodova/y-vector-identification
https://github.com/gzhu06/Y-vector

Link:https://github.com/Janghyun1230/Speaker_Verification
Paper: https://arxiv.org/pdf/1710.10467.pdf
一个很好地代码:有噪声
https://www.kaggle.com/code/auishikpyne/speaker-identification/notebook
一些代码资源(之后逐个排查)
http://www-lium.univ-lemans.fr/sidekit/
https://alize.univ-avignon.fr/
http://www.kaldi-asr.org/
https://github.com/rajathkmp/speaker-verification
https://github.com/wangleiai/dVectorSpeakerRecognition
https://github.com/Janghyun1230/Speaker_Verification
https://github.com/pyannote/pyannote-audio
https://github.com/WeidiXie/VGG-Speaker-Recognition
https://github.com/mravanelli/SincNet

resemblyzer
这个里面有一个demo 02识别了一个youtube视频中的三个人的声音
有一个演示视频,感觉效果很不错
在这里插入图片描述

这篇关于声纹识别资源汇总(不断更新)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/562702

相关文章

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映