Skip to main content

WhisperAudit

English · 中文

PyPI Open In Colab CI License: MIT

中文长音频转录流水线,输出文稿、字幕与质检报告。设计目标是完整性: 不只转录一遍,还会审计转录结果本身——按实际音量定位「有语音、无文字」的 区段,仅对问题区段定点补转,并内置字级 CER 评测,使准确率可以在使用者 自己的录音上被量化验证。

在线试用:点击上方 Open in Colab 徽章,可在浏览器中转录一段真实录音 (免费 T4 GPU,实测 30.8x 实时),无需本地环境。

功能特性

  • 覆盖率审计——基于音量分析定位漏转区段,包括隐藏在长片段内部的漏转
  • 定点补转——仅重转问题区段,不做全量重跑
  • 三引擎可选——faster-whisper、FunASR Paraformer、Qwen3-ASR,六个公开域的实测数据见下
  • 说话人分离(可选)——声纹聚类标注 S1/S2,仅添加标签,绝不改动正文
  • 术语表纠错——字面替换与拼音模糊匹配,所有自动改动带时间戳记账,可逐条回听核对
  • 内置评测工具——goldset / eval 子命令在自有录音上产出 CER 及错误分解
  • 质检报告——覆盖率、剔除的幻觉、残余可疑段、改动清单,随每次转录输出
  • 完全离线——音频与文本默认不产生任何网络传输(唯一例外 --polish,默认关闭)
  • 三种使用方式——命令行、本地网页界面、Colab

实测数据(2026-08-07)

六个域 × 三个引擎,同一评测口径(字级 CER,越小越好)。 前三列为干净语音,后三列为困难语音:

引擎 演讲 讲课 朗读 台湾腔+快语速 相声 直播带货
--engine funasr 2.06 2.44 5.36 24.88 32.76 25.69
--engine qwen 2.11 2.61 3.92 33.99 15.05 27.10
默认 whisper 4.18 8.67 4.45 24.63 11.86 14.78

表中模型:whisper 为 faster-whisper large-v3,funasr 为 SeacoParaformer large,qwen 为 Qwen3-ASR-0.6B。 语料为 SpeechIO 五个测试集与 FLEURS(商用 API 在 SpeechIO 干净集的公开成绩约 1.53%)。结论:干净普通话上 funasr 最准且删除错少 610 倍;困难语音上 whisper 在全部三个域领先,另两个引擎各存在断崖式退化。默认引擎因此选择 六域中唯一从不崩溃的 whisper,而非平均分最高者。

消融实验(同音频同参考)显示:干净普通话上审计与补转的收益为零,双路合并 (曾经的默认档)反而使 CER 升高 2.3 倍,默认档已因此改为单路;困难音频上 双路将 CER 从 88.6% 降至 74.2%,--profile meeting 保留用于已确认存在漏转 的场景。全部数据(包括对本项目不利的结果与被推翻的结论)见 docs/measurements.md

速度 实测值
长音频(GPU) 默认档 24.5x、--profile fast 62x 实时(RTX 4060 Laptop 8GB);Colab T4 30.8x
纯 CPU 3.2x 实时(--engine funasr --device cpu),无需独立显卡

系统要求

项目 要求
Python ≥ 3.10
ffmpeg 必需(音频转码),需通过系统包管理器安装
操作系统 Linux、WSL2 与 Windows 原生(CPU 路径)已实测;macOS 预期可用(CPU 路径)
GPU 可选。NVIDIA GPU(8GB 显存已实测);无 GPU 时可用 CPU 路径
磁盘 每个引擎的模型约 1~3GB,首次运行自动下载

安装

pip install "whisper-audit[whisper,cuda]"   # GPU;纯 CPU 环境省略 cuda
sudo apt install ffmpeg                     # macOS: brew install ffmpeg

可选依赖按引擎与功能划分,可组合安装:

Extra 内容
whisper faster-whisper 引擎(默认引擎)
cuda CUDA 12 运行时库。仅 whisper 引擎的 GPU 用户需要;已安装 torch 的环境无需此项
funasr FunASR Paraformer 引擎(含 torch/torchaudio——funasr 1.4 起不再自带)
qwen Qwen3-ASR 引擎。注意:其依赖将 transformers 锁定为 4.57.6(会降级已安装版本),建议独立虚拟环境
ui 本地网页界面
socks SOCKS 代理环境下载模型所需

