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

ops/2024/12/26 9:55:27/

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/ops/145093.html

相关文章

如何在 Ubuntu 22.04 上安装和使用 Composer

简介 如果你是一名 PHP 开发者,想要简化你的项目依赖管理,那么 Composer 是一个必不可少的工具。Composer 可以简化包管理,并允许你轻松地将外部库集成到你的项目中。 本教程将向你展示如何在 Ubuntu 22.04 操作系统上安装 Composer&#x…

Pytorch分布式训练

现在深度学习模型占用显存大,数据量也大,单张显卡上训练已经满足不了要求了,只有多GPU并行训练才能加快训练速度;并行训练又分为模型并行和数据并行两种。模型并行比较少用到,这里主要介绍数据并行,pytorch…

4-3 MCU中ARM存储器的作用

定义:在讨论单片机中的“ARMZ”时,看起来可能存在一些混淆。通常情况下,我们不会直接提到“ARMZ”作为单片机存储内容的描述。可能你指的是某种特定的存储器或寄存器,或者是关于ARM架构下的某种概念。为了更准确地回答你的问题&am…

【Rust自学】6.1. 定义枚举

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 6.1.1. 什么是枚举 枚举允许我们列举所有可能的值来定义一个类型。这与其他编程语言中的枚举类似,但 Rust 的枚举更加灵活和强…

ubuntu使用ffmpeg+ZLMediaKit搭建rtsp推流环境

最方便的方式,ubuntu上安装vlc播放器,通过vlc来推流,在网上有很多教程。这里采用ffmpegZLMediaKit 必备条件: 1、安装ffmpeg 2、安装ZLMediaKit 一、安装ffmpeg sudo apt update sudo apt install ffmpeg 二、安装ZLMediaKit…

[Python3] Sanic中间件

在 Sanic 中,中间件(middleware)是指在请求和响应之间执行的代码。它们是一个非常强大的工具,用于处理请求的预处理、响应的后处理、全局错误处理、日志记录、认证、权限校验、跨域资源共享(CORS)等任务。中…

大语言模型中的Agent;常见的Agent开发工具或框架

大语言模型中的Agent 大语言模型中的Agent是指以大语言模型为核心驱动,具有自主理解、感知、规划、记忆和使用工具等能力,能够自动化执行复杂任务的系统.以下是一些例子: AutoGPT:它相当于一个完整的工具包,可以为各种项目构建和运行自定义AI Agent。使用OpenAI的GPT-4和…

【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍

Kibana 图形显示 Kibana 介绍 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作,可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作,您可以很方便的利用 图表、表格及地图…