智能语音技术栈

2023-11-10

å¦ä½æ为ä¸åå¨æ è¯­é³è¯å«å·¥ç¨å¸ï¼

识别原理——硬件数据采集——软件数据处理

目前主流的开源平台包括CMU Sphinx、HTK、Kaldi、Julius、iATROS、CNTK、TensorFlow等,CMU Sphinx是离线的语音识别工具,支持DSP等低功耗的离线应用场景。由于深度学习对于语音识别WER的下降具有明显的作用,所以Kaldi、CNTK、TensorFlow等支持深度学习的工具目前比较流行,Kaldi的优势就是集成了很多语音识别的工具,包括解码搜索等。

Mobile AI Compute Engine,mace不光支持qcom的芯片,也支持麒麟。mace github开源,3395*,覆盖CPU、GPU、DSP,业界领先的性能和稳定性,编译时只支持arm,不使用GPU加速,Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。移植mace到手机上识别键盘、鼠标等,速度还可以。

android sdk。

综合来讲,对比目前已有的几个开源mobile dnn inference库,caffe2、tf-lite、ncnn和snpe,再加上一些著名的dnn后端库,比如arm compute library、nnpack、gemmlowp、hexagon dsp sdk、qsml等,mace算是支持比较完整(当然了,缺乏ios的支持算是目前的短板,但应该不难解决),优化比较到位的库。

库的评价点:

1. 是否有CPU优化?是否使用NEON?是否有为mobile设计的thread pool?是否有针对CPU架构做超参数的调整(比如说thread number)?

CPU优化是必须有的,不用NEON(SIMD)是不可能的。采用 intrinsic c+汇编 的方式已经较好的发挥了NEON的优势,benchmark结果也很可观。

2. 算法上是否采用了正确的path,比如说用Winograd来做卷积(类似nnpack),对小矩阵做特殊优化(类似xsmm),等等?

CPU和GPU均采用了Winograd算法来优化卷积,效果也是很显著的,还算接近理论加速比。并且针对常用卷积核有专门优化,效果都是显而易见的。

3. GPU上,是否有高效的kernel implementation?比如说OpenCL/GL,Metal,等等。

目前对高通的Adreno GPU有很好的优化(这里当然得感谢高通的支持,毕竟他们是最了解芯片的)

,此外又适配了Mali和PowerVR,以实现通用型,将来会针对Mali的GPU进一步优化。

4. 是否有在 mobile 上非常有用的一些功能,比如说reduced precision(类似gemmlowp)

GPU目前支持float16和float32两种精度,float16相对于float32精度稍微差点但是性能有大幅提升,而目前常见CNN网络对精度不是很敏感,所以GPU默认采用float16。CPU目前还不支持量化,不过在不久的将来就会支持。

5. 通用性问题

手机端的通用性比较难做。CPU目前主流的只有ARM一家,所以还好说。而GPU目前主流的有三家,三家技术不尽相同,MACE目前做了适配,但是还不敢保证所有GPU的可用性和高性能,当然这也是将来的工作重点,尽可能支持主流的所有设备,将来能够提供一个完整的解决方案。

 

 

 

 

 

 

 

参考链接:

https://zhuanlan.zhihu.com/p/31193859

http://zhuanlan.51cto.com/art/201706/543458.htm

https://www.zhihu.com/question/283022477/answer/429250384