安装注意事项(均来自干净环境实测):

  • 仅安装 [whisper] 而缺少 CUDA 运行时的 GPU 环境会在转录开始时报 Library libcublas.so.12 is not found,补装 [cuda] 即可
  • SOCKS 代理环境下载模型缺少 socksio 时会报 Using SOCKS proxy, but the 'socksio' package is not installed,补装 [socks] 即可

支持 mp3 / m4a / wav 等常见格式(由 ffmpeg 统一转为 16kHz 单声道)。

使用

# 标准普通话(演讲 / 讲课 / 会议):该域实测最准且最快
#   引擎需对应 extra:pip install "whisper-audit[funasr]"
whisper-audit run 录音.mp3 --engine funasr

# 通用场景(默认配置):单路转录 + 覆盖率审计 + 定点补转
whisper-audit run 录音.mp3

# 已确认存在漏转的困难音频(强噪声 / 拖腔):双路交叉
whisper-audit run 录音.mp3 --profile meeting

# 速度优先:turbo 模型 62x 实时,实测质量代价约 0.9 个百分点
whisper-audit run 录音.mp3 --profile fast

# 多说话人:标注说话人(仅添加标签,不改动正文)
whisper-audit run 访谈.mp3 --engine funasr --diarize

# 本地网页界面:浏览器中上传音频、查看结果、下载产物
#   安装:pip install "whisper-audit[whisper,ui]"
whisper-audit ui

网页界面默认仅绑定 127.0.0.1。以 whisper-audit ui --listen 0.0.0.0 启动时, 局域网内其他设备可通过浏览器直接使用本机的转录服务(客户端无需安装任何组件); 此模式下音频将经局域网传输至运行服务的机器,请按环境的安全要求决定是否启用。

whisper-audit ui:左侧上传与进度,右侧质检摘要与正文预览

(截图为真实运行:Colab demo 同款《阿Q正传》朗读,本次 26.1x 实时)

源码方式运行:python3 transcribe.py 录音.mp3,与安装后的命令等价。 其余参数(--terms--keep-break--speakers--model--device--language--title-o)见 --help

引擎选择

  • 清晰普通话 → funasr
  • 录音质量好的混合体裁音频 → qwen(长音频实测仅 0.4~1.2x 实时,不适用)
  • 口音重、噪声大、业余或远场录音、无法预判类型 → 默认 whisper。 实测低音量带混响的业余朗读可使 funasr 退化至 35% CER,whisper 同音频为 13%

输出

默认写入音频同目录的 <名称>_转录/

文件 内容
*_全文转录.md / .txt 正文,时间戳分段、自动标点;启用 --diarize 时换人处分段并标注 S1/S2
*_字幕.srt 按词级时间戳切分的字幕,可对照原音频逐句核对;启用 --diarize 时每条带说话人标签
质检报告.json 覆盖率、漏转区段、幻觉清单、自动改动记账,建议交付前检查
.work/ 中间结果,重跑时自动复用(更改参数前应删除)

日志末尾的「终审」行报告最终成稿的实际覆盖率与残余可疑段数量。 以 LibriVox 公有领域朗读《阿Q正传》第一章(7.8 分钟,与 Colab demo 同款 音频)的一次真实运行为例:

审计:覆盖 95.7% 讲话中位音量 -27.2dB 待补 0 处(其中段内饥饿 0) 幻觉 0 处
终审:合并稿覆盖 95.7% 有效语音 95.7% 残余饥饿段 0 处
完成:6 段 / 1,646 字 / 64 条字幕

唯一未覆盖区段是末尾 5.1 秒——质检报告给出其精确区间,音量测量判定其中 无语音,故不补转。

评测自己录音的准确率

# 1. 从转录输出中切出一段,生成待校对稿(初始内容即 ASR 结果)
whisper-audit goldset 输出目录/ --from 00:10:00 --to 00:20:00 -o sample.gold.tsv
# 2. 编辑 sample.gold.tsv:仅修改第三列中的错字,不改动时间戳、不合并行
# 3. 评测
whisper-audit eval --gold sample.gold.tsv --hyp 输出目录/

报告包含 CER、删除率(衡量漏转程度,本项目的核心指标)与同音/近音错误 占比(决定拼音类纠错手段的理论上限)。eval --manifest 亦可直接评测公开 基准集。

术语表(可选)

{ "name": "领域名",
  "fixes": [["误识写法", "正确写法"]],
  "terms": ["正确写法"] }
  • fixes:字面精确替换,建议逐条人工确认;工具会统计每条的命中次数, 便于发现从未命中或命中异常偏多的条目
  • terms:拼音模糊匹配,一条覆盖一类同音错误。默认关闭,--pinyin-fix 显式启用

