当前位置: 首页 > news >正文

基于3D-Speaker进行区分说话人项目搭建过程报错记录 | 通话录音说话人区分以及语音识别 | 声纹识别以及语音识别 | pyannote-audio

0. 研究背景

在外呼系统中,我们的后台管理系统通常要对电话录音的内容进行提取和分析。那么说到分析,我们就要对录音中的两个人的对话进行分离,然后分别分析,比如分析客户是否有合作的意愿,分析客服讲的话术是否合理,分析客户情绪等等。那么这里就需要首先做说话人的分离。目前市面上有众多的说话人分离开源项目,其它国内比较知名的是阿里巴巴旗下的3D-Speaker

为了测试3D-Speaker看看能否对电话录音中的说话人分离情况,自己租了一台服务器,然后进行搭建,下面是我的搭建过程,本篇文章主要记录我搭建过程中遇到的一些问题,以及最后测试的情况。

1. 环境介绍

OS: Ubuntu Server 22.04

Python: 3.11

2. 开始搭建

创建环境

conda create -n spk python=3.11
conda activate spk

克隆源码

git clone https://github.com/modelscope/3D-Speaker.git
cd 3D-Speaker

安装依赖

pip install -r requirements.txt

注意:我实际在安装过程中修改了这个文件,把scikit-learn删除了,因为不删除,在安装过程中会报错,需要通过conda命令安装。

conda install scikit-learn

此外还需要安装下面依赖

cd egs/3dspeaker/speaker-diarization
pip install requirements.txt

注意:我实际在执行之前删掉了里面的一些依赖,有些依赖安装过程中报没有找到。打开这个文件,我删除了pyannote的依赖,然后手动安装了pyannote-audio。还有,在实际安装过程中会报numba问题,是因为这个文件中规定了版本,所以需要把文件中的版本号删掉。

pip install pyannote-audio

此外还有一些依赖需要手动安装

pip install onnx simplejson datasets==2.20.0 pydub onnxconverter_common

3. 测试

运行下面代码来测试

from speakerlab.bin.infer_diarization import Diarization3Dspeaker
wav_path = "audio.wav"
pipeline = Diarization3Dspeaker()
print(pipeline(wav_path, wav_fs=None, speaker_num=None)) # can also accept WAV data as input

但是经过测试发现对这个audio.wav录音不没有正确区分说话人。

4. 优化

目前试过使用cam++以及使用pyannote-audio都未能正常区分出通话录音中的每个说话人。于是自己根据常规做法,先通过vad算法获取到每段声音的时间戳,然后对其每个音频片段计算声纹特征值向量,然后通过无监督聚类算法对其声纹特征相似的片段聚类。

最终实现了通话录音区分说话人的语音识别。

5. 其它

更多内容欢迎访问我的博客

说话人识别GUI程序可访问我的淘宝

相关演示视频,可在我的B站《编程分享录》

个人github代码仓库,可访问这里

相关文章:

基于3D-Speaker进行区分说话人项目搭建过程报错记录 | 通话录音说话人区分以及语音识别 | 声纹识别以及语音识别 | pyannote-audio

0. 研究背景 在外呼系统中,我们的后台管理系统通常要对电话录音的内容进行提取和分析。那么说到分析,我们就要对录音中的两个人的对话进行分离,然后分别分析,比如分析客户是否有合作的意愿,分析客服讲的话术是否合理&…...

如何使用流式渲染技术提升用户体验

提示:记录工作中遇到的需求及解决办法 文章目录 什么是流式渲染?Node.js 实现简单流式渲染声明式 Shadow DOM,不依赖 javascript 实现react 实现流式渲染总结提示:以下是本篇文章正文内容,下面案例可供参考 什么是流式渲染? 流式渲染主要思想是将HTML文档分块(chunk)…...

【接口自动化连载】使用yaml配置文件自动生成接口case

直接上干货撸代码,有一些是通用的工具类代码,一次性封装永久使用,期待大家的关注,一起加油!!! 配置文件 根据不同的业务需求进行配置,例如Goods服务、Order服务分开配置&#xff0…...

前端安全 常见的攻击类型及防御措施

1. 跨站脚本攻击(XSS) 描述:跨站脚本(XSS:Cross-Site Scripting)是一种安全漏洞,允许攻击者向网站注入恶意客户端代码。该代码由受害者执行从而让攻击者绕过访问控制并冒充用户。XSS攻击可以分…...

来道面试题——CopyOnWriteArrayList

