返回顶部
a

audio-speaker-tools音频说话人工具

Speaker separation, voice comparison, and audio processing tools. Use when working with multi-speaker audio, voice cloning, or speaker verification tasks including: (1) separating speakers from audio files via Demucs and pyannote diarization, (2) comparing voice samples for speaker verification or voice clone quality assessment using Resemblyzer, (3) extracting audio segments, (4) preparing samples for ElevenLabs voice cloning, or (5) validating speaker diarization results.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
336
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

audio-speaker-tools

音频说话人工具

使用Demucs、pyannote和Resemblyzer进行说话人分离、语音比较和音频处理的工具。

概述

本技能提供三个主要工作流程:

  1. 1. 说话人分离 - 从多说话人录音中提取每个说话人的音频
  2. 语音比较 - 测量两个音频文件之间的说话人相似度
  3. 音频处理 - 片段提取和语音隔离

前置条件

设置虚拟环境

运行一次以创建venv并安装依赖:

bash
bash scripts/setup_venv.sh

默认venv位置:./.venv

要求:

  • - Python 3.9+
  • ffmpeg (brew install ffmpeg)
  • HuggingFace令牌(设置为环境变量 HF_TOKEN)

脚本

1. 说话人分离:diarizeandslice_mps.py

从多说话人音频中分离说话人:

bash

基本用法


HF_TOKEN= \
/path/to/venv/bin/python scripts/diarizeandslice_mps.py \
--input audio.mp3 \
--outdir /path/to/output \
--prefix MyShow

带说话人限制

HFTOKEN=$TOKEN python scripts/diarizeandslicemps.py \ --input audio.mp3 \ --outdir ./out \ --min-speakers 2 \ --max-speakers 5 \ --pad-ms 100

处理流程:

  1. 1. 将输入转换为16kHz单声道WAV
  2. 运行Demucs人声/背景分离(可选,用于更干净的输入)
  3. 运行pyannote说话人日志(MPS加速)
  4. 提取每个说话人的拼接WAV文件

输出:

  • - speaker1.wav、speaker2.wav等(每个检测到的说话人一个文件)
  • diarization.rttm(带时间戳的说话人片段)
  • segments.jsonl(JSON片段元数据)
  • meta.json(管道信息和说话人索引)

重要提示:

  • - 始终通过 HF_TOKEN 环境变量传递HF令牌,切勿作为CLI参数
  • 优先MPS,CPU回退 - 脚本优先使用Metal GPU,不可用时回退到CPU
  • 默认输出:./separated/

2. 语音比较:compare_voices.py

使用Resemblyzer测量两个语音样本之间的相似度:

bash

基本比较


python scripts/compare_voices.py \
--audio1 sample1.wav \
--audio2 sample2.wav

JSON输出

python scripts/compare_voices.py \ --audio1 reference.wav \ --audio2 clone.wav \ --threshold 0.85 \ --json

退出码=0表示通过,=1表示失败

评分:

  • - < 0.75 = 不同说话人
  • 0.75-0.84 = 可能是同一说话人
  • 0.85+ = 极佳匹配(语音克隆验证的理想值)

使用场景:

  • - 语音克隆质量评估(比较克隆与原始)
  • 说话人验证(验证说话人身份)
  • 验证说话人分离(确认分离的说话人是不同的)

参见: references/scoring-guide.md 获取详细解释

3. 音频修剪

直接使用 ffmpeg 进行片段提取:

bash

提取从5秒开始的10秒片段


ffmpeg -i input.mp3 -ss 5 -t 10 -c copy output.mp3

使用Demucs仅提取人声(在日志分析之前)

demucs --two-stems vocals --out ./separated input.mp3

工作流程

工作流程1:提取用于克隆的干净语音样本

目标: 为ElevenLabs语音克隆获取干净的单一说话人样本

bash

1. 分离说话人


HFTOKEN= python scripts/diarizeandslicemps.py \
--input podcast.mp3 --outdir ./out --prefix Podcast

2. 查看说话人文件(out/Podcast_speaker1.wav等)

3. 选择最佳样本(5-30秒,清晰语音)