示例:examples/terms/finance-lecture.json(42 条 fixes + 41 条 terms, 经真实录音核定)。

会修改正文的可选功能(默认全部关闭)

参数 作用 默认关闭的原因
--pinyin-fix 拼音级术语纠错 无调拼音会将「节余/结余」等真实存在、含义不同的词判为同音
--polish LLM 同音校订 正文将发送至所配置的 endpoint;且同音替换本身可能改变语义

启用后所有改动均记入质检报告(带时间戳,可回听核对),应逐条检查。 --polish 配套 --llm-base-url / --llm-model / --polish-dry-run, API key 仅从环境变量 WHISPER_AUDIT_LLM_KEY 读取。其护栏强制每处替换 与原文真同音、行数不变,内容无法被增删——但同音替换本身仍可能改变 语义,故保持默认关闭。

已知局限

  1. ASR 准确率存在上限:方言口音与术语密集段落错误集中,术语表可修复高频错误, 其余需对照 .srt 人工校对
  2. 标点为推定结果(基于词间停顿与连接词),不代表讲者原意
  3. 说话人标签为声纹聚类推定:短促插话可能归属错误;仅识别出一人时不添加标签; 该功能从不改动正文(有测试锁定此不变量)
  4. 歌唱类音频不适用(慢速拖腔实测 CER 74% 以上,删除错误主导,补转无法恢复)
  5. 中场休息自动识别可能误判,可用 --keep-break 关闭

文档

  • docs/lessons.md —— 26 条实测工程记录:VAD 误删、静音幻觉、 段内漏转、合并陷阱、被污染的性能数据等,每条均来自真实测量
  • docs/measurements.md —— 全部实测数字与每个默认值的 判定依据,被推翻的结论原样保留
  • Releases —— 版本变更记录

参与开发

pip install -e ".[dev]"       # 纯 CPU 核心依赖,不含 ASR 后端
python3 -m pytest tests/ -q   # 秒级完成,无需 GPU 与音频文件

测试套件刻意不依赖 GPU 与音频:引擎适配器是对真机探测输出的纯函数, 说话人分离测试使用保存为夹具的真实声纹向量。测试保护的是那类不抛异常的 缺陷——静默丢失内容、静默改写文本、静默虚报覆盖率。

开发环境、测试纪律与当前最需要的贡献方向见 CONTRIBUTING.md

whisper_audit/
  cli.py         命令行与主流程          engines/   ASR 后端(whisper/funasr/qwen)
  audio.py       转码 + 音量测量          audit.py   空洞 / 幻觉 / 段内饥饿 / 终审
  merge.py       多路合并与去重           render.py  标点 / 分段 / 出稿 / 字幕重切
  evaluate.py    字级 CER 与错误分解      goldset.py 待校对稿生成与评测入口
  terms.py       术语表:字面 + 拼音       polish.py  LLM 同音校订(拼音硬约束)
  diarize.py     声纹抽取与说话人聚类     webui.py   本地网页界面

致谢

本项目基于以下开源工作构建:

许可证

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whisper_audit-0.4.2.tar.gz (116.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

whisper_audit-0.4.2-py3-none-any.whl (76.5 kB view details)

Uploaded Python 3

File details

Details for the file whisper_audit-0.4.2.tar.gz.

File metadata

  • Download URL: whisper_audit-0.4.2.tar.gz
  • Upload date:
  • Size: 116.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for whisper_audit-0.4.2.tar.gz
Algorithm Hash digest
SHA256 303c5e8c5273fb21a0bde2d92b8a0f72a9cee2383348d06b376b7691b68b07bb
MD5 64bd167315f21601a6a8b7044f653bee
BLAKE2b-256 fe9b3a40ce99e079cb5f187dd5e580fb9d63ac96dbde7eed5db4539a11362fea

See more details on using hashes here.

Provenance

The following attestation bundles were made for whisper_audit-0.4.2.tar.gz:

Publisher: release.yml on xr843/whisper-audit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file whisper_audit-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: whisper_audit-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 76.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for whisper_audit-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 09b44c002d78ccb767994a145ca47b7e0c5090db8e851a3f0e8213179a8dbbb4
MD5 feb6e73b4188e4e637b7b4da1dcc16c6
BLAKE2b-256 f32397c4950afab0f02fbefe0224fbe9ec668a9995a68a701c662c2c170e58ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for whisper_audit-0.4.2-py3-none-any.whl:

Publisher: release.yml on xr843/whisper-audit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page