前几天有个朋友找到我说是否有非第三方(讯飞、百度)的语音识别方案,之前对这块的了解是语音识别基本都是调用这种第三方的方案。听完之后,谷歌发下有两种方案。

调用Android本地

具体就是使用原生的SpeechRecognizer来调用,但是这种目前的国内环境是需要修改的,但是不能保证修改后各个机型是否能够使用,按照这种方法,试了在小米手机上,基本是无法识别的,具体可以看下这篇文章的介绍:
https://juejin.cn/post/6844903861405089799

使用开源的pocketSphinx方案

在github上发现pocketSphinx可以满足目前的要求,开源地址 : https://github.com/cmusphinx/pocketsphinx

由于是在android 设备上运行的,所以可以直接使用Android开源方案:
https://github.com/cmusphinx/pocketsphinx-android

按照这个教程添加依赖库

dependencies {implementation 'edu.cmu.pocketsphinx.android:pocketsphinx-android:5prealpha@aar'
}dependencies {compile (name:'pocketsphinx-android-debug', ext:'aar')
}repositories {flatDir {dirs 'libs'}
}

或者也可以参考github上给出的 Android demo
https://github.com/cmusphinx/pocketsphinx-android-demo

由于是使用离线的方案,所以需要我们先训练好字典的模型,生成需要的语音模型,访问这个网址 http://www.speech.cs.cmu.edu/tools/lmtool-new.html点击选择文件,选择刚才编写的命令集文件 command.txt,然后点击COMPILE KNOWLEDGE BASE按钮就可以生成语言模型,如图:

这里生成了好几个文件,我们可以把整个 .tgz 文件下载下来解压缩,其中得到的 .lm 文件就是我们需要的语言模型。

语言模型在这一步已经完成了,接下来需要添加字典模型,在这个网址下载我们需要的模型:https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/
解压后,里面有一个.dic文件,然后参考这个 .dic 文件的格式,在上一步获取到的 .lm 语言模型文件中还有一个 .dic 文件,补充完整这个 .dic 文件的发音,如图所示:

字典模型就这样完成了,接下来添加 声学模型

同样是在资源网盘的 Mandarin 文件夹下,下载 .tar.bz2 的压缩文件解压后,得到如下声学模型文件:

按照一般的流程,到这里,再根据文档,就可以完成了,但是在开发的过程中 发现按照以上方法,运行都是报错的。
目前官网的字典模型是

该版本是比较新的,另外训练好的语音模型,在官网的demo版本中没有看到是在那个地方加载,基于这两个疑问,试了很多次,发现都不知道怎么解决,后面看到一个 pocketSphinx 旧的版本的使用方法,https://blog.csdn.net/Crystal_xing/article/details/84957466

按照这个教程和对应的开源代码:
发现里面有使用到 .lm 文件的训练好的模型,然后根据上面提到的,训练了对应的关键字语音模型,发现还是无法识别,最后通过反复对比,发现是使用的字典模型版本不一致导致的。

于是使用了 PocketSphinx 0.7 https://sourceforge.net/projects/cmusphinx/files/pocketsphinx/0.7/ 版本的字典模型,解压后在pocketsphinx-0.7\model\lm\zh_CN/mandarin_notone.dic 去找实际的拼音,然后运行发现能够正常的识别出来,完美解决了。

