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

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

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


一、模型准备

模型下载地址:

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

本地模型路径:

bash 复制代码
/data/nvme0/models/SenseVoiceSmall

二、启动 Docker 容器

bash 复制代码
export IMAGE=quay.io/ascend/vllm-ascend:v0.23.0.post1-openeuler

docker run \
    --name SenseVoiceSmall \
    --shm-size=12g \
    --net host \
    --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 $IMAGE bash

进入容器后安装依赖:

bash 复制代码
pip install -U funasr
yum install -y ffmpeg

三、启动 HTTP 识别服务

bash 复制代码
funasr-server --host 0.0.0.0 --port 8005 \
  --model-path /data/nvme0/models/SenseVoiceSmall \
  --device npu

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

接口测试

1. 下载测试音频:

bash 复制代码
curl -L https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0764W0121.wav -o sample.wav

2. 调用识别接口:

bash 复制代码
curl http://<服务器IP>:8005/v1/audio/transcriptions \
  -F "file=@sample.wav" \
  -F "model=sensevoice"

返回结果:

json 复制代码
{"text":"甚至出现交易几乎停滞的情况"}

四、WebSocket 流式服务部署

1. 下载源码

bash 复制代码
wget https://codeload.github.com/modelscope/FunASR/zip/refs/tags/v1.4.16

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

bash 复制代码
cd FunASR-1.4.16
cd runtime/python/websocket/
pip install -r requirements_server.txt

2. 启动 WebSocket 服务

bash 复制代码
__MODEL__

nohup python funasr_wss_server.py \
  --port 8006 \
  --device npu \
  --asr_model /data/nvme0/models/SenseVoiceSmall \
  > log.out 2>&1 &

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

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

3. 客户端测试

bash 复制代码
python funasr_wss_client.py \
  --host 127.0.0.1 \
  --port 8006 \
  --mode 2pass \
  --chunk_size "8,8,4" \
  --audio_in ../../funasr_api/asr_example.wav

运行结果:

text 复制代码
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)。

相关推荐
羲云网络5 分钟前
AI API 门户上线不难,难的是让用户完成第一次调用
人工智能·产品运营·api·开发者·acedatacloud
视觉小萌新21 分钟前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
Zhao-Jichao31 分钟前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
阿里云大数据AI技术31 分钟前
EMR Serverless StarRocks 全面支持 Paimon 2.0:构建多模态统一分析与检索
人工智能
电科_银尘36 分钟前
【深度学习项目实战·11】损失函数与评价指标:让模型输出、标签与结果真正对应
人工智能·深度学习
RanceGru1 小时前
AI嵌入式7——瑞芯微RK3588s+RK1828 NPU 部署VLM模型(Qwen3-VL-2B)
人工智能
阿里云大数据AI技术1 小时前
云栖实录 | 具身智能前沿对话
人工智能
imythu1 小时前
让 Claude Code 在家跑,我在外面用手机盯着:做一个开源工具踩过的几个坑
人工智能·github
用户6602638008361 小时前
8GB 显存跑 7B 大模型:vLLM 消费级显卡极限实战白皮书
人工智能
躺柒2 小时前
读数据安全架构设计与实践20安全政策文件体系(上)
大数据·人工智能·安全·数据安全·安全架构·安全体系