基于SenseVoice-Small与FSMN-VAD,将WAV/MP3/M4A/FLAC等音频转录为带时间戳文本,支持单文件及批量处理,采用VAD锚定分段...
感应变换语言: 调制音符, 使用 FunASR 的 iic/ 感应变小 模式, 使用 fsmn-vad 进行时间变调主播.是一项面向实际任务的技能,主要用于Pipeline.;FMSN- VAD 的音频分集到语音区域( )。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用 FunASR 的 iic/SenseVoiceSmall 模型对音频进行转录,输出带时间戳的文本;时间戳锚定采用 fsmn-vad 语音活动检测(VAD)模型。
merge_vad=True<|zh|> 标签分割 → 经 rich_transcription_postprocess() 清洗[HH:MM:SS] text,时间粒度约为 15 秒Venv: ~/.openclaw/venvs/sensevoice/ Python: 3.12 关键依赖包: funasr==1.3.1, modelscope, onnxruntime 模型缓存路径: ~/.cache/modelscope/hub/models/iic/SenseVoiceSmall VAD 模型缓存路径: ~/.cache/modelscope/hub/models/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch
python3 -m venv ~/.openclaw/venvs/sensevoice source ~/.openclaw/venvs/sensevoice/bin/activate pip install funasr modelscope onnxruntime # 模型将在首次运行时自动下载(SenseVoice 约 234MB + VAD 约 4MB)
source ~/.openclaw/venvs/sensevoice/bin/activate python3 -c " from funasr import AutoModel from funasr.utils.postprocess_utils import rich_transcription_postprocess from datetime import datetime, timedelta import re wav = '' # 从文件名解析起始时间:TX01_MIC015_20260308_124130_orig.wav m = re.search(r'(\d{8})_(\d{6})', wav) start_dt = datetime.strptime(m.group(1)+m.group(2), '%Y%m%d%H%M%S') if m else None vad_model = AutoModel(model='fsmn-vad', disable_update=True) model = AutoModel(model='iic/SenseVoiceSmall', vad_model='fsmn-vad', vad_kwargs={'max_single_segment_time': 30000}, device='cpu') vad_segs = vad_model.generate(input=wav)[0].get('value', []) res = model.generate(input=wav, cache={}, language='zh', use_itn=True, batch_size_s=60, merge_vad=True) texts = [rich_transcription_postprocess(s).strip() for s in re.split(r'<|zh|>', res[0]['text']) if s.strip()] texts = [s for s in texts if len(s) > 1] ratio = len(vad_segs) / len(texts) if texts else 1 for i, t in enumerate(texts): vi = min(int(i * ratio), len(vad_segs)-1) ts = (start_dt + timedelta(milliseconds=vad_segs[vi][0])).strftime('%H:%M:%S') if start_dt else f'{vad_segs[vi][0]//1000:.0f}s' print(f'[{ts}] {t}') "
配套脚本 scripts/batch_transcribe.py 实现完整的 daylog 转录流水线:
source ~/.openclaw/venvs/sensevoice/bin/activate cd ~/Documents/dec/daylog # 预演模式 — 查看将被转录的文件列表 python3 scripts/batch_transcribe.py --dry-run # 转录所有新增文件 python3 scripts/batch_transcribe.py # 强制重转指定日期(先删除已有结果,再重新运行) python3 scripts/batch_transcribe.py --force-dates 2026-03-07,2026-03-08 # 启用进度文件 + Discord Webhook 通知 python3 scripts/batch_transcribe.py --progress-file /tmp/daylog-progress.json --discord-webhook https://discord.com/api/webhooks/...
命令行参数说明:
| 参数 | 说明 |
|---|---|
--dry-run |
仅预览,不写入任何输出 |
--engine sensevoice|whisper |
指定转录引擎(默认为 sensevoice) |
--force-dates YYYY-MM-DD,... |
删除并重新转录指定日期的所有文件 |
--progress-file PATH |
将 JSON 格式进度信息写入指定路径,便于监控 |
--discord-webhook URL |
向 Discord 发送任务启动、里程碑及完成通知 |
目录结构:
daylog/
├── raw/ # WAV 输入源(DJI MIC 3,48kHz/32bit,约 247MB/30min)
│ ├── TX01_MIC009_20260308_094129_orig.wav
│ └── ...
├── transcripts/ # 输出目录,按日期分组
│ └── 2026-03-08/
│ ├── 000_TX01_MIC009_20260308_094129_orig.txt
│ └── ...
└── notes/ # 汇总后的每日笔记(独立步骤生成)
└── 2026-03-08.md
行为说明:
YYYYMMDD)对 WAV 文件分组--force-dates000_、001_…),保障字典序即时间序[录音开始: 09:41:29] [09:41:35] 到了,我们下车吧。 [09:41:48] 武康大楼,人好多啊。 [09:42:04] 你帮我在这里拍一张。 ...
| 指标 | 数值 |
|---|---|
| RTF(实时因子) | ~0.04(25 倍实时速度) |
| CPU 占用 | ~1.2 核(12%) |
| 内存占用 | ~1.5GB |
| 30 分钟 WAV 处理耗时 | ~73 秒(转录)+ ~4 秒(VAD) |
| 关键词准确率 | 92%(Whisper-medium 为 23%,turbo 为 38%) |
| 幻觉内容(hallucinations) | 0(Whisper 每次会话数百条) |
| 模型体积 | 234MB(Whisper-large-v3-turbo 为 1.5GB) |
| Whisper(旧) | SenseVoice(新) | |
|---|---|---|
| 模型 | mlx-whisper-medium | SenseVoice-Small(234MB) |
| 准确率 | 23–38% | 92% |
| 幻觉内容(hallucinations) | 每次会话数百条 | 0 |
| 时间戳精度 | 逐词级(约 2–4 秒) | VAD 锚定(约 15 秒) |
| 重复行比例 | ~23% | <0.2% |
| 中文支持 | 较弱 | 原生支持(专为普通话优化) |
SenseVoice 会在文本片段末尾附加情绪标签(如 😊😔😡😮)。这些是模型自身输出产物,反映其检测到的语音情绪倾向,并非音频中实际存在的表情符号。下游处理环节(如笔记汇总)应忽略或主动剥离此类标签。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章