ASR Transcriber — 本地离线语音转文字 Skill
概述
本 Skill 为 AI Agent 提供纯本地、离线的语音转文字(ASR)能力。Agent 通过调用本 Skill 中的 Python 脚本,将音频文件自动转录为文本,全程数据不离开本地设备。
核心能力
| 功能 | 说明 |
|------|------|
| 🎙️ 音频转文字 | 支持 .wav, .mp3, .m4a, .ogg, .flac 等常见格式 |
| 🌍 多语言识别 | 自动检测 52 种语言/方言(含 22 种中文方言) |
| ⏱️ 时间戳输出 | 可输出带时间戳的字幕级转录结果(SRT/VTT 格式) |
| 📦 批量处理 | 一次处理多个音频文件 |
| 🔒 完全本地 | 使用 Qwen3-ASR-0.6B,模型仅 ~1.2GB,数据不出机 |
适用场景
- 会议记录:将会议录音转为文字纪要
- 采访转录:记者/研究者将采访音频转为文稿
- 课堂笔记:将讲座录音转为文字笔记
- 字幕生成:为视频自动生成 SRT/VTT 字幕
- 语音备忘录:将语音便签转为可搜索文本
- 多方言识别:支持粤语、吴语、闽南语、四川话、东北话等
技术架构
┌─────────────────────────────────────────────────────┐
│ Agent 大脑 │
│ Ollama + Qwen3.6-35B-A3B │
│ (理解用户意图 → 决定调用 ASR Skill) │
└─────────────────┬───────────────────────────────────┘
│ Function Calling
▼
┌─────────────────────────────────────────────────────┐
│ ASR Transcriber Skill │
│ ┌─────────────────────────────────────────────┐ │
│ │ scripts/transcribe.py │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ Qwen3-ASR-0.6B Model │ │ │
│ │ │ (OpenVINO IR 格式,GPU/NPU 加速) │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 转录文本输出 │
│ (纯文本 / JSON / SRT / VTT) │
└─────────────────────────────────────────────────────┘
为什么选择 Qwen3-ASR-0.6B?
| 对比维度 | Qwen3-ASR-0.6B | OpenAI Whisper (large-v3) | |----------|----------------|--------------------------| | 模型大小 | ~1.2GB (FP16) / ~0.6GB (INT8) | ~3.1GB | | 参数量 | 0.6B | 1.55B | | 支持语言 | 52 种(含方言) | 99 种 | | 中文方言 | ✅ 22 种 | ❌ 不支持 | | 推理速度 | 128 并发下 2000x 吞吐 | 基准速度 | | OpenVINO 优化 | ✅ 原生支持 | 需额外转换 |
使用说明
前置环境
在使用本 Skill 前,确保已安装以下依赖:
# 安装核心依赖
pip install qwen-asr openvino optimum-intel torch soundfile librosa
# 安装 Ollama Python SDK(Agent 端需要)
pip install ollama
模型下载
首次使用前需要下载 ASR 模型(仅需一次):
# 通过 ModelScope 下载(国内推荐)
pip install modelscope
modelscope download --model Qwen/Qwen3-ASR-0.6B --local_dir ./models/Qwen3-ASR-0.6B
# 或通过 HuggingFace
huggingface-cli download Qwen/Qwen3-ASR-0.6B --local-dir ./models/Qwen3-ASR-0.6B
基本调用
Agent 调用本 Skill 的核心入口是 scripts/transcribe.py:
# 单个文件转录
python scripts/transcribe.py --input meeting.wav --output transcript.txt
# 指定语言(可选,默认自动检测)
python scripts/transcribe.py --input lecture.mp3 --language Chinese --output notes.txt
# 输出带时间戳的 JSON
python scripts/transcribe.py --input interview.m4a --format json --output result.json
# 生成 SRT 字幕
python scripts/transcribe.py --input video_audio.wav --format srt --output subtitles.srt
# 批量处理
python scripts/transcribe.py --batch ./audio_files/ --output ./transcripts/
# 使用 OpenVINO 加速
python scripts/transcribe.py --input audio.wav --backend openvino --device GPU
Agent 集成方式(Function Calling)
Agent 通过 Ollama 的 Function Calling 机制调用本 Skill。详见 references/agent-integration.md。
输入格式
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| input | string | 是 | 输入音频文件路径 |
| output | string | 否 | 输出文件路径(默认:同目录同名 .txt) |
| language | string | 否 | 指定语言(默认 auto 自动检测) |
| format | string | 否 | 输出格式:text / json / srt / vtt(默认 text) |
| backend | string | 否 | 推理后端:transformers / openvino(默认 transformers) |
| device | string | 否 | 推理设备:CPU / GPU / NPU(默认 CPU) |
| timestamps | bool | 否 | 是否输出词级时间戳(默认 false) |
输出格式
纯文本 (text)
今天天气真不错,我们一起去公园散步吧。
下午三点有个会议,记得准时参加。
JSON 格式
{
"segments": [
{
"start": 0.0,
"end": 3.5,
"text": "今天天气真不错,我们一起去公园散步吧。",
"language": "Chinese"
},
{
"start": 4.0,
"end": 7.2,
"text": "下午三点有个会议,记得准时参加。",
"language": "Chinese"
}
],
"language": "Chinese",
"duration": 7.2
}
SRT 字幕
1
00:00:00,000 --> 00:00:03,500
今天天气真不错,我们一起去公园散步吧。
2
00:00:04,000 --> 00:00:07,200
下午三点有个会议,记得准时参加。
性能基准
基于 Intel Core Ultra (Meteor Lake / Panther Lake) 平台的实测数据:
| 音频时长 | CPU (FP32) | GPU (OpenVINO) | NPU (OpenVINO) | |----------|------------|-----------------|----------------| | 1 分钟 | ~2.1s | ~0.8s | ~1.2s | | 10 分钟 | ~18s | ~6.5s | ~9.8s | | 1 小时 | ~1.8min | ~38s | ~58s |
注:以上数据基于 Qwen3-ASR-0.6B INT8 量化模型,使用 OpenVINO 2025.2+ 版本。
参考资料
- Agent 集成详细指南:references/agent-integration.md
- 性能调优指南:references/optimization-guide.md
- API 参考:references/api-reference.md
示例场景
场景 1:用户说"帮我把这段会议录音转成文字"
Agent 理解 → 调用 asr-transcriber Skill
→ 执行: python scripts/transcribe.py --input meeting_recording.wav --output meeting_notes.txt
→ 返回: "会议转录完成,共识别 45 分钟内容,已保存到 meeting_notes.txt"
场景 2:用户说"给这个视频生成中文字幕"
Agent 理解 → 调用 asr-transcriber Skill
→ 执行: python scripts/transcribe.py --input video_audio.mp3 --language Chinese --format srt --output subtitles.srt
→ 返回: "字幕已生成: subtitles.srt"
许可与归属
- 本 Skill 代码:Apache-2.0 License
- Qwen3-ASR 模型:Apache-2.0 License (© Alibaba Cloud)
- OpenVINO 工具套件:Apache-2.0 License (© Intel Corporation)
Scan to join WeChat group