MaixCAM MaixPy 部署在线语音识别环境
更新历史
日期 | 版本 | 作者 | 更新内容 |
---|---|---|---|
2024-12-23 | 1.0.0 | lxowalle | 初版文档 |
一、简介#
本地部署在线语音识别是一种实现语音输入实时处理的解决方案。它通过在本地服务器上运行语音识别模型并与MaixCAM
交互,无需依赖外部云服务,实现语音数据的即时处理和结果返回。这种方式不仅能够提升响应速度,还能更好地保护用户隐私,特别适用于对数据安全和实时性要求较高的应用场景,如智能硬件、工业控制和实时字幕生成等。
本文选择了开源的sherpa-onnx
框架进行部署, sherpa-onnx
框架是sherpa
的子项目, 支持流式语音识别,非流式语音识别,文本转语音,说话人分类,说话人识别,说话人验证,口语识别等等。下文主要介绍使用MaixCAM
与sherpa-onnx
实现流式语音识别.
注: 流式语音识别的特点是实时性高,并且可以边说边识别, 常用于实时翻译, 语音助手等场景; 非流式语音识别的特点是必须每次推理完整的一句话,准确度高
二、部署语音识别服务器#
sherpa-onnx
支持非常多的语言部署,包括C/C++
,Python
,Java
等等,为了部署方便,我们选择使用Python
语言部署。下面操作过程中有任何疑问,可以自己先看一遍sherpa
的文档, 下面开始部署吧~
2.0.1. 下载sherpa-onnx
仓库#
2.0.2. 安装依赖包#
2.0.3. 安装sherpa-onnx包#
如果需要使用GPU
, 则下载带cuda
的包
如果找不到包或安装失败,可以选择从源码编译安装
如果有GPU
但是没有cuda
环境,则点击这里
的方法安装对应版本cuda
2.0.4. 检查sherpa-onnx
包是否安装成功#
2.0.5. 下载模型#
中英文双语zipformer模型 sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20-mobile
中英文双语paraformer模型 sherpa-onnx-streaming-paraformer-trilingual-zh-cantonese-en
注:中文识别建议用
sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20-mobile
模型英文识别建议用
sherpa-onnx-streaming-paraformer-trilingual-zh-cantonese-en
模型
2.0.6. 运行服务器#
sherpa-onnx
提供了一个服务器的示例代码,所以不需要我们再造轮子编代码才能体验在线语音识别,启动方法看下面的示例
运行zipformer
模型#
这个示例运行了streaming_server.py
作为服务器代码,其中--encoder
、--decoder
和--joiner
是模型文件,--tokens
是用来映射模型输出的列表, --provider
用来指示是否启用GPU
,默认使用CPU
运行paraformer
模型#
这个示例运行了streaming_server.py
作为服务器代码,其中--paraformer-encoder
和--paraformer-encoder
是模型文件,--tokens
是用来映射模型输出的列表, --provider
用来指示是否启用GPU
,默认使用CPU
运行成功后的日志#
至此ASR模型服务器就跑起来了,开始与服务器通信
2.0.7. 基于MaixCAM
与服务器通信#
为了简化篇幅这里放了示例客户端代码的链接,自行拷贝。注意大部分情况音频数据要求采样率16000Hz
, 采样通道为1
。
MaixCAM
流式识别点击这里获取代码
MaixCAM
非流式识别点击这里获取代码
修改服务器地址和端口号后,再使用maixvision
运行即可。如果你运行的是流式识别的代码,那么尝试跟MaixCAM
开始对话吧~
注:这里没有过多赘述客户端和服务器通信的协议的原因之一是因为它们通信很简单,基本是
websocket
连接后的数据裸收发,建议先上手体验后直接看代码来了解真正想知道的信息。
至此就部署完成了