返回模型
说明文档
SenseVoiceSmall-RKNN2
SenseVoice是具有音频理解能力的音频基础模型,包括语音识别(ASR)、语种识别(LID)、语音情感识别(SER)和声学事件分类(AEC)或声学事件检测(AED)。
当前SenseVoice-small支持中、粤、英、日、韩语的多语言语音识别,情感识别和事件检测能力,具有极低的推理延迟。
- 推理速度(RKNN2):RK3588上单核NPU推理速度约20倍实时(每秒识别20秒的音频),比官方rknn-model-zoo中提供的whisper约快6倍。
- 内存占用(RKNN2):约1.1GB
使用方法
-
克隆项目到本地
-
安装依赖
pip install kaldi_native_fbank onnxruntime sentencepiece soundfile pyyaml "numpy<2" rknn-toolkit-lite2
- 运行
python ./sensevoice_rknn.py --audio_file output.wav
如果使用自己的音频文件测试发现识别不正常,你可能需要提前将它转换为16kHz, 16bit, 单声道的wav格式。
ffmpeg -i input.mp3 -f wav -acodec pcm_s16le -ac 1 -ar 16000 output.wav
RKNN模型转换
你需要提前安装rknn-toolkit2,测试可用的版本为2.3.3a25,可从 https://console.zbox.filez.com/l/I00fc3 下载(密码为"rknn")
- 下载或转换onnx模型
可以从 https://huggingface.co/lovemefan/SenseVoice-onnx 下载到onnx模型。 也可以根据 https://github.com/FunAudioLLM/SenseVoice 中的文档从Pytorch模型转换得到onnx模型。
模型文件应该命名为'sense-voice-encoder.onnx',放在转换脚本所在目录。
- 转换为rknn模型
python convert_rknn.py ./sense-voice-encoder.onnx
已知问题
RKNN2使用fp16推理时可能会出现溢出,导致结果为inf,可以尝试修改输入数据的缩放比例来解决。 在(现在应该已经通过模型内部插入缩放算子解决了)sensevoice_rknn.py中将SPEECH_SCALE设置为更小的值。
参考
happyme531/SenseVoiceSmall-RKNN2
作者 happyme531
↓ 0
♥ 30
创建时间: 2024-10-09 17:04:37+00:00
更新时间: 2025-11-04 22:14:48+00:00
在 Hugging Face 上查看文件 (12)
.gitattributes
README.md
am.mvn
chn_jpn_yue_eng_ko_spectok.bpe.model
convert_rknn.py
embedding.npy
fsmn-am.mvn
fsmn-config.yaml
fsmnvad-offline.onnx
ONNX
output.wav
sense-voice-encoder.rknn
sensevoice_rknn.py