SenseVoice Transcribe

Polar Sponsor
爱发电 赞助
.NET 9.0

基于SenseVoice-Small与FSMN-VAD,将WAV/MP3/M4A/FLAC等音频转录为带时间戳文本,支持单文件及批量处理,采用VAD锚定分段...

感应变换语言: 调制音符, 使用 FunASR 的 iic/ 感应变小 模式, 使用 fsmn-vad 进行时间变调主播.

功能概述

感应变换语言: 调制音符, 使用 FunASR 的 iic/ 感应变小 模式, 使用 fsmn-vad 进行时间变调主播.是一项面向实际任务的技能,主要用于Pipeline.;FMSN- VAD 的音频分集到语音区域( )。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

SenseVoice 转录

使用 FunASR 的 iic/SenseVoiceSmall 模型对音频进行转录,输出带时间戳的文本;时间戳锚定采用 fsmn-vad 语音活动检测(VAD)模型。

处理流程

  1. FSMN-VAD 将音频切分为语音片段(例如:30 分钟音频约生成 258 个片段)
  2. SenseVoice-Small 对整段音频执行转录,启用 merge_vad=True
  3. 原始文本按 <|zh|> 标签分割 → 经 rich_transcription_postprocess() 清洗
  4. 文本片段按比例映射至 VAD 时间戳
  5. 输出格式为每行一条 [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}')
"

批量模式(daylog)

配套脚本 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-dates
  • 输出文件名添加序号前缀(000_、001_…),保障字典序即时间序
  • 每完成 25% 进度向 Discord 发送一次里程碑通知

输出格式示例

[录音开始: 09:41:29]
[09:41:35] 到了,我们下车吧。
[09:41:48] 武康大楼,人好多啊。
[09:42:04] 你帮我在这里拍一张。
...

性能表现(Apple M4,10 核 CPU)

指标 数值
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 技能对比

Whisper(旧) SenseVoice(新)
模型 mlx-whisper-medium SenseVoice-Small(234MB)
准确率 23–38% 92%
幻觉内容(hallucinations) 每次会话数百条 0
时间戳精度 逐词级(约 2–4 秒) VAD 锚定(约 15 秒)
重复行比例 ~23% <0.2%
中文支持 较弱 原生支持(专为普通话优化)

关于表情符号的说明

SenseVoice 会在文本片段末尾附加情绪标签(如 😊😔😡😮)。这些是模型自身输出产物,反映其检测到的语音情绪倾向,并非音频中实际存在的表情符号。下游处理环节(如笔记汇总)应忽略或主动剥离此类标签。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习