SuperAPI AI 工具集

audio-transcribe

办公与效率

查看项目

更新于 10-16 12:01

技能介绍

用途 该技能用于把多说话人音频转写为结构化 Markdown,适合会议、播客、访谈等场景。输出包含说话人标签与时间戳的 <stem>-transcript.md,以及 Phase 1 原始输出 <stem>_raw_transcript.json(用于恢复或分析)。

主要能力

  • 两类 ASR 引擎:FunASR(Paraformer / SenseVoice / Whisper,快且成本低,支持 GPU 或 CPU,99 种语言)与 MiMo-V2.5-ASR(小米 8B 模型,仅本地 GPU,在专有名词与语码转换上更强)。
  • 语言预设:zh(默认,SeACo-Paraformer,中文 CER 1.95%,支持热词)、zh-basic(Paraformer-large,中文,无热词)、en(Paraformer-en)、auto(SenseVoiceSmall,自动检测 zh/en/ja/ko/yue,无热词)、whisper(Whisper-large-v3-turbo,99 种语言,无热词)、mimo(MiMo-V2.5-ASR,本地 8B,仅 GPU)。
  • 所有预设均含说话人分离(CAM++)与 VAD(FSMN)。
  • 支持热词偏置(仅 zh 预设)、参考文件辅助 LLM 纠错、说话人上下文、说话人性别检测(CAM++ 分类器)。
  • 可选 LLM 清理(Phase 3):支持 Bedrock、Anthropic、OpenAI,通过 --model 启用。

使用方式 环境搭建:AUTO_YES=1 bash $SCRIPTS/setup_env.sh(或强制 CPU:AUTO_YES=1 bash $SCRIPTS/setup_env.sh cpu)。脚本会为 FunASR 的谱聚类打补丁以提升 O(N²·k) 性能,否则超过约 1 小时的录音在说话人聚类时会长时间卡住。

转写示例: python3 $SCRIPTS/transcribe.py meeting.wav --lang zh --num-speakers 9 --hotwords hotwords.txt python3 $SCRIPTS/transcribe.py meeting.wav --lang en --speakers "Alice,Bob,Carol,Dave" python3 $SCRIPTS/transcribe.py meeting.wav --lang auto --num-speakers 6 python3 $SCRIPTS/transcribe.py meeting.wav --lang whisper --num-speakers 4 启用 LLM 清理:python3 $SCRIPTS/transcribe.py meeting.wav --lang zh --num-speakers 9 --hotwords hotwords.txt --provider bedrock --model us.anthropic.claude-sonnet-4-6 恢复中断:python3 $SCRIPTS/transcribe.py meeting.wav --skip-transcribe --model us.anthropic.claude-sonnet-4-6

说话人标签校验: python3 $SCRIPTS/verify_speakers.py podcast_raw_transcript.json --speakers "关羽,张飞" --speaker-context speaker-context.json --fix 随后 python3 $SCRIPTS/transcribe.py original.m4a --skip-transcribe --clean-cache 重新生成 Markdown。该脚本分析前 5 分钟(可用 --minutes 调整),自动区分播客(2 人,交换检测)与会议(N 人,全量重新分配)。

音频预处理 脚本会自动把输入音频转为 16kHz 单声道 FLAC 并校验无音频丢失。格式建议:FLAC(无损,默认最安全)、Opus(有损,长文件有截断风险)、WAV(无损但更大)、原始 M4A(可直接使用)。不要拆分长录音,拆分会导致说话人 ID 不一致。

MiMo-V2.5-ASR(可选,仅 GPU) --lang mimo 在 CUDA GPU 上本地运行小米 MiMo-V2.5-ASR,适用于评估 MiMo 与 Paraformer 在中文音频上的表现,或录音含大量语码转换、方言(吴语、粤语、闽南语、四川话)、歌词、稀有专有名词的场景。要求 CUDA ≥12.0 且 ≥20 GB 显存(16 GB 卡在推理时会 OOM)、Python 3.12、约 20 GB 权重一次性下载以及编译 flash-attn==2.7.4.post1(需 CUDA 工具包中的 nvcc,耗时 10–30 分钟)。安装:AUTO_YES=1 INSTALL_MIMO=1 MIMO_WEIGHTS_PATH=/mnt/models/hf bash $SCRIPTS/setup_env.sh。运行:python3 $SCRIPTS/transcribe.py podcast.m4a --lang mimo --num-speakers 2 --mimo-weights-path /mnt/models/hf。失败恢复:加 --resume-mimo。

适用场景 会议、播客、访谈的多说话人转写;需要说话人区分(如播客、会议)时应使用 zh、zh-basic、en 或 mimo,因为 auto 与 whisper 不输出逐句时间戳,无法做说话人分离。需要极致质量时,可同时提供 hotwords.txt、speaker-context.json 与 --reference 参考文档。

限制与注意事项

  • auto 与 whisper 无逐句时间戳,说话人分离不可用。
  • mimo 不支持热词偏置、无 CPU 回退,同 GPU 下比 Paraformer 慢(8B vs 约 0.3B),A100 上 RTF 约 0.1–0.2。
  • 启用 LLM 清理(--model)时,转写片段会发送至外部 LLM 提供商(AWS Bedrock、Anthropic 或 OpenAI,取决于模型 ID);可用 --skip-llm 或省略 --model 保持全本地。
  • FunASR 的 CAM++ 可能合并声学相似的说话人,可用 --num-speakers、--hotwords、--speaker-context 改善。
  • 资源受限机器处理长录音可能遇到执行超时或 OOM,可用 systemd-run/nohup 脱离超时、使用 swap 或 --lang zh-basic 减轻负载。
  • 说话人性别检测默认启用,可用 --no-detect-gender 关闭以省去约 500 MB 模型下载与额外推理时间。

其他说明 --speakers 必须使用说话人真实姓名而非播客别名,该值会原样用作输出中的说话人标签;同时把真名与别名都加入 hotwords.txt。当同时提供 --speakers 与 --reference 时,脚本会在启动时检测该错误并打印 ACTION REQUIRED 块,提示建议的真名;看到该块应停止运行并在 Phase 3 前用修正后的 --speakers 重新调用,该警告不会中止流程。