📦 小宇宙-asr
v1.0.0使用本地 Qwen3-ASR 语音识别将 小宇宙 (Xiaoyuzhou) 播客节目转录为文本。结合 xyz API(小宇宙FM API)获取节目元数据和音频...
运行时依赖
安装命令
点击复制技能文档
xiaoyuzhou-asr 使用本地 Qwen3-ASR(Metal/CUDA 加速)将小宇宙播客转录为文本。
前置条件
- xyz API 服务器运行 —— 获取小宇宙节目数据与音频 URL
- Access token —— 先 POST /sendCode 再 POST /login(见 references/xyz-api.md)
- ffmpeg —— 音频格式转换(brew install ffmpeg)
- Qwen3-ASR 模型 —— 下载(HF Hub 不含 tokenizer.json):
- qwen3-asr-rs —— 源码编译:
- tokenizer.json —— 首次运行由脚本自动生成(vocab.json + merges.txt),无需手动。
工作流 Step 1:查找节目 TOKEN="$XYZ_ACCESS_TOKEN" BASE="http://localhost:23020" # 关键词搜索 curl -s -X POST $BASE/search -H "x-jike-access-token: $TOKEN" -H "Content-Type: application/json" -d '{"keyword":"关键词","type":"EPISODE"}' # 获取节目详情(含音频 URL) curl -s -X POST $BASE/episode_detail -H "x-jike-access-token: $TOKEN" -H "Content-Type: application/json" -d '{"eid":"EPISODE_ID"}' # 列出播客全部节目 curl -s -X POST $BASE/episode_list -H "x-jike-access-token: $TOKEN" -H "Content-Type: application/json" -d '{"pid":"PODCAST_ID","order":"desc"}'
Step 2:下载并转换音频 音频 URL 在 data.data.media.source.url(m4a)。 mkdir -p /tmp/xiaoyuzhou-audio curl -L -o /tmp/xiaoyuzhou-audio/episode.m4a "$AUDIO_URL" ffmpeg -y -i /tmp/xiaoyuzhou-audio/episode.m4a -ar 16000 -ac 1 /tmp/xiaoyuzhou-audio/episode.wav
Step 3:分割长音频(>3 min 必须) 固定时长分割(推荐,Metal 显存安全): ffmpeg -y -i episode.wav -f segment -segment_time 180 -ar 16000 -ac 1 seg_%03d.wav 或静音检测分割(连续语音可能无静音): ffmpeg -i episode.wav -af "silencedetect=noise=-30dB:d=2" -f null - 2>&1 | grep silence_end ffmpeg -i episode.wav -f segment -segment_times T1,T2 -ar 16000 -ac 1 seg_%03d.wav
Step 4:转录 MODEL_DIR="/path/to/models/0.6B" ASR_BIN="qwen3-asr-rs/target/release/examples/local_transcribe" # 逐段转录 for seg in seg_*.wav; do $ASR_BIN $MODEL_DIR $seg 2>/dev/null | grep "^Text :" | sed 's/^Text : //'; done 高效 Rust 一次性加载模型示例: use qwen3_asr::{AsrInference, TranscribeOptions, best_device}; let engine = AsrInference::load("models/0.6B", best_device())?; for seg in segments { let result = engine.transcribe(&seg, TranscribeOptions::default())?; output.push(result.text); }
Step 5:输出格式 合并转录与元数据为 markdown: # {title} 节目: {podcast.title} | 日期: {pubDate} | 时长: {duration}s
转录文本
{transcript}参考 xyz API 端点与鉴权:references/xyz-api.md Qwen3-ASR 用法与性能:references/qwen3-asr.md
Token 管理 Token 会过期,401 时刷新:POST /refresh_token 环境变量:XYZ_ACCESS_TOKEN、XYZ_REFRESH_TOKEN 无有效 token 时提示登录。
限制
- 必须将音频切为 ≤3 min 段,保证 Metal GPU 稳定
- 音频须为 WAV 16kHz mono
- tokenizer.json 需手动生成(HF 下载不含)
- 需要 local_transcribe 二进制(demo 仅内置测试样例)
- xyz API 需 +86 手机号登录
- 全部本地处理,音频不会离开本机