https://blog.csdn.net/rony2012/article/details/76433431

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能语音技术栈 的相关文章

  • Descriptors cannot not be created directly

    1 Descriptors cannot not be created directly 在运行诸如深度学习python等程序时 如mmdetection mmdetection3d中的程序 会出现报错 Descriptors cannot
  • 后氧传感器正常数据_氧传感器电压多少正常?氧传感器数据流分析介绍

    氧传感器作用是什么 氧传感器用以检测排气中氧的浓度 并向ECU发出反馈信号 再由ECU控制喷油器喷油量的增减 从而将混合气的空燃比控制在理论值附近 氧传感器是利用陶瓷敏感元件测量汽车排气管道中的氧电势 由化学平衡原理计算出对应的氧浓度 达到
  • Redis启动与关闭

    安装redis之后 在命令行窗口中输入 redis server redis windows conf 启动redis 关闭命令行窗口就是关闭 redis redis作为windows服务启动方式 redis server service
  • Xilinx_RAM_IP核的使用

    Xilinx RAM IP核的使用 说明 单口RAM 伪双口RAM 双口RAM的读写 以及RAM资源占用的分析 环境 Vivado2018 3 IP核 Block Memory Generator 参考手册 UG473 7 Series F
  • 人力资源平台项目总结(2)

    目录 1 路由和页面 1 1 左侧菜单的显示逻辑 设置菜单图标 重点 2 组织架构 2 1 认识组织架构 2 2 将树形的操作内容单独抽提成组件 2 3 获取组织架构数据 并进行树形处理 重点 2 4 删除部门功能实现 2 5 新增部门功能
  • 使用presto+airpal+hive打造即席查询工具

    0X01 前言 即席查询怎么做 怎么选型 这次用的是presto来做尝试 缘起 公司是Impala的深度用户 我主要负责Impala的各方面的工作 最近因为一些特殊原因需要对现有的体系进行一些调整 需要做出来即席查询的组件 在spark s
  • 基于matlab的多元线性回归分析

    二 多元线性回归原理 2 1 数学模型 在社会生活及生产实践中会经常遇到一种问题 即我们非常关注一个量的变化 而这个量受到另一个或是多个因素的影响 我们想要了解这些因素是如何影响我们最为关注的这个量的以及这些因素对我们最为关注的这个量的影响
  • 【C语言进阶】实现atoi函数

    1 函数介绍 atoi的函数功能 将string所指向数字字符串转化为整数 注意 1 会跳过前面的空白字符 例如空格 tab缩进 等 2 如果不能转换成 int 或者为空字符串 那么将返回 0 特别注意 该函数要求被转换的字符串是按十进制数
  • 数字图像处理-小波变换小白解释基本原则

    内容完全转载 小波理论的基本概念及概述 第二版 欢迎阅读此份关于小波变换的入门教程 小波变换是一个相对较新的概念 其出现大约是在20世纪80年代 但是有关于它的文章和书籍却不少 这其中大部分都是由数学专业人士写给其他同行看的 不过 仍然有大