pocketSphinx Android 离线语音识别相关推荐

  1. android 语音识别 离线,Android离线语音识别 PocketSphinx

    本文将使用PocketSphinx来实现Android平台的离线语音识别 优点: 离线,不用联网 识别较准(大家都说99%  我觉得只有80%) 缺点: 自定义语音命令麻烦  只能小范围识别 网上看了 ...

  2. Android离线语音识别(SpeechRecognizer、PocketSphinx)

    最近有开发语音识别功能的需求,但是因为各种原因(主要是收费)不能用国内大厂(百度,讯飞)已有的sdk,于是在网上搜了很多android离线的语音识别,主要有两种: 1.android自带的Speech ...

  3. Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率

    为什么80%的码农都做不了架构师?>>>    最近语音识别很火,但是都是用的在线语音识别,研究了一下离线语音识别,小范围内的语音识别率还不错,在此记录一下 首先本文要说的两个前提1 ...

  4. android 离线语言识别

    要做一个在android上离线语言识别功能.搜索了一下只有Sphinx比较适合,资料也有.Sphinx库的编译和使用方法在网上比较多的资料都是源自http://ucla.jamesyxu.com/?p ...

  5. Ubuntu16.04实现Sphinx离线语音识别

    Ubuntu16.04实现Sphinx离线语音识别 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/boke14122621/article/deta ...

  6. 离线语音识别库_离线语音识别_离线语音识别sdk - 云+社区 - 腾讯云

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 但录音存储成单声道 识别结果是否可以把两人的对话分离开采样率普通话录音文 ...

  7. Xamarin效果第二十三篇之离线语音识别

    在前面文章中简单玩了玩GIS的基本操作.Mark相关.AR.测距.加载三维白模.可扩展浮动操作和录音效果;今天抽空再来分享一下最近摸索的基于讯飞的离线语音识别效果,其实就简单用了一下离线命令词识别,看 ...

  8. CMUSphinx免费离线语音识别开源库教程iOS开发

    CMUSphinx开源语音识别工具包,可以基于CMUSphinx开发iOS版本的语音识别和语音合成库. 本文介绍的语音识别库使您可以轻松快速地将多种语言的离线语音识别和合成语音添加到iOS应用程序中. ...

  9. Android导航语音识别——读后听写语音识别(嵌入式)

    嵌入式项目之Android语音识别--读后听写语音识别(语音识别功能主函数调用) 文章目录 前言 一.代码示例 二.代码分析 1.创建 SpeechSynthesizer 对象 2.设置合成参数 3. ...

最新文章

  1. yum update不升级内核方法
  2. [编程题]字符串最后一个单词的长度
  3. Google也开始弄开源平台,好事啊
  4. CleanMyMac优化教程,使用CleanMyMac延长Mac的使用寿命
  5. 计算机专业人士,必读之经典图书
  6. jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置
  7. php sql注入审计,php审计基础一:sql注入
  8. SpringCloud 应用在 Kubernetes 上的最佳实践(二):部署篇 (开发部署)
  9. 【keil5】安装及注册
  10. 离散数学-欧拉图和哈密顿图
  11. 【专升本计算机】计算机文化基础练习题(选择题300道附答案)
  12. 电子技术网站大全[转]
  13. php7hugepage,HugePage简介和KVM中使用HugePage
  14. 酷冷战神 先手致胜:腾讯ROG游戏手机6为游戏而生
  15. ROS-机器人操作系统(ROS)浅析----第三章
  16. 评价体系的构建之指标筛选
  17. 全国计算机等级考试三级网络技术
  18. 分享一个技术知识类电子书网站
  19. 通过百度地图把经纬度转化成城市名
  20. 目标检测mAP计算详解

热门文章

  1. 人工智能:(C语言)采用状态空间法求解八数码问题
  2. 中英文论文写作指导第二部分(前言)
  3. 文件被隐藏了怎么恢复?读完你就知道了
  4. 一加手机换鸿蒙os,一加手机支持氢OS和ColorOS一键切换?官方辟谣:太假了
  5. 初学python的体会心得-分享给入门Python小白的学习心得
  6. 口袋之旅html5超强账号,口袋之旅好号和密码
  7. BZOJ 2314 士兵的放置(play) 树形DP
  8. PTA 1027 Colors in Mars(读懂题目意思很重要!!)
  9. matlab计算时间差多少秒,Matlab 设计时间计算器 计算时间差
  10. B. Alyona and a Narrow Fridge( Codeforces Global Round 2)二分