基于Pytorch实现的说话人日志(说话人分离)

前言

VoiceprintRecognition_Pytorch 是博主开源的一款声纹识别框架,该框架支持EcapaTdnn、ResNetSE、ERes2Net、CAM++等多种先进的声纹识别模型,也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法,支持AAMLoss、AMLoss、ARMLoss、CELoss等多种损失函数。该框架支持多种关于声纹识别的处理,比如声纹对,比声纹检索,以及本文章需要介绍的说话人日志(说话人分离)。

使用说话人日志

关于模型的获取,开发者可以自己训练模型,也可以下载博主提供的模型。具体获取方法请去VoiceprintRecognition_Pytorch开源地址查看。这里只介绍如何使用该框架的说话人日志功能。

执行infer_speaker_diarization.py程序,输入音频路径,就可以分离出说话人,并显示结果,建议音频长度不要低于10秒。更多功能可以查看该程序参数。

shell 复制代码
python infer_speaker_diarization.py --audio_path=dataset/test_long.wav

输出类似如下,从日志里面可以看出,它不仅可以分离音频中每个说话人的说话位置,而且还能够识别是谁说了哪些话,不过这个是要提前注册的:

2024-10-10 19:30:40.768 | INFO     | mvector.predict:__init__:61 - 成功加载模型参数:models/CAMPPlus_Fbank/best_model/model.pth
2024-10-10 19:30:40.795 | INFO     | mvector.predict:__create_index:127 - 声纹特征索引创建完成,一共有3个用户,分别是:['沙瑞金', '夜雨飘零', '李达康']
2024-10-10 19:30:40.796 | INFO     | mvector.predict:__load_audio_db:142 - 正在加载声纹库数据...
100%|██████████| 3/3 [00:00<?, ?it/s]
2024-10-10 19:30:40.798 | INFO     | mvector.predict:__create_index:127 - 声纹特征索引创建完成,一共有3个用户,分别是:['沙瑞金', '夜雨飘零', '李达康']
2024-10-10 19:30:40.798 | INFO     | mvector.predict:__load_audio_db:172 - 声纹库数据加载完成!
识别结果:
{'speaker': '沙瑞金', 'start': 0.0, 'end': 2.0}
{'speaker': '陌生人1', 'start': 4.0, 'end': 7.0}
{'speaker': '李达康', 'start': 7.0, 'end': 8.0}
{'speaker': '沙瑞金', 'start': 9.0, 'end': 12.0}
{'speaker': '沙瑞金', 'start': 13.0, 'end': 14.0}
{'speaker': '陌生人1', 'start': 15.0, 'end': 19.0}

显示结果图像如下,可以通过空格键控制播放音频,点击位置可以跳转音频到指定位置:

项目同样提供了GUI界面的程序,执行infer_speaker_diarization_gui.py程序。更多功能可以查看该程序参数。

shell 复制代码
python infer_speaker_diarization_gui.py

可以打开这样一个页面,进行说话人识别:

注意:如果说话人名字是中文的,需要设置安装字体才能正常显示,一般情况下Windows无需安装,Ubuntu需要安装。如果Windows确实是缺少字体,只需要字体文件这里下载.ttf格式的文件,复制到C:\Windows\Fonts即可。Ubuntu系统操作如下。

  1. 安装字体
shell 复制代码
git clone https://github.com/tracyone/program_font && cd program_font && ./install.sh
  1. 执行下面Python代码
python 复制代码
import matplotlib
import shutil
import os

path = matplotlib.matplotlib_fname()
path = path.replace('matplotlibrc', 'fonts/ttf/')
print(path)
shutil.copy('/usr/share/fonts/MyFonts/simhei.ttf', path)
user_dir = os.path.expanduser('~')
shutil.rmtree(f'{user_dir}/.cache/matplotlib', ignore_errors=True)

其他版本

同时博主也开源了PaddlePaddle版本的,功能一致,如有需要可以说明这个地址:VoiceprintRecognition-PaddlePaddle

相关推荐
井底哇哇26 分钟前
ChatGPT是强人工智能吗?
人工智能·chatgpt
Coovally AI模型快速验证31 分钟前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
AI浩1 小时前
【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
人工智能·深度学习·计算机视觉·transformer
可为测控1 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
ℳ₯㎕ddzོꦿ࿐2 小时前
解决Python 在 Flask 开发模式下定时任务启动两次的问题
开发语言·python·flask
CodeClimb2 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
一水鉴天2 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
Channing Lewis2 小时前
什么是 Flask 的蓝图(Blueprint)
后端·python·flask
倔强的石头1062 小时前
解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘
人工智能·架构
B站计算机毕业设计超人2 小时前
计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫
大数据·hadoop·python·spark·课程设计·数据可视化·推荐算法