随机推荐

  • Java解析cron表达式

    概述 Cron表达式是一个字符串 以5或6个空格隔开 分为6或7个域 每一个域代表一个含义 即两种语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek Year 即 秒 分 时 天 月
  • rp学习1---web页面左侧导航栏收缩

    一 首先使用几个矩形框将所有的导航栏按照需要和层级画出来 如下 二 将父菜单和子菜单分别转化为动态面板 具体转化动态面板方式如下 选择要转为面板的部分 如两个子菜单 鼠标画框框住两个菜单即可 会将框内的所有内容作为一个面板 右击 三 选择父
  • 算法训练营第三十二天(8.16)

    目录 Leecode 435 Non overlapping Intervals Leecode 763 Partition Labels Leecode 56 Merge Intervals Leecode 435 Non overlap
  • pycharm问题求解

    为什么我的pycharm下面会弹出在 init 中找不到某个函数 我不知道在哪里设置了这个就都成这个样子了 重新安装一个模组可以暂时解决这个问题 但是切个屏就又变成这样了 正常的好像是这样的 求解
  • graph 图数据结构

    树 和 图 辨析 1 树的父节点和子节点之间是一条路单向可达 2 图的的节点之间存在多条路可达 基本概念 1 顶点 2 边 3 邻居节点 只有一条边连接的顶点 4 度 degree 一个顶点有几条边 就有几度 图的区分 1 无向图 边没有方
  • 【Shell】expect解决脚本中交互时自动输入的问题

    日常和shell相关的工作中 经常遇到要在脚本中连接其他服务器进行文件传输等操作 这些命令通常会要求和用户交互输入验证 信息 那么在脚本中如何实现自动输入口令之类的信息 这里就要用到expect 以ubuntu20为例 首先要安装这个软件
  • Unity Animancer插件(三)运动

    一 根运动 Animancer的根运动系统与原生的工作原理完全相同 但我们可以通过继承Transition类型或实现ITransition接口 来将额外的数据与动画绑定 从而更方便地控制根运动 在下面这个示例中 我们通过自定义的Transi
  • 从N个整数中判断是否有三个整数能组成三角形

    解决这个问题 可以用斐波那契数列 Fibonacci sequence 原因 斐波那契数列中的数是不可能组成三角形的 而我们只要在这些数列里面加一个数就可以有一个三角形可以组成 有了这个原因我们就可以写一个非常快速就可以判断出结果的函数 如
  • C#:递归汉诺塔

    一 运行效果截图 二 实验要求 如果n 1 直接将金片从A针移到C针上 函数输出 Form A to C 如果n gt 1时 移动过程分解为以下几个步骤 1 将A上的n 1片金片借助C针移到B针上 2 把A针上剩下的一片金片由A针移到C针上
  • stomp.min.js(stomp协议的客户端脚本)、sockjs.min.js(SockJS的客户端脚本)以及jQuery

    stomp min js stomp协议的客户端脚本 sockjs min js SockJS的客户端脚本 以及jQuery 点击打开链接
  • [ C++ ] — 智能指针

    一 三种智能指针 auto ptr unique ptr shared ptr auto ptr是C 98提供的方案 C 11已经将其摒弃 以下只是示例 实际不要使用auto ptr 使用new和delete管理动态内存常出现的问题 1 忘
  • STM32MP1开发环境搭建

    STM32MP1 wiki教程 stm32mpu 按照教程的介绍 开发MPU需要在linux环境下 一般选择在VMware虚拟机环境下安装Ubuntu 安装步骤 1 安装VMware 我安装的是VMware 10 0 0 链接 https
  • jQuery使用手册

    官方网站 http jquery com jQuery是一款优秀js开发库类 特别是对css和XPath的支持 使我们写js变得更加方便 如果你不是个js高手又想写出优 秀的js效果 jQuery可以帮你达到目的 下载地址 Starterk
  • C语言数据结构问题:停车场问题(栈和队列)

    试题描述 设停车场只有一个可停放几辆汽车的狭长通道 只有一个大门可供汽车进出 汽车在停车场内按车辆到达的先后顺序依次排列 若车场内已停满几辆汽车 则后来的汽车只能在门外的便道上等候 一旦停车场内有车辆开走 则排在便道上的第一辆汽车即可进入
  • ARP(地址解析协议)协议和RARP协议(逆地址解析协议)

    ARP协议 地址解析协议 及ARP 是根据IP地址获取物理地址的一个TCP IP协议 主机发送信息是将包含将包含目标IP地址的APR请求广播到局域网络上的所有主机 并接收返回消息 以此确定目标的物理地址 受到返回消息的时候将IP地址和物理地
  • 接口自动化之测试数据动态生成并替换

    一 测试数据 1 随机库random 查看内置random方法 该方法自行学习 不再介绍 show 2 Faker库 pip install faker showHttps github com joke2k faker 3 应用到项目中
  • Java 反射机制 与 工厂设计模式

    什么是反射 Java反射机制是在运行状态中 对于任意类 都能知道这个类的全部属性和方法 对于任意对象 都能够调用它的任何一个方法或属性 这种动态获取的信息以及动态调用对象的方法的功能 称为Java语言的反射机制 Class类 Class 是
  • MPI与main()程序中的其他函数执行次数

    我原先以为只有在MPI代码区域 即MPI Init argc argv 到MPI Finalize 中的代码才会涉及到进程通信的问题 但实际上在MPI区域外的代码依然受到影响 执行的次数与开启的进程数有关 为此可以使用MPI 秩 rank
  • AttributeError: 'Function' object has no attribute 'fn' [in caffe]

    n global pool prob3 L Sigmoid n global pool up3 name global pool prob3 ntop 0 top global pool up3 n att repmat3 L Tile n
  • 智能语音技术栈

    识别原理 硬件数据采集 软件数据处理 目前主流的开源平台包括CMU Sphinx HTK Kaldi Julius iATROS CNTK TensorFlow等 CMU Sphinx是离线的语音识别工具 支持DSP等低功耗的离线应用场景