发布日期: 2022/01/05 03:35

Maix-Speech是专为嵌入式环境设计的离线语音库,设计目标包括:ASR/TTS/CHAT

作者的设计初衷是完成一个低至Cortex-A7 1.0GHz 单核下可以实时运行的ASR库。

目前市面上的离线语音库非常稀缺,即使有也对主控要求很高,Maix-Speech 针对语音识别算法进行了深度优化,在内存占用上达到了数量级上的领先,并且保持了优良的WER。

基本情况

Maix-Speech刚发布了一个面向嵌入式设备的离线语音识别库,可以在低至Coretx-A7 1.0GHz, 64MB系统内存的嵌入式设备上实时运行(RTF<1.0)

最低内存占用25MB,磁盘占用35MB(含语言模型);最优aishell wer约5.4%;支持流式识别,支持连续数字识别,关键词识别,连续大词表语音识别等

支持:x86_64, armv7, aarch64, riscv64 等多种硬件平台,支持 AWNN, Zhouyi AIPU 加速。

感兴趣的可以跳转githuib来点个赞。

链接:https://github.com/sipeed/Maix-Speech

Maix-Speech 的优势

  • 多平台支持

Maix-Speech 支持多种嵌入式平台

  • 极低的内存要求和优良的正确率

Maix-Speech的内存占用相对于市面上的其他语音识别框架有数量级上的领先优势,并且保持良好的WER水平。

Maix-Speech最低可以实时运行(RTF<1)于典型的 1.0GHz Cortex-A7 内核的芯片上,并且最低仅占用25MB左右内存, 也就意味着它可以实时运行在典型的内封64MB内存的A7芯片上。

常见离线语音识别工具对比
  • 细节优化

优化了openfst及wfst解码,使得整个解码图无需载入内存即可实时读取解码。

可选载入内存的LG.fst解码图,压缩为lg.sfst, 尺寸为原始fst的1/3左右,占用内存为kaldi载入相同fst的内存占用的 1/20左右(kaldi需要6.5倍左右内存载入fst文件)。

使用新的sMBR等效的方式(无需修改loss)进行鉴别性训练,提升流式识别的准确率

效果展示

在全志 R329 上的运行效果,视频中板卡为 MaixSense

连续大词汇量语音识别(LVCSR)
连续中文数字识别 (DIGIT)
关键词识别(KWS)

Maix-Speech 工程结构

├── assets
│   └── test_files                # 提供的测试文件,方便上手测试
├── components                     # 组件
│   ├── asr_lib                   # 组件 asr_lib
│   │   ├── CMakeLists.txt       # 组件配置文件
│   │   ├── include              # 头文件
│   │   ├── Kconfig              # 组件 menuconfig 配置文件
│   │   ├── lib                  # 各个平台的库文件
│   │   └── src                  # 源文件
│   └── utils                     # 工具类组件,包括了跑分、字体等
├── Kconfig                       # 最顶级的 menuconfig 配置文件
├── LICENSE                       # 开源协议(证书)
├── projects                      # 工程
│   └── maix_asr                 # ASR 工程
│       ├── CMakeLists.txt       # 工程配置文件
│       ├── main                 # 工程里面的主组件
│       └── project.py           # 构建脚本,方便输入命令
├── README.md                     # 项目首页英文文档
├── README_ZH.md                  # 项目首页中文文档
├── tools                         # 项目构建相关代码,一般不用看
└── usage_zh.md                   # 使用方法

构建代码

项目支持多平台, 不同的平台使用的工具链和库可能有差异,注意区别。

PC环境的推荐系统为 Ubuntu 18.04 以上,gcc 7.5 以上,CMake 3.20以上,失能conda虚拟环境。其他环境可能有部分软件需要额外设置,不建议新手使用。

其他嵌入式环境的交叉编译方式可能存在一些细节使用问题,商业用户可以联系support@sipeed.com 获取支持。

  • 环境准备

首先电脑安装工具链和库(Ubuntu 为例)

sudo apt update

sudo apt install git python3 cmake

python 只是用在编译脚本上的,方便简单地输入编译命令, 如果你电脑里有任何一个版本的 python 都是可以的, 为确保不出问题最好是Python3。如果实在不想装 python , 也可以手动使用 cmake 命令进行编译。

x86 (Linux) 或 在跑在其它架构的系统里编译,比如在R329或树莓派的系统里使用GCC编译 安装工具链和库(Ubuntu为例)。

sudo apt install build-essential libasound2-dev

交叉编译 下载工具链,并解压到指定文件夹 比如R329, 从 realease 下载 r329_toolchain.tar.gz, 并解压到一个路径,比如 /opt/r329_toolchain 比如 v83x, 在这里找到工具链下载链接并下载工具链,解压到一个文件夹,比如/opt/toolchain-sunxi-musl

  • 克隆代码

git clone https://github.com/sipeed/Maix-Speech

  • 编译

x86(Linux)或在跑在其它架构的系统里编译,比如在R329或 树莓派 的系统里使用GCC编译

注意,conda 环境下工具链可能有问题,如果出现错误可以先尝试 退出conda环境使用原生环境编译。


cd projects/maix_asr
python project.py clean_conf    # 清除工具链配置
python project.py menuconfig    # 配置选择芯片架构(ARCH),默认是 x86
python project.py build#python project.py rebuild          # 如果有新建文件需要使用 rebuild
# python project.py build --verbose # 打印详细构建过程

./build/maix_asr                # 测试下运行可执行文件,可以执行即可

python project.py clean         # 清除构建内容
python project.py distclean     # 彻底清除构建内容, 包括 menuconfig 内容