ffmpeg -i out/Podcast_speaker2.wav -ss 10 -t 20 -c copy sample.wav

4. 上传到ElevenLabs作为即时语音克隆

参见: references/elevenlabs-cloning.md 获取最佳实践

工作流程2:验证语音克隆质量

目标: 测量克隆语音与原始语音的匹配程度

bash

1. 使用ElevenLabs克隆生成测试音频


(通过ElevenLabs网页界面或API完成)

2. 比较克隆与参考

python scripts/compare_voices.py \ --audio1 original_sample.wav \ --audio2 elevenlabs_clone.wav \ --threshold 0.85 \ --json

3. 解释评分:

0.85+ = 极佳,可发布

0.80-0.84 = 可接受,可能需要调整

< 0.80 = 较差,尝试不同样本或设置

参见: references/scoring-guide.md 获取低分故障排除

工作流程3:多说话人对话分析

目标: 分离并识别对话中的说话人

bash

1. 运行日志分析


HFTOKEN=$TOKEN python scripts/diarizeandslicemps.py \
--input meeting.mp3 --outdir ./out --prefix Meeting

2. 检查检测到的说话人(meta.json)

cat out/meta.json

3. 比较说话人对以确认分离

python scripts/compare_voices.py \ --audio1 out/Meeting_speaker1.wav \ --audio2 out/Meeting_speaker2.wav

预期:如果分离正确,结果应 < 0.75

技术说明

设备加速

  • - pyannote日志分析: 默认MPS(Metal),CPU回退
  • Resemblyzer: 仅CPU(无GPU加速)
  • Demucs: 可用时默认MPS

强制使用CPU进行日志分析:--device cpu

音频格式

  • - 输入: ffmpeg支持的任何格式(wav、mp3、flac、m4a等)
  • 处理: 内部转换为16kHz单声道WAV用于日志分析
  • 输出: WAV格式(保留源文件的44.1kHz立体声)

HuggingFace令牌

  • - 需要用于: pyannote说话人日志分析
  • 访问: 必须在HF上接受受限仓库 pyannote/speaker-diarization-3.1
  • 存储: 任何安全的密钥管理器
  • 使用: 始终通过 HF_TOKEN 环境变量传递,切勿使用CLI参数

样本质量提示

  • - 越短越好: 5-30秒的干净样本通常比60秒以上的样本得分更高
  • 干净音频: 使用Demucs --two-stems vocals 去除背景噪音
  • 单一说话人: 确保是隔离的语音,而非混合对话
  • 良好录音: 语音比较准确性方面,录音室麦克风优于手机麦克风

参考资料

  • - elevenlabs-cloning.md - ElevenLabs即时语音克隆的最佳实践(模型设置、样本选择、已验证配置)
  • scoring-guide.md - 如何解释Resemblyzer相似度评分(阈值、使用场景、故障排除)

常见问题

缺少HF令牌错误

  • - 运行前导出令牌:export HFTOKEN=
  • 或内联传递:HFTOKEN= python script.py ...

同一说话人的语音比较得分低

  • - 尝试更短、更干净的样本(5-30秒)
  • 使用Demucs隔离人声:demucs --two-stems vocals input.mp3
  • 确保一致的录音质量(相同麦克风、环境)
  • 参见 references/scoring-guide.md 故障排除部分

日志分析未检测到所有说话人

  • - 调整 --min-speakers 和 --max-speakers 标志
  • 检查音频质量(清晰语音、最小重叠)
  • 尝试更长的音频(30秒以上)以获得更好的说话人建模

MPS/Metal加速不工作

  • - 确保PyTorch支持MPS:python -c import torch; print(torch.backends.mps.is_available())
  • 回退到CPU:--device cpu

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 audio-speaker-tools-1776295602 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 audio-speaker-tools-1776295602 技能

通过命令行安装

skillhub install audio-speaker-tools-1776295602

下载

⬇ 下载 audio-speaker-tools v1.0.0(免费)

文件大小: 12.44 KB | 发布时间: 2026-4-16 18:44

v1.0.0 最新 2026-4-16 18:44
Initial public release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部