FunASR:把录音整理成带时间段与匿名说话人的文本

开源项目猫目发布于 来源:FunASR 官方资料
ASR、VAD、标点和CAM++分别提供什么,输出该怎样读
FunASR:把录音整理成带时间段与匿名说话人的文本

为什么值得关注

帮助录音整理者把转写结果接到回听与剪辑流程,同时避免把匿名聚类误当人物识别。

适合谁:有访谈、讨论或课程录音,需要可回听文本的开发者与内容团队。

这次有哪些亮点

  • 以Paraformer、FSMN-VAD、CT标点与CAM++组合管线
  • sentence_info时间单位为毫秒,字段依模型与路径变化
  • 匿名说话人标签只在当前录音内成立

使用前需要知道

多人重叠、噪声和短发言可能影响分离;VAD不是人物切换检测,模型权重许可独立于MIT工具包;所有关键引述需回听。

录完一场讨论,接下来需要知道“哪段在什么时候、由哪个声音说”,纯文字转写还不够。FunASR 是语音处理工具包,可以把识别、切段、标点与说话人嵌入组合起来,输出可回到原录音检查的文本。它不是一个固定模型,选了不同检查点和运行路径,结果字段也会不同。

当前README提供Paraformer-zh、FSMN-VAD、ct-punc与CAM++的组合示例。识别模型负责文字,VAD找出有讲话的时间区域,标点模型帮助断句,CAM++提取声音嵌入,由管线聚类并分配匿名编号。仅加载ASR,不会自动拥有所有组件的功能;只配置spk_model而没有相应VAD路径,也不能假定人物分离已经生效。

官方Python SDK文档把完整过程写成加载四个本地模型目录,再输入音频,读取结果与sentence_info。对每个句段,可取得开始、结束、文字和运行说话人分配后才有的spk字段。这里的开始与结束单位是毫秒,接到剪辑秒数时要除以1000。管线会先找出讲话区域,为批处理按时长排序,再恢复片段原顺序,把局部时间偏移回整条录音。这个过程解释了结果为何能用来定位原文件,而不是只有互不相干的短音频文本。

对访谈整理,一个合适的输出表是“开始时间、结束时间、匿名声音编号、文本、待确认标记”。先从开头、转折、多人交谈各选一段回听,确认分离是否合理,再用它找素材。这是编辑的应用示例,未运行。即使某次spk=0对应主持人,也不代表另一条录音的0仍是同一个人;姓名需要你根据授权音频回听标注。

VAD也不是人物切换检测。它找到的是有声音活动的区域,一段里可能包含多人接话。短回应、重叠说话或环境噪声会让聚类更难,不能把匿名编号当作准确身份。官方也明确CAM++的嵌入与管线聚类,是不同于注册声纹、验证已知人物的任务。

字幕还需要再做一步验收。sentence_info不保证每条路径都有,缺少可用标点或时间戳时会改变切段方式,某些组合可能返回空数组。更细的timestamp按模型可能是词、字或其他对齐单位,不宜直接称“逐字精确”。修改了文本或做热词替换后,也不能假定时间自动重新对齐。交付字幕时,应看文字、断句和起止位置是否共同合适。

这条访谈路径使用的是文件转写管线。当前README也有SenseVoice、Fun-ASR-Nano、流式Paraformer与第三方OpenMOSS入口;它们需要分别选择模型和运行方式,不能将另一路的字段直接套到 sentence_info 上。

离线也有前提:完整模型、前端与辅助组件须事先准备,SDK的disable_update只关闭版本检查,不阻止所有模型联网请求。要处理不便上传的录音,应采用明确的本地路径并实际断网验证,不能把“在电脑运行”直接视为已经离线。

工具包代码为MIT;预训练权重另看各卡。当前HuggingFace的Paraformer-zh卡标Apache2.0,其他组件及ModelScope来源不能据此统一推定;链接自定义MODEL_LICENSE的权重遵守相应协议。录音使用权限与参与者同意也要覆盖你的处理和发布用途。

最后交付给编辑的可以是一份带时间段与匿名声音编号的素材表;关键引述、姓名和人物归属仍应回听确认。

资料:README、SDK字段与管线边界、Paraformer-zh卡、权重协议。

原始资料:FunASR 官方资料

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享