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

news/2024/12/26 9:02:55/

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代码仓库,可访问这里


http://www.ppmy.cn/news/1558226.html

相关文章

小程序租赁系统开发指南与实现策略

内容概要 在如今这个快节奏的时代,小程序租赁系统的开发正逐渐成为许多商家提升服务质量与效率的重要选择。在设计这样一个系统时,首先要明白它的核心目标:便捷、安全。用户希望在最短的时间内找到需要的物品,而商家则希望通过这…

Word窗体联动Excel实现级联组合框

在Word中的使用用户窗体(UserForm)定制界面如下图所示,其中控件如下(忽略Label控件): CompanyName 组合框Attention 组合框CommandButton1 按钮 现在需要实现级联组合框效果,即用户在 CompanyN…

【git】将项目上传到github、gitee

【git】将项目上传到github、gitee 一、创建本地仓库 1、初始化本地仓库 进入文件夹,在命令行输入: git init这个命令会在文件夹中同时创建gitignore文件。 2、把文件添加到暂存区中 在命令行输入: git add .将当前文件夹下的所有内容…

我的 2024 年终总结

2024 年,我离开了待了两年的互联网公司,来到了一家聚焦教育机器人和激光切割机的公司,没错,是一家硬件公司,从未接触过的领域,但这还不是我今年最重要的里程碑事件 5 月份的时候,正式提出了离职…

最近常用linux、docker命令总结

最近常用linux、docker命令总结 1.ss -ulwn2.lsof -i :80803. ps aux | grep php4.docker stats5.docker inspect milvusapi6.docker ps --format "{{.Names}}: {{.Command}}" --no-trunc 1.ss -ulwn 基本含义 ss:全称是 Socket Statistics,用…

信息系统项目管理-绩效考核题目2

关于绩效评估的描述,错误的是() A绩效评估以员工发展为第一目标,全面了解员工的发展潜力 B绩效评估由人力资源部门负责牵头组织、协调,相关部门予以配合 C绩效评估是绩效治理整个周期性循环过程中技术性最强的一个环节…

element-plus在Vue3中开发相关知识

报错&#xff1a;error.mjs:20 ElementPlusError: [ElForm] model is required for resetFields to work. 原因&#xff1a;el-form使用v-model没有把内容绑定上&#xff0c;需要使用 :model 才可以校验 将&#xff1a; <el-form label-width"auto" class"…

Pinpoint 是一个开源的分布式追踪系统

pinpointagent2.2.2.tar 是 Pinpoint 的一个版本&#xff0c;Pinpoint 是一个开源的分布式追踪系统&#xff0c;专门用于对 Java 应用程序进行性能监控、日志记录和故障诊断。它可以帮助开发人员和运维人员追踪和分析微服务架构中服务之间的调用链&#xff0c;并进行性能分析。…