--- license: mit language: - zh - en - yue - ja - ko pipeline_tag: automatic-speech-recognition base_model: - FunAudioLLM/SenseVoiceSmall --- # SenseVoice(爱芯 NPU 版) FunASR SenseVoiceSmall 在爱芯 NPU 上的部署包,支持 **AX650N / AX630C / AX620Q** 三芯。 官方模型仓库:https://github.com/FunAudioLLM/SenseVoice ## 特性 - 语音识别(ASR):中文 / 英文 / 粤语 / 日语 / 韩语,自动语种识别 - 语音情感识别(SER)+ 声学事件分类(AEC) - 自动标点(ITN/非流式) - 流式识别(增量输出,带时间戳) - 纯 NPU 推理(ax_engine),Python 与 C++ 双 SDK ## 支持平台与模型 | 芯片 | 模型目录 | 非流式 | 流式 | 工具链 | |---|---|---|---|---| | AX650N | `sensevoice_ax650/` | ✅ | ✅ | Pulsar2 7.0 | | AX630C | `sensevoice_ax630c/` | ✅ | ✅ | Pulsar2 7.0(AX620E NPU2 full-core) | | AX620Q(AXera Pi Zero) | `sensevoice_ax620q/` | ✅ | ✅ | Pulsar2 7.0(AX620E NPU2,与 AX630C 同 NPU) | 每个模型目录内包含:`sensevoice.axmodel`、`streaming_sensevoice.axmodel`(流式)、 `am.mvn`、`tokens.txt`、`chn_jpn_yue_eng_ko_spectok.bpe.model`。 ## 快速开始 ### 1. 下载模型(三芯预编译) ```bash ./download_models.sh # 下载 models/sensevoice_ax650|ax630c|ax620q ``` ### 2. 安装 Python 环境 ```bash sudo apt-get install libsndfile-dev cd python pip install -r requirements.txt ``` 安装 NPU Python API(pyaxengine,0.1.3rc2 测试通过): ```bash pip install https://github.com/AXERA-TECH/pyaxengine/releases/download/0.1.3.rc2/axengine-0.1.3-py3-none-any.whl ``` ## Python 示例 ### 非流式识别(三芯) ```bash cd python # AX650N python3 main.py -i ../example/zh.mp3 --chip ax650 # AX630C python3 main.py -i ../example/zh.mp3 --chip ax630c # AX620Q(AXera Pi Zero) python3 main.py -i ../example/zh.mp3 --chip ax620q ``` 示例输出(AX650N): ``` RTF: 0.04386647134764582 Latency: 0.2463541030883789s Total length: 5.616s ASR result: 开饭时间早上九点至下午五点 ``` 英文: ```bash python3 main.py -i ../example/en.mp3 --chip ax650 ``` ``` RTF: 0.036785734138361184 Latency: 0.2639744281768799s Total length: 7.176s ASR result: the tribal chieftain called for the boy and presented him with fifty pieces of gold ``` ### 流式识别(三芯) ```bash cd python python3 main.py -i ../example/zh.mp3 --chip ax650 --streaming python3 main.py -i ../example/zh.mp3 --chip ax630c --streaming python3 main.py -i ../example/zh.mp3 --chip ax620q --streaming ``` 示例输出(增量带时间戳): ``` {'timestamps': [540], 'text': '开'} {'timestamps': [540, 780, 1080], 'text': '开放时'} {'timestamps': [540, 780, 1080, 1260, 1740], 'text': '开放时间早'} {'timestamps': [540, 780, 1080, 1260, 1740, 1920, 2340], 'text': '开放时间早上9'} {'timestamps': [540, 780, 1080, 1260, 1740, 1920, 2340, 2640], 'text': '开放时间早上9点'} {'timestamps': [540, 780, 1080, 1260, 1740, 1920, 2340, 2640, 3060], 'text': '开放时间早上9点至'} {'timestamps': [540, 780, 1080, 1260, 1740, 1920, 2340, 2640, 3060, 3780, 4020], 'text': '开放时间早上9点至下午'} {'timestamps': [540, 780, 1080, 1260, 1740, 1920, 2340, 2640, 3060, 3780, 4020, 4440, 4620], 'text': '开放时间早上9点至下午五点'} RTF: 0.03678379235444246 ``` ### 参数说明 | 参数 | 说明 | 默认值 | |---|---|---| | `--input/-i` | 输入音频文件(wav/mp3) | 必填 | | `--language/-l` | 识别语言:auto / zh / en / yue / ja / ko | auto | | `--chip/-c` | 目标芯片:ax650 / ax630c / ax620q | ax650 | | `--streaming` | 流式识别 | 关 | ### Gradio Demo ```bash cd python python3 gradio_demo.py ``` ![DEMO_Gradio](https://cdn-uploads.huggingface.co/production/uploads/660d19e9955bacf5a22a9b7b/ClusyqVUEm_gXTfvST7dg.png) ## C++ 示例 预编译产物:`cpp/ax650/`、`cpp/ax630c/`、`cpp/ax620q/`(各自包含 `test_sensevoice`、`asr_server`、`libax_asr_api.a`、头文件)。 模型目录需为 `models/sensevoice_ax*`(内含 `sensevoice/` 子目录,`download_models.sh` 下载的即为此结构)。 ### 非流式识别(三芯) ```bash # AX650N ./cpp/ax650/test_sensevoice -a example/zh.mp3 -t sensevoice -p models/sensevoice_ax650 # AX630C ./cpp/ax630c/test_sensevoice -a example/zh.mp3 -t sensevoice -p models/sensevoice_ax630c # AX620Q(AXera Pi Zero,arm uclibc) export LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH ./cpp/ax620q/test_sensevoice -a example/zh.mp3 -t sensevoice -p models/sensevoice_ax620q ``` 示例输出(AX630C,wav 输入): ``` Init asr: sensevoice success, take 0.6930seconds Result: 开饭时间早上9点至下午5点。 RTF(0.60 / 5.62) = 0.1072 ``` ### 流式识别(三芯) ```bash # 命令行演示:-s 流式模式(100ms 步长喂音频,打印增量结果) ./cpp/ax650/test_sensevoice -a example/zh.mp3 -t sensevoice -p models/sensevoice_ax650 -s ./cpp/ax630c/test_sensevoice -a example/zh.mp3 -t sensevoice -p models/sensevoice_ax630c -s ./cpp/ax620q/test_sensevoice -a example/zh.mp3 -t sensevoice -p models/sensevoice_ax620q -s ``` 示例输出(AX630C): ``` [ 5.30s] 开放时间早上嗯九点至下 [ 5.40s] 开放时间早上嗯九点至下 [ 5.50s] 开放时间早上嗯九点至下 [ 5.60s] 开放时间早上嗯九点至下 [FINAL] 开放时间早上嗯九点至下午五点 RTF(0.43 / 5.62) = 0.0759 ``` 库 API(增量识别): ```cpp AX_ASR_StreamInit(handle); // 初始化流式状态 AX_ASR_StreamFeed(handle, pcm, n, 16000); // 喂音频(float [-1,1],16k) AX_ASR_StreamResult(handle, &text); // 获取当前增量结果 AX_ASR_StreamFinish(handle); // 喂完后收尾刷新 ``` ### ASR 服务(asr_server) ```bash ./cpp/ax650/asr_server ``` ### C++ 源码 源码在 [Github main 分支](https://github.com/AXERA-TECH/ax_asr_api/tree/main) (SenseVoice LFR 前端修复与 AX620Q 构建修复已合入 main,[PR #10](https://github.com/AXERA-TECH/ax_asr_api/pull/10))。 流式专用模型的增量缓存等改动见 [ml-inory/sensevoice.axera](https://github.com/ml-inory/sensevoice.axera) 的 `cpp/ax_asr_api_streaming.patch`。 ## 性能参考(实测) RTF = 推理耗时 / 音频时长。非流式每次推理对应 256 帧 chunk(2.56 s 音频);流式每 10 帧推一次(对应 0.1 s 音频)。 数据为 `ax_run_model` 纯 NPU 实测(warmup=3, repeat=20): | 芯片 | 模式 | 7.0 RTF | 5.0 原版 RTF | 7.0 延迟/次 | |---|---|---|---|---| | AX650N | 非流式 | 0.014 | 0.021 | ~35 ms | | AX650N | 流式 | 0.11 | 0.13 | ~11 ms | | AX630C | 非流式 | 0.088 | 0.17 | ~224 ms | | AX630C | 流式 | 0.41 | 0.49 | ~41 ms | | AX620Q | 非流式 | 0.088* | — | ~224 ms* | | AX620Q | 流式 | 0.41* | — | ~41 ms* | 端到端示例(zh.mp3,5.62 s,C++,AX630C 板):非流式 RTF 0.107;流式(增量)RTF 0.076。 测量说明:AX650N 测于 AX650N 板;AX630C / AX620Q 测于 AX630C 板(两者为同一 NPU2 满核模型; AX620Q 因频率与 DDR 带宽较低,实机延迟会比上表 AX630C 板实测略高,待真实 AX620Q 板补充)。 ## 模型版本说明 - 非流式:AX650 / AX630C / AX620Q 均为 Pulsar2 7.0 编译(INT8 + smooth quant; AX630C / AX620Q 使用同一 AX620E/NPU2 full-core 模型,可在 AX630C 板直接运行,较 5.0 原版快约 2 倍) - 流式:三芯均为 Pulsar2 7.0 编译 - 支持从源码复现:导出 ONNX、校准与三芯编译脚本见 [ml-inory/sensevoice.axera](https://github.com/ml-inory/sensevoice.axera)(`model_convert/`) ## 准确率 WER(Word-Error-Rate):**2.0%** 复现: ```bash ./download_datasets.sh cd python python test_wer.py -d aishell -g datasets/ground_truth.txt --language zh ``` ## 技术讨论 - GitHub Issues(`AXERA-TECH/SenseVoice` / `ml-inory/sensevoice.axera`) - QQ 群:139953715