【AI实战日记-手搓聊天机器人】SenseVoiceSmall(多语言语音识别(ASR)模型) 的使用
前言
之前尝试了中文模型,最近想尝试一下多语言模型,因此下载下来尝试一下效果:
链接:https://www.modelscope.cn/models/iic/SenseVoiceSmall/files

SenseVoice开源项目介绍
SenseVoice开源模型是多语言音频理解模型,具有包括语音识别、语种识别、语音情感识别,声学事件检测能力。
模型结构图
SenseVoice多语言音频理解模型,支持语音识别、语种识别、语音情感识别、声学事件检测、逆文本正则化等能力,采用工业级数十万小时的标注音频进行模型训练,保证了模型的通用识别效果。模型可以被应用于中文、粤语、英语、日语、韩语音频识别,并输出带有情感和事件的富文本转写结果。

SenseVoice-Small是基于非自回归端到端框架模型,为了指定任务,我们在语音特征前添加四个嵌入作为输入传递给编码器:
- LID:用于预测音频语种标签。
- SER:用于预测音频情感标签。
- AED:用于预测音频包含的事件标签。
- ITN:用于指定识别输出文本是否进行逆文本正则化。
依赖环境
推理之前,请务必更新funasr与modelscope版本
pip install -U funasr modelscope
用法
推理
modelscope pipeline推理
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
inference_pipeline = pipeline(
task=Tasks.auto_speech_recognition,
model='iic/SenseVoiceSmall',
model_revision="master",
device="cuda:0",)
rec_result = inference_pipeline('https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav')
print(rec_result)
使用funasr推理
支持任意格式音频输入,支持任意时长输入
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "iic/SenseVoiceSmall"
model = AutoModel(
model=model_dir,
trust_remote_code=True,
remote_code="./model.py",
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
device="cuda:0",
)
# en
res = model.generate(
input=f"{model.model_path}/example/en.mp3",
cache={},
language="auto", # "zn", "en", "yue", "ja", "ko", "nospeech"
use_itn=True,
batch_size_s=60,
merge_vad=True, #
merge_length_s=15,
)
text = rich_transcription_postprocess(res[0]["text"])
print(text)
参数说明:
model_dir:模型名称,或本地磁盘中的模型路径。trust_remote_code:vad_model:表示开启VAD,VAD的作用是将长音频切割成短音频,此时推理耗时包括了VAD与SenseVoice总耗时,为链路耗时,如果需要单独测试SenseVoice模型耗时,可以关闭VAD模型。vad_kwargs:表示VAD模型配置,max_single_segment_time: 表示vad_model最大切割音频时长, 单位是毫秒ms。use_itn:输出结果中是否包含标点与逆文本正则化。batch_size_s表示采用动态batch,batch中总音频时长,单位为秒s。merge_vad:是否将 vad 模型切割的短音频碎片合成,合并后长度为merge_length_s,单位为秒s。ban_emo_unk:禁用emo_unk标签,禁用后所有的句子都会被赋与情感标签。默认False
model = AutoModel(model=model_dir, trust_remote_code=True, device="cuda:0")
res = model.generate(
input=f"{model.model_path}/example/en.mp3",
cache={},
language="auto", # "zn", "en", "yue", "ja", "ko", "nospeech"
use_itn=True,
batch_size=64,
)
更多详细用法,请参考 文档
模型下载
上面代码会自动下载模型,如果您需要离线下载好模型,可以通过下面代码,手动下载,之后指定模型本地路径即可。
SDK下载
#安装ModelScope
pip install modelscope
#SDK模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('iic/SenseVoiceSmall')
Git下载
#Git模型下载
git clone https://www.modelscope.cn/iic/SenseVoiceSmall.git
识别结果:
Fun-ASR
试错的过程很简单啊,今特别是今天冒名插修卡的同学,你们可以听到后面的有专门的活动课,它会大大降低你的思错成本。其实你也可以不要来听课,为什么你自己写嘛?我先今天写五个点,我就实试实验一下,反正这五个点不行,我再写五个点,再是再不行,那再写五个点嘛。你总会所谓的活动大神和所谓的高手都是只有一个,把所有的错。所有的坑全部趟一遍,留下正确的你就是所谓的大神明白吗?所以说关于活动通过这一块,我只送给你们四个字啊,换位思考。如果说你要想降低你的试错成本,今天来这里你们就是对的。因为有创企创需要搞这个机会。所以说关于活动过于不过这个问题或者活动很难通过这个话题。呃,如果真的要坐下来聊的话,要聊一天。但是我觉得我刚才说的四个字足够好,谢谢。好,非常感谢那个三毛老师的回答啊,三毛老师说我们在整个店铺的这个活动当中,我们要学会换位思考。其实。
SenseVoice
试错的过程很简单而,且特别是今天报名仓雪卡的同学,你们可以。听到后面的有专门的活动课,他会大大降低你的试绸成本。其实你也可以过来听课,为什么你自己写嘛?我先今天写5个点,我就试试试验一下,反正这5个点不行,我再写5个点,这试再不行,那再写5个点嘛。你总会所谓的活动搭神和所谓的高手,都是只有一个把所有的错,所有的坑全部趟一遍,留下正确的你就是所谓的搭神。明白吗?所以说关于活动通过这块,我只送给你们四个字啊,换位思考。如果说你要想降低你的试错成本,今天来这里你们就是对的。因为有畅畅血卡这个机会,所以说关于活动过于不过这个问题,或者活动很难通过这个话题呃,如果真的要坐下来聊的话,要聊一天。😡但是我觉得我刚才说的四个字足够。好,谢谢。好,非常感谢那个三茂老师的回答啊。三茂老师说,我们在整个店铺的这个活动当中,我们要学会换位思考。其实。😊

浙公网安备 33010602011771号