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

ops/2024/12/23 22:42:44/

前言

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

使用说话人日志

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

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

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}

显示结果图像如下,可以通过空格键控制播放音频,点击位置可以跳转音频到指定位置:
<a class=说话人日志" />

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

python infer_speaker_diarization_gui.py

可以打开这样一个页面,进行说话人识别:
在这里插入图片描述

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

  1. 安装字体
git clone https://github.com/tracyone/program_font && cd program_font && ./install.sh
  1. 执行下面Python代码
python">import matplotlib
import shutil
import ospath = 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


http://www.ppmy.cn/ops/144407.html

相关文章

教育版idea及jetbrains全家桶免费使用

教育版idea及jetbrains全家桶免费使用 1. 还会有哪些惊喜呢&#xff1f;2. 赶快跟我一起抄作业吧2.1 先注册idea账号。2.2. 紧接着开启edu大门。2.3. 随后教育邮箱会收到一个验证链接。2.4. 接着用刚注册idea账号的浏览器打开链接验证。2.5. 最后 idea 直接登录刚才注册的idea账…

【Http,Netty,Socket,WebSocket的应用场景和区别】

Http&#xff0c;Netty&#xff0c;Socket&#xff0c;WebSocket的应用场景和区别 Http、Netty、Socket、WebSocket都是网络通信领域中的重要技术和工具&#xff0c;它们在应用场景和特性上有所区别。以下是对这四种技术和工具的应用场景及区别的详细分析&#xff1a; Http的…

本地摄像头视频流在html中打开

1.准备ffmpeg 和(rtsp-simple-server srs搭建流媒体服务器)视频服务器. 2.解压视频流服务器修改配置文件mediamtx.yml ,hlsAlwaysRemux: yes 3.双击运行服务器。 4&#xff0c;安装ffmpeg ,添加到环境变量。 5.查询本机设备列表 ffmpeg -list_devices true -f dshow -i d…

如何访问和修改字典中的值?

在Python中&#xff0c;字典是一种非常灵活的内置数据结构&#xff0c;用于存储键值对。每个键都与一个值相关联&#xff0c;这使得字典成为管理数据的强大工具。理解如何访问和修改字典中的值是掌握Python的关键技能之一。以下内容将详细介绍如何在Python中操作字典&#xff0…

从 PDF 到 Word:一个简单的 PythonGUI转换器

在日常工作中&#xff0c;我们经常需要将 PDF 文档转换为 Word 文件。幸运的是&#xff0c;Python 提供了很多强大的库&#xff0c;帮助我们实现这一功能。今天&#xff0c;我将与大家分享如何使用 wxPython 创建一个简单的图形用户界面&#xff08;GUI&#xff09;应用程序&am…

Sql注入(靶场)26-30关

第二十六关 这关将逻辑运算符&#xff0c;注释符以及空格给过滤了 我们先使用单引号进行闭合 这时我们查看源代码可以看到这一关过滤了很多字符 可以看到这里将or and / -- # 空格等字符都被注释了 空格被过滤了我们可以使用()来代替&#xff0c;and和or可以使用双写来绕过 …

常用的缓存技术都有哪些

在计算机科学和软件开发领域&#xff0c;缓存技术是提高系统性能和响应速度 1. 本地缓存&#xff08;Local Cache&#xff09;&#xff1a; • 存在于应用程序本地内存中的缓存&#xff0c;用于存储频繁访问的数据&#xff0c;以减少对外部存储&#xff08;如数据库&#xff09…

vue项目两种路由模式原理和应用

两种模式的区别 路由&#xff0c;让页面url改变&#xff0c;但整个html页面不重新加载&#xff0c;单页面应用&#xff0c;局部刷新页面。 1. hash原理 通过动态锚点技术重写url&#xff0c;如“http://127.0.0.1/#/XXX”&#xff0c;改变#后面的路径&#xff0c;实现切换url…