Skip to content

Repository files navigation

voxhush

面向隐私保护的说话人匿名化(speaker anonymization)框架:在尽量保留语言内容与 可懂度的前提下,通过替换 / 扰动说话人音色来隐藏其身份。纯 Python 参考实现,离线优先, 核心只依赖 NumPy。

⚠️ 开发中(alpha),公开 API 可能仍会调整。

特性

  • 多种匿名化方法,统一接口、可自由串联:
    • mcadams —— McAdams 系数 LPC 极点角度弯折(VoicePrivacy 基线思路);
    • vtln —— 基于双线性频率弯折的共振峰变换;
    • pitch —— 相位声码器整体变调(保持时长);
    • modulation —— 平滑随机谱包络扰动。
  • 隐私评测:说话人嵌入 + ASV 打分、等错误率(EER)、全局可链接性 D_sys / D_max。
  • 可懂度评测:MCD、对数谱距离(LSD)、短时可懂度代理、对数梅尔包络相关。
  • 零外部数据:内置源-滤波器合成语音,可离线跑通全流程与全部示例。
  • 纯 NumPy 内核:无需 PyTorch / librosa / SciPy;STFT、LPC、相位声码器均自带实现。
  • 完整类型标注,ruff + mypy 严格检查,测试覆盖率 > 90%。

安装

pip install voxhush          # 从源码:pip install -e ".[dev]"

要求 Python ≥ 3.10。

快速开始

import numpy as np
from voxhush import anonymize, read_wav, write_wav
from voxhush.metrics import mel_cepstral_distortion, verification_score

wav, sr = read_wav("speaker.wav")

# 用 McAdams 系数匿名化
anon = anonymize(wav, sr, method="mcadams", mcadams=0.8)
write_wav("speaker_anon.wav", anon, sr)

# 隐私:原始与匿名语音的说话人相似度(越低越难链接回本人)
print("ASV 相似度:", verification_score(wav, anon, sr))
# 可懂度 / 内容保持:梅尔倒谱失真(越低越接近)
print("MCD:", mel_cepstral_distortion(wav, anon, sr))

串联多种方法:

from voxhush import AnonymizationPipeline

pipe = AnonymizationPipeline.from_names(["mcadams", "pitch"])
anon = pipe(wav, sr)

命令行

voxhush info                                   # 版本与可用方法
voxhush demo -o demo.wav --method mcadams      # 合成一段语音并匿名化(无需数据)
voxhush anonymize in.wav -o out.wav --method vtln --alpha 0.1
voxhush evaluate --original in.wav --anonymized out.wav

工作原理

大多数方法遵循「分析—扰动—重建」范式:先把语音分解为声道 / 谱包络与激励, 只对承载说话人身份的谱包络做变换(如 McAdams 弯折 LPC 极点角度),再重建波形。 由于激励(承载基频与时序)与语言内容大体保留,可懂度得以维持。详见 docs/architecture.mddocs/design-notes.md

评测

隐私与可懂度往往此消彼长。voxhush 用两组离线指标量化这一权衡:

维度 指标 方向
隐私 ASV 相似度、EER、可链接性 D_sys 相似度 / D_sys 越低越好,EER 越接近 0.5 越好
可懂度 MCD、LSD、可懂度代理 MCD / LSD 越低越好,代理越高越好

许可证

MIT © Qin Muyan

About

语音匿名化框架(Python):面向隐私保护的说话人匿名化,通过音色替换/扰动隐藏说话人身份同时保留语言内容与可懂度,含隐私(说话人可链接性)与可懂度评估(纯 Python 参考实现、离线优先

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages