一、模型与组件简介
- SenseVoice 模型
多语言音频理解开源模型,支持语音识别、语种识别、情感识别等功能,适用于中、粤、英、日、韩等语言。 - ManySpeech.AliParaformerAsr
C# 语音识别推理库,支持 paraformer-large、paraformer-seaco-large、sensevoice-small 等 ONNX 格式模型,包括流式(online)和非流式(offline)模型。
二、调用 SenseVoice-small 模型的三种方法
方法一:通过命令行参数(推荐新手)
- 运行
ManySpeech.AliParaformerAsr.Examples
示例程序 - 当控制台显示 “Enter parameters (press Enter to skip)” 时,输入:
-type offline -method one -model sensevoice-small-int8-onnx
3.按提示完成后续操作即可
方法二:修改示例代码默认值
1.打开示例项目中的 Program.cs
文件
2.找到 _defaultOfflineModelName
变量,修改为:
private static Dictionary<string, string> _defaultOfflineModelName = new Dictionary<string, string>{ { "aliparaformerasr", "sensevoice-small-int8-onnx" }
};
3.重新编译运行程序,将默认使用 SenseVoice-small 模型
方法三:在自定义项目中集成
1.参考示例代码,将封装的核心方法(选中的文件)复制到你的项目中,如下图:
示例中封装的核心方法
2.调用识别方法之前,设置回调函数:
SetOfflineRecognizerCallbackForResult(recognizerType: "offline");
3.调用识别方法:
var methodType="one"; //"batch"
var modelAccuracy="int8"; //"fp32"
var threads=2;
var files=new string[]{"to/path/file1.wav"};//默认支持wav类型
var modelBasePath="to/path/folder_name";//AppDomain.CurrentDomain.BaseDirectory
OfflineAliParaformerAsrRecognizer.OfflineRecognizer( methodType, "sensevoice-small-int8-onnx", // 指定模型名称
modelAccuracy, threads, files, modelBasePath );
在windows10+环境,如需支持更多音频格式,可将OfflineAliParaformerAsrRecognizer.cs 文件中 AudioHelper.GetFileSample方法修改为AudioHelper.GetMediaSample,将 OnlineAliParaformerAsrRecognizer.cs 文件中 AudioHelper.GetFileChunkSamples方法修改为 AudioHelper.GetMediaChunkSamples。
三、使用其他相关模型
- 访问魔搭模型库:https://modelscope.cn/profile/manyeyes
- 查找所需模型:
搜索关键词,如:paraformer-large
、paraformer-seaco-large
、sensevoice-small
,找到相关的 ONNX 模型。
示例:使用 wenetspeech-yue 数据集微调的 SenseVoice 模型
模型地址:https://modelscope.cn/models/manyeyes/sensevoice-small-wenetspeech-yue-onnx
模型名称:sensevoice-small-wenetspeech-yue-onnx
- 替换上述方法中的模型名称参数即可
四、注意事项
1.区分模型类型:
- 明确模型是流式(online)还是非流式(offline)
- 示例:SenseVoice-small 为非流式(offline)模型,需指定
-type offline
2.模型格式要求:确保使用的模型文件是通过 FunAsr 导出的 ONNX 格式
3.参数配置:不同模型可能需要不同的参数配置,建议参考具体模型文档