注意,本项目经过测试,只能用于无背景音乐下的声纹识别,背景音乐会对结果有很大影响
本项目参考:https://github.com/yeyupiaoling/VoiceprintRecognition-Pytorch
B站:https://www.bilibili.com/video/BV18F41177jb
YouTube:https://youtu.be/XV9NwpnLPGo
数据集地址:https://github.com/fighting41love/zhvoice
自己下载下来后,把里面所有的压缩文件都进行解压,解压后结构如下,test_list.txt
和 train_list.txt
是后面生成的,先不管,注意这些训练数据要放到 data
文件夹下。
├── info
├── metadata.csv
├── readme.md
├── sample
├── test_list.txt
├── text
├── train_list.txt
├── zhaidatatang
├── zhaishell
├── zhbznsyp
├── zhmagicdata
├── zhprimewords
├── zhspeechocean
├── zhstcmds
└── zhthchs30
然后我们可以输入 python create_data.py
来对数据集进行处理,这里主要会进行两个操作,第一个是把mp3转换为wav的格式(这个操作比较耗时,可能需要几天),并生成对应的训练数据集文本和测试数据集的文本。第二个是会把一些没用的音频数据删除。
所有的配置信息都在 train.py
里面,自己看着改就可以了,默认情况下不需要改动。
使用 python train.py
就可以开始训练了(RTX3060大概要训练6天时间)
使用 python eval.py
可以计算阈值信息,因为我们是通过余铉距离来计算的进行对比时会得出一个分数,当大于这个分数的时候才可以认为是同一个人。运行后输出的结果如下:
开始提取全部的音频特征...
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5332/5332 [02:02<00:00, 43.48it/s]
开始两两对比音频特征...
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5332/5332 [01:52<00:00, 47.41it/s]
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:05<00:00, 19.94it/s]
当阈值为0.660000, 准确率最大,为:0.999952
python main.py
参考:https://stackoverflow.com/questions/48690984/portaudio-h-no-such-file-or-directory
ubuntu20.4 可以参考
sudo apt install portaudio19-dev python3-pyaudio