原理 初始化时候,CopyOnWriteArrayList内部维护了一个可变数组,用于存储元素当执行数据变更操作的时候,会先创建一个原数组的副本,在副本上进行写操作,修改副本中的元素。写操作完成之后,把原数组的引用指…...

【Rust自学】5.1. 定义并实例化struct

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 5.1.1. 什么是struct struct的中文意思为结构体,它是一种自定义的数据类型,它允许程序为相关联的值命名和打包&am…...

React 生命周期完整指南

React 生命周期完整指南 1. 生命周期概述 1.1 React 16.3 之前的生命周期 初始化阶段 constructorcomponentWillMountrendercomponentDidMount 更新阶段 componentWillReceivePropsshouldComponentUpdatecomponentWillUpdaterendercomponentDidUpdate 卸载阶段 componentWil…...

python中os._exit(0) 强制关闭进程后来杀死线程

在 Python 中调用 os._exit(0) 会强制终止整个进程,包括所有正在运行的线程。以下是详细解释: os._exit(0) 的行为 立即终止进程:os._exit() 函数会立即终止当前进程,不会执行任何清理操作,如调用清理处理程序&#…...

LeetCode:257. 二叉树的所有路径

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:257. 二叉树的所有路径 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根…...

RSICV国产芯片之CHV208

1. 芯片选型分析的对比维度 分析或者对标应用的芯片替代思路 1.1 内核/主频/存储空间支持 内核能力/指令集支持(考虑工具链兼容性); 主频:对比计算能力是否满足基本要求 存储:内存--数据搬移空间决定数据运算的…...

理解神经网络

神经网络是一种模拟人类大脑工作方式的计算模型,是深度学习和机器学习领域的基础。 基本原理 神经网络的基本原理是模拟人脑神经系统的功能,通过多个节点(也叫神经元)的连接和计算,实现非线性模型的组合和输出。每个…...

Android 之 List 简述

一、简单创建方式 Android 开发中&#xff0c;列表有很多种类&#xff0c;如ArrayList、LinkedList、List、MutableList等&#xff0c;创建列表的方式如下所示&#xff1a; fun listDemo() {// 使用 listOf 创建不可变的空列表val list listOf<Int>()val list1 listOf…...

设计模式の中介者发布订阅备忘录模式

文章目录 前言一、中介者模式二、发布订阅模式三、备忘录模式 前言 本篇是关于设计模式中介者模式、观察者&#xff08;发布-订阅&#xff09;模式、以及备忘录模式的学习笔记。 一、中介者模式 中介者模式是一种行为型设计模式&#xff0c;其核心目的是为了减少对象之间的复杂…...

云手机群控能用来做什么?

随着云手机的发展&#xff0c;云手机群控技术逐渐从小众的游戏多开工具&#xff0c;发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营&#xff0c;还是账号养成等场景&#xff0c;云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…...

fpgafor循环语句使用

genvar i;//循环变量名称 generate for(i0;i<4;ii1)begin:tx//自己定义名称 //循环内容 end endgenerate12位的16进制乘以4就是48位位宽的2进制 因为 222*2(2^4)16...

【FastAPI】BaseHTTPMiddleware类

一、概述 在FastAPI中&#xff0c;BaseHTTPMiddleware 类是Starlette框架提供的一个抽象基类&#xff0c;它允许开发者基于HTTP请求/响应接口编写ASGI中间件。 这个类对于希望实现自定义中间件逻辑的开发者来说是非常重要的工具。 通过继承 BaseHTTPMiddleware 并实现特定的方…...

Solon v3.0.5 发布!(Spring 可以退休了吗?)

Solon 框架&#xff01; 新一代&#xff0c;面向全场景的 Java 应用开发框架。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。 追求&#xff1a; 更快、更小、更简单提倡&#xff1a; 克制、高效、开放、生态 有什么特点&am…...

网络安全攻防演练中的常见计策

大家觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 引言 在网络安全攻防演练里面&#xff0c;用于分析攻击者动机和行为的&#xff0c;国外的有基于攻击链分析的模型&#xff08;如Cyber Kill Chain和ATT&CK&#xff09;和基于威胁行为的模型&#xff08…...

SD卡模块布局布线设计

1、SD/TF/SIM卡的定义 2、SD/TF/SIM卡模块引脚定义以及图示 3、SD/TF/SIM卡接口布局和布线 4、小结 1、BGA两线交叉时&#xff0c;可以在源头将两线互相短路连接&#xff0c;然后再输出口删除一小节线&#xff0c;然后CHRLX/V&#xff0c;这样就可以换两条线的网络&#xff0c…...

Flask-----SQLAlchemy教程

