☰
基于昇腾 910B NPU 部署 SenseVoiceSmall 语音识别服务
2026/10/15 19:05:09 网站建设 项目流程

基于昇腾 910B NPU 部署 SenseVoiceSmall 语音识别服务

本文记录在昇腾(Ascend)NPU 环境下,基于 Docker 部署SenseVoiceSmall语音识别模型的完整过程,包括 HTTP 接口服务启动、WebSocket 流式服务部署及测试。


一、模型准备

模型下载地址:

https://www.modelscope.cn/models/iic/SenseVoiceSmall

本地模型路径:

/data/nvme0/models/SenseVoiceSmall

二、启动 Docker 容器

exportIMAGE=quay.io/ascend/vllm-ascend:v0.23.0.post1-openeulerdockerrun\--nameSenseVoiceSmall\--shm-size=12g\--nethost\--device/dev/davinci6\--device/dev/davinci_manager\--device/dev/devmm_svm\--device/dev/hisi_hdc\-v/usr/local/dcmi:/usr/local/dcmi\-v/usr/local/bin/npu-smi:/usr/local/bin/npu-smi\-v/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64\-v/usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info\-v/etc/ascend_install.info:/etc/ascend_install.info\-v/root/.cache:/root/.cache\-v/data:/data\-it-d$IMAGEbash

进入容器后安装依赖:

pipinstall-Ufunasr yuminstall-yffmpeg

三、启动 HTTP 识别服务

funasr-server--host0.0.0.0--port8005\--model-path /data/nvme0/models/SenseVoiceSmall\--devicenpu

服务启动后会在8005端口提供 OpenAI 兼容的音频转写接口。

接口测试

1. 下载测试音频:

curl-Lhttps://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0764W0121.wav-osample.wav

2. 调用识别接口:

curlhttp://<服务器IP>:8005/v1/audio/transcriptions\-F"file=@sample.wav"\-F"model=sensevoice"

返回结果:

{"text":"甚至出现交易几乎停滞的情况"}

四、WebSocket 流式服务部署

1. 下载源码

wgethttps://codeload.github.com/modelscope/FunASR/zip/refs/tags/v1.4.16

上传服务器后解压,并安装依赖:

cdFunASR-1.4.16cdruntime/python/websocket/ pipinstall-rrequirements_server.txt

2. 启动 WebSocket 服务

__MODEL__nohuppython funasr_wss_server.py\--port8006\--devicenpu\--asr_model/data/nvme0/models/SenseVoiceSmall\>log.out2>&1&

服务启动后会自动加载以下 5 个模型:

序号模型作用
1speech_seaco_paraformer_largeSeACo-Paraformer,带热词功能的离线识别模型。2pass 模式下作为离线纠错模型,一句话结束后重新识别整句音频,利用热词增强输出更准确的最终文本(即日志中offline final text的来源)。
2speech_paraformer-large-onlineParaformer-Online,流式识别模型。在音频传输过程中逐块实时输出文字,实现"边说边出字"效果(online开头的中间结果由此产生)。
3speech_fsmn_vadFSMN-VAD,语音端点检测模型。检测音频中有效语音的起止时间点,切分语音、过滤静音片段,只把有人声的部分送给识别模型,降低无效计算。
4punc_ct-transformerCT-Transformer,实时标点恢复模型。为识别出的文本添加标点,专为流式场景优化,在 VAD 检测到静音时被调用,为历史文本补充标点。
5speech_campplus_sv_zh-cn_16k-commonCAM++,说话人声纹识别模型。提取说话人特征向量(embedding),在会议等场景中用于说话人分离,不输出文字或姓名。

3. 客户端测试

python funasr_wss_client.py\--host127.0.0.1\--port8006\--mode2pass\--chunk_size"8,8,4"\--audio_in../../funasr_api/asr_example.wav

运行结果:

Namespace(host='127.0.0.1', port=8006, chunk_size=[8, 8, 4], encoder_chunk_look_back=4, decoder_chunk_look_back=0, chunk_interval=10, hotword='', audio_in='../../funasr_api/asr_example.wav', audio_fs=16000, send_without_sleep=False, thread_num=1, words_max_print=10000, output_dir=None, ssl=1, use_itn=1, mode='2pass', result_timeout=300.0, log_dir='./asr_logs', log_flush_every=1) connect to wss://127.0.0.1:8006 hotword [LATENCY] wav=demo, mode=2pass-online, from_last_chunk=4.8 ms, from_first_chunk=1551.4 ms pid0_0: 欢 pid0_0: 欢迎大 pid0_0: 欢迎大家来体 pid0_0: 欢迎大家来体验达 pid0_0: 欢迎大家来体验达摩院 pid0_0: 欢迎大家来体验达摩院推出 pid0_0: 欢迎大家来体验达摩院推出的语 pid0_0: 欢迎大家来体验达摩院推出的语音识 pid0_0: 欢迎大家来体验达摩院推出的语音识别模 pid0_0: 欢迎大家来体验达摩院推出的语音识别模型 [spk=unknown score=0.000]

从日志中可以看到流式识别的全过程:随着音频逐块送入,模型实时返回中间结果,并在句末输出最终文本。


五、总结

  • HTTP 模式(funasr-server):适合一次性短音频的离线转写,接口简单易集成。
  • WebSocket 模式(funasr_wss_server.py):适合实时语音流场景,支持 2pass 模式(流式 + 离线纠错),可同时输出中间结果和最终结果。
  • 借助昇腾 NPU +vllm-ascend镜像,整个推理过程均在 NPU 上完成,部署流程与 GPU 版本基本一致。

本文环境:vllm-ascend:v0.23.0.post1-openeuler镜像 + 昇腾 NPU 卡(设备 单卡910B)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询