Skip to main content

audio-transcribe

音视频转文字,支持 CLI、MCP Server 两种形态:说话人分离,长音频免切片,原生支持微信语音 SILK 格式。

Audio/video transcription in both CLI and MCP Server flavors: speaker diarization, long-audio support with no manual splitting, and native WeChat SILK decoding.

English | 简体中文

基于阿里云百炼录音文件识别接口(qwen-audio-asr 系列 / paraformer)。不依赖 Claude Code:可作为独立命令行工具,也可接入任意 MCP 客户端(Claude Desktop、Cursor 等)。

功能特性

  • 全格式输入:mp3 / wav / m4a / aac / flac / ogg / opus / amr / wma 及 mp4 / mkv / mov 等所有 ffmpeg 支持的音视频格式(视频自动抽取音轨)
  • 微信语音 SILK 原生支持:自动识别并剥离微信 0x02 + #!SILK_V3 文件头,通过 uv 临时环境调用 pilk 解码(仅转写 silk 文件时需要 uv,其余格式零额外依赖)
  • 说话人分离:多人对话按 说话人N:内容 分段输出;单一说话人自动退化为整段纯文本
  • 长音频免切片:走百炼录音文件识别(filetrans)异步接口,一次上传整段处理,DashScope 临时存储转完自动删除
  • 清晰的输出约定:stdout 只输出转写文本,进度 / 耗时 / 计费估算走 stderr,方便脚本和 Agent 调用
  • 内置 MCP Server:audio-transcribe-mcp 命令,手写 MCP stdio 协议(JSON-RPC 2.0),仅标准库零第三方依赖,任意 MCP 客户端即插即用

安装

pip install audio-transcribe-cli-mcp

也可从源码安装:

git clone https://github.com/OstrichHermit/audio-transcribe.git
cd audio-transcribe
pip install .

安装后会得到两个命令:asr(CLI)和 audio-transcribe-mcp(MCP Server)。

安装为 Agent Skill(可选)

仓库内附带 Agent Skill(skills/audio-transcribe/SKILL.md),把它复制到你所用 AI Agent 的 skills 目录,Agent 即可自动掌握本工具的用法。以 Claude Code 为例:

cp -r skills/audio-transcribe ~/.claude/skills/audio-transcribe

1. 安装依赖

  • Python 3.10+(pip install . 会自动安装 dashscope 依赖)
  • ffmpeg / ffprobe 自行安装并加入 PATH
  • 仅转写微信 SILK 文件时额外需要 uv(脚本自动创建 Python 3.11 临时环境安装 pilk,无需手动操作)

2. 配置 API Key

在阿里云百炼控制台创建 API Key,配置到环境变量:

# Windows
setx DASHSCOPE_API_KEY "sk-xxxx"

# macOS / Linux
echo 'export DASHSCOPE_API_KEY="sk-xxxx"' >> ~/.bashrc

默认直连百炼官方主域名,开箱即用。使用业务空间专属 key(sk-ws- 前缀)且分配了专属域名的用户,额外设置 DASHSCOPE_BASE_URL 即可(见下文环境变量)。

使用方法

asr "<音频或视频文件路径>"
asr "<文件>" --no-speakers   # 关闭说话人分离
asr "<文件>" --out 结果.txt   # 保存到文件
asr "<文件>" --keep-workdir   # 保留中间文件(调试)

示例:

$ asr meeting.mp4
[1/4] ffmpeg 预处理: meeting.mp4
[2/4] 上传音频(32.5 分钟)...
[3/4] 提交识别任务...
识别模型: qwen-audio-3.1-asr-flash-filetrans
  识别中... 45s
[4/4] 完成,耗时 78s,音频 32.5 分钟(计费约 0.06 元,按 3.1 Token 计费估算)
说话人1:大家好,今天我们讨论一下项目排期……
说话人2:好的,我先说下我这边的情况……

微信语音(SILK)

微信语音消息文件(*.silk,含 0x02 + #!SILK_V3 头)直接作为输入传入即可,脚本自动完成剥头、pilk 解码(24kHz PCM)→ ffmpeg 封装 WAV → 正常识别管线。

作为 MCP Server 接入

任意支持 MCP 的客户端(Claude Code、Claude Desktop、Cursor 等)都能接入:

# Claude Code
claude mcp add audio-transcribe -- audio-transcribe-mcp

其他客户端在 MCP 配置 JSON 中添加(env 里按需配置 API Key,也可继承系统环境变量):

{
  "mcpServers": {
    "audio-transcribe": {
      "command": "audio-transcribe-mcp",
      "env": {
        "DASHSCOPE_API_KEY": "sk-xxxx"
      }
    }
  }
}

也可以用模块方式启动:python -m audio_transcribe_cli.mcp_server。

接入后客户端会得到一个 transcribe 工具:file_path 必填,speakers(说话人分离,默认开)和 out_path(结果另存)可选。

环境变量

变量 说明
DASHSCOPE_API_KEY 百炼 API Key(必需)
DASHSCOPE_BASE_URL API 域名(可选)。默认 https://dashscope.aliyuncs.com/api/v1(官方主域名,开箱即用);使用业务空间专属域名的用户设置为你的专属域名,例如 https://xxxx.cn-beijing.maas.aliyuncs.com/api/v1
ASR_WORKSPACE 中间文件(转码 / 切片临时目录)的根目录(可选)。默认系统临时目录,转写完成自动清理

计费说明

  • 主模型 qwen-audio-3.1-asr-flash-filetrans 按 Token 计费(输入 25 Token/秒 × 0.8 元/百万 + 输出 2.7 元/百万),约 0.11 元/小时音频
  • 识别失败自动降级尝试 paraformer-v2
  • 脚本结束会在 stderr 输出本次计费估算

已知限制

  • 同步提交的文件大小受 DashScope 限制,超长音频依赖 filetrans 异步接口(脚本已处理,无需切片)
  • 说话人编号(说话人1 / 说话人2)与真实人物的对应关系需要结合内容自行判断
  • SILK 解码依赖 pilk 的预编译 wheel(cp311 及以下),通过 uv 临时环境解决,首次运行需下载环境,之后走缓存

Metadata

Release files for audio-transcribe-cli-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for audio-transcribe-cli-mcp 0.1.0
File Size Uploaded
audio_transcribe_cli_mcp-0.1.0.tar.gz 13.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for audio-transcribe-cli-mcp 0.1.0
File Interpreter ABI Platform
audio_transcribe_cli_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.0 kB

Release files / audio_transcribe_cli_mcp-0.1.0.tar.gz

Download URL audio_transcribe_cli_mcp-0.1.0.tar.gz
Size 13.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2c9071732a3f9078b2168ca601406191a0540190be90fbd139cdb7fdbd86d0c1
BLAKE2b-256 checksum
How to use checksums
18752621d409fba8f9a3b2617ccd43017660839feb2bd0209d1e26e5d63308bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / audio_transcribe_cli_mcp-0.1.0-py3-none-any.whl

Download URL audio_transcribe_cli_mcp-0.1.0-py3-none-any.whl
Size 13.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
367614c4e6703220618da18e3355e474109f1d7af162fc39771da994779b53b8
BLAKE2b-256 checksum
How to use checksums
b3d7fcf7cbe07c85801196bc0e712adac3ec98765a32032b3555bf4c00bc0e7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page