存session session[username] username # 存储数据到 session 取session username session.get(username) render_template return render_template(index.html, usernameAlice)&#xff0c;渲染一个包含 username 变量的模板。 redirect return redirect(url_for(profil…...

Intv_AI_MK11深入LSTM时间序列预测:模型原理与代码实现详解

Intv_AI_MK11深入LSTM时间序列预测&#xff1a;模型原理与代码实现详解 1. 为什么需要LSTM&#xff1f; 时间序列数据在我们的生活中无处不在——股票价格波动、天气变化、设备传感器读数...这些数据都有一个共同特点&#xff1a;当前时刻的值往往与过去一段时间的值相关。传…...

Xinference-v1.17.1实现Python爬虫数据智能处理:自动化采集与清洗

Xinference-v1.17.1实现Python爬虫数据智能处理&#xff1a;自动化采集与清洗 1. 引言 做数据采集的朋友们都知道&#xff0c;写爬虫最头疼的不是写代码本身&#xff0c;而是面对各种网站结构变化、反爬机制、数据清洗这些繁琐工作。每次网站改版&#xff0c;爬虫代码就得重写…...

SECS-II与HSMS核心区别解析

SECS-II与HSMS是SEMI&#xff08;国际半导体设备与材料协会&#xff09;制定的半导体设备通讯标准&#xff08;SECS&#xff09;协议族中的核心成员&#xff0c;它们在通信栈中扮演着截然不同但又紧密协作的角色。简单来说&#xff0c;SECS-II定义了通信的“内容”和“语义”&a…...

大模型实习内推:这些技能必须具备

现在95%的大模型实习岗位&#xff0c;都不是让你去从头“创造”一个GPT-5&#xff0c;而是让你基于现有的模型&#xff0c;去做各种“下游”工作。什么意思呢&#xff1f;大家想象中的大模型实习&#xff0c;可能是这样的&#xff1a;一排排A100/H100在你面前闪烁&#xff0c;你…...

Linux ioctl系统调用实战

Linux ioctl系统调用实战 ioctl&#xff08;input/output control&#xff09;是Linux系统中一个强大的系统调用&#xff0c;用于设备控制和配置。从网络接口配置到串口通信&#xff0c;ioctl无处不在。本文将深入讲解ioctl的原理和实战应用。 一、ioctl概述 1.1 什么是ioctl i…...

5分钟搞定OpenClaw安装:Phi-3-vision-128k-instruct镜像一键部署指南

5分钟搞定OpenClaw安装&#xff1a;Phi-3-vision-128k-instruct镜像一键部署指南 1. 为什么选择星图平台部署Phi-3模型 上周我在本地尝试部署Phi-3-vision-128k-instruct模型时&#xff0c;被各种依赖冲突折磨得够呛。CUDA版本不匹配、vLLM编译失败、Python环境污染...这些问…...

嵌入式系统中联合体的高效数据管理实践

1. 联合体在嵌入式系统中的高效数据管理实践在嵌入式系统开发中&#xff0c;如何高效地管理和传输数据一直是个值得深入探讨的话题。最近我在一个智能家居控制项目中遇到了一个典型场景&#xff1a;需要同时管理7个用电器的开关状态和4组电源线参数&#xff08;电压、电流、有功…...

基于dlib+OpenCV的人脸疲劳检测 + 年龄性别识别实战

一、前言在计算机视觉领域&#xff0c;人脸相关技术一直是热门方向&#xff0c;从人脸检测、关键点定位到疲劳检测、年龄性别识别&#xff0c;都有着广泛的应用场景&#xff0c;比如驾驶员疲劳监测、智能门禁、人机交互等。本文将基于dlib和OpenCV&#xff0c;从零实现两个经典…...

9.7%年复合增长率!内容安全审查平台未来六年发展路径清晰,市场潜力凸显

在数字内容呈指数级增长、全球网络监管政策趋严的背景下&#xff0c;内容安全审查平台作为保障数字空间合规性的核心工具&#xff0c;正经历从“规则驱动”向“AI智能驱动”的范式转型。据恒州诚思调研统计&#xff0c;2025年全球市场规模达179.3亿元&#xff0c;预计至2032年将…...

COMSOL后处理技巧:精确计算动态接触面积

1. 为什么动态接触面积计算这么重要&#xff1f; 在工程仿真中&#xff0c;接触问题无处不在。比如手机按键的触感反馈、汽车刹车片的磨损分析、机械密封件的性能评估&#xff0c;这些场景都需要精确掌握两个物体在运动过程中的实际接触面积。我做过一个橡胶密封圈的案例&#…...