2014-07-30 21:28:39 Vintage_1 阅读数 5790
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松
       在跑通Android离线语音识别demo PocketSpinxAndroiDemo后,发现其使用pocketsphinx进行语音识别的准确率并不是很低。这和pocketsphinx语音识别所用的语言模型和声学模型相关。pocketsphinx-0.8源码自带几个语言模型和声学模型,pocketsphinx-0.7/model/hmm下的是声学模型(hmm应该指的是隐马尔科夫模型),pocketsphinx-0.7/model/lm下的是语言模型(lm表示language model)。运行demo时使用的是美国英语的语言模型(/lm/en_US/hub4.5000.DMP)和声学模型(/hmm/en_US/hub4wsj_sc_8k)以及字典文件(/lm/en_US/hub4.5000.dic),/pocketsphinx/model目录 内容如下,
├── hmm
│   ├── en
│   │  └── tidigits
│   │      ├── feat.params
│   │      ├── mdef
│   │      ├── means
│   │      ├── sendump
│   │      ├── transition_matrices
│   │       └── variances
│   ├── en_US
│   │  └── hub4wsj_sc_8k
│   │      ├── feat.params
│   │      ├── mdef
│   │      ├── means
│   │      ├── noisedict
│   │      ├── sendump
│   │      ├── transition_matrices
│   │      └── variances
│   └── zh
│       └── tdt_sc_8k
│           ├── feat.params
│           ├── mdef
│           ├── means
│           ├── noisedict
│           ├── sendump
│           ├── transition_matrices
│           └── variances
└── lm
    ├── en
    │  ├── tidigits.dic
    │  ├── tidigits.DMP
    │  ├── tidigits.fsg
    │  ├── turtle.dic
    │  └── turtle.DMP
    ├── en_US
    │  ├── cmu07a.dic
    │  ├── hub4.5000.DMP
    │  └── wsj0vp.5000.DMP
    ├── zh_CN
    │  ├── gigatdt.5000.DMP
    │  └── mandarin_notone.dic
    └── zh_TW
        ├── gigatdt.5000.DMP
        └── mandarin_notone.dic
这个目录下的内容在后面还要使用到。
        此外,CMU sphinx的官网提供了各种语言的声学模型和语言模型的下载,具体见,
http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/
本来应该有中文的,
声学模型:zh_broadcastnews_16k_ptm256_8000.tar.bz2
语言模型:zh_broadcastnews_64000_utf8.DMP
字典文件:zh_broadcastnews_utf8.dic
但现在去其官网上找已经没中文的了。。。另外,还可以使用语言模型训练工具CMUCLMTK和声学模型训练工具sphinxtrain自己训练得到语言模型和声学模型,这样的效果应该是最好的(识别范围应该也能扩大不少),这里不详细讲述,可以参考最后的参考链接1。

小范围英文准确识别
       Demo用的字典太大,相应的语言模型也很大,而这个语言模型和字典并非针对你而训练的,这是造成识别率低下的主要原因。因此,下面创建自己的语料库drone_ctr.txt,文件的内容是,
take off
land
turn left
turn right
forward
backward
spin left
spin right
up
down
hover
利用在线工具——http://www.speech.cs.cmu.edu/tools/lmtool.html上点Browse提交drone_ctr.txt,在线生成语言模型文件(一个压缩文件),下载生成的压缩文件,解压,我们要使用其中的1172.lm和1172.dic代替原来使用的hub4.5000.DMP和hub4.5000.dic。打开1172.dic文件,其内容主要也就是drone_ctr.txt每一条语料加上其注音。替换语言模型和字典后,修改PocketSpinxAndroiDemo中RecognizerTask.java的代码如下,
c.setString("-hmm",
                "/sdcard/Android/data/edu.cmu.pocketsphinx/hmm/en_US/hub4wsj_sc_8k");
c.setString("-dict",
                "/sdcard/Android/data/edu.cmu.pocketsphinx/lm/1172.dic");
c.setString("-lm",
                "/sdcard/Android/data/edu.cmu.pocketsphinx/lm/1172.lm");
由代码可知,我们仍然使用原来的声学模型,改变的只是语言模型和字典(1172.dic和1172.lm)。然后真机上调试,准确率就上来了~
        经过试验,发现准确率在不改变字典的情况下仍然不高,这说明声学模型不变的情况下,字典范围得足够小才能准确识别。

小范围中文准确识别
       和英文情况类似,先创建语料库drone_ctr.txt,文件的内容是,
起飞
降落
向左
向右
向前
向后
左转
右转
上升
下降
盘旋
利用在线工具——http://www.speech.cs.cmu.edu/tools/lmtool.html上点Browse提交drone_ctr.txt,在线生成语言模型文件,下载生成的压缩文件,解压,我们要使用其中的9930.lm和9930.dic代替原来使用的hub4.5000.DMP和hub4.5000.dic。这时打开字典9930.dic,发现其内容和语料库drone_ctr.txt是一摸一样的,并没有在每一行后面加上音注,这是因为该在线工具不支持中文注音(由参考链接3可知,原来可能是支持的),所以需要自己加音注,加音注后的9930.dic文件如下,
上升    sh ang sh eng
下降    x ia j iang
右转    y ou zh uan
向前    x iang q ian
向右    x iang y ou
向后    x iang h ou
向左    x iang z uo
左转    z uo zh uan
盘旋    p an x uxan
起飞    q i f ei
降落    j iang l uo
后面音注我是从/pocketsphinx/model/lm/zh_CN/mandarin_notone.dic中找到相应的语料,然后将其音注拷过来的(本来想用zh_broadcastnews_utf8.dic字典库,但现在CMU sphinx的官网上已经下不到中文声学模型和语言模型以及字典了),这再次证明了字典文件其实就是“语料+音注”。接下来,使用生成的语言模型9930.lm和自己编辑的字典9930.dic以及pocketsphinx-0.8源码自带中文声学模型/pocketsphinx/model/hmm/zh/tdt_sc_8k,并修改RecognizerTask.java代码,
c.setString("-hmm",
                "/sdcard/Android/data/edu.cmu.pocketsphinx/hmm/zh/tdt_sc_8k");
c.setString("-dict",
                "/sdcard/Android/data/edu.cmu.pocketsphinx/lm/9930.dic");
c.setString("-lm",
                "/sdcard/Android/data/edu.cmu.pocketsphinx/lm/9930.lm");
这样就可以进行语料库范围的中文语音识别了,准确率很高!

参考:
http://blog.csdn.net/zouxy09/article/details/7942784语言/声学模型介绍)
http://blog.csdn.net/zouxy09/article/category/1218766Sphinx很好很全面的资料,工具使用、API编程等
http://zuoshu.iteye.com/blog/1463867  (修改Demo的语言/声学模型,英文识别)
http://www.cnblogs.com/yin52133/archive/2012/07/12/2588201.html#2525875  (中文识别解决方案)

2016-07-06 16:37:35 victor_barnett 阅读数 3550
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松

        用了半天时间弄明白了在iOS上如何配置语音识别功能,然后用半天时间写了一个demo,公司坑爹的是不用科大飞讯的语音识别,而使用的是OpenEars,用google查了一下最新的介绍文章是2013年的,OpenEars是一款国外比较主流的语音识别的第三方框架,全是英文文档(吐槽一下,做开发必须要学好英语啊).

1.什么是OpenEars?

        OpenEars是面向iOS平台的一个离线的语音识别和text-to-speech(文字语音转换)开发工具包.OpenEars主要是针对英语,也支持中文的语言包,但是我感觉它的识别性不是太好.最重要的是,这是一款免费的工具包,除了基本的免费功能,它还提供了可以用来扩展基本功能的付费插件.今天主要介绍的是它的免费功能,即简单的语音识别功能.


        当前OpenEars的最新版本为2.5,下载地址为http://www.politepix.com/wp-content/uploads/OpenEarsDistribution.tar.bz2


2.详细配置OpenEars的步骤

(1)点击上方链接下载OpenEars的扩展包,打击打开扩展包,里面有一个Framework的文件夹,将这个文件拖进你的工程文件中.然后检查这个文件的路径(正常情况下Xcode会为你自动添加好文件的路径),点击你的工程文件,然后点击Build Settings,在搜索输入框输入Framework Search Paths,右键点击刚刚添加的Framework文件夹,然后show in finder即可查看文件的路径,核对两个路径是否正确.不正确或者不存在,手动添加即可.见图


核对检查好路径之后,为了添加二进制文件的存储,需要将Build Settings里的Deployment Postprocessing设置为YES.然后添加AudioToolbox库和AVFoundation库到你的项目里边.



(2)在你需要进行语音识别的.m文件下引入头文件,需引入头文件如下:


在你需要进行语音识别的.h文件下引入头文件,需引入头文件如下:


然后跟你需要实现语音识别的文件下引入协议(绿色<>部分为需要引入的协议),例如


并将OEEventsObserver属性添加到您的其他类属性(OEEventsObserver必须您的类的属性,否则它不会工作):



然后在viewDidLoad或者你需要的地方进行初始化观察者并签订协议:



下一步是创建你需要使用到的语音类文件,这决定你将使用什么语言进行识别,在viewDidLoad或者其他地方均可,具体实现如下:


其中的words是你创建的需要识别的单词.

最后在你需要开启语音识别的地方添加如下方法,开启语音识别:



其中你注册的观察者签订的协议方法如下所示



包含中文和英文声学模型的demo地址:Demo地址



2018-07-26 15:22:54 sparkexpert 阅读数 10111
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松

DeepSpeech是国内百度推出的语音识别框架,目前已经出来第三版了。不过目前网上公开的代码都还是属于第二版的。

1、Deepspeech各个版本演进

(1) DeepSpeech V1

其中百度研究团队于2014年底发布了第一代深度语音识别系统 Deep Speech 的研究论文,系统采用了端对端的深度学习技术,也就是说,系统不需要人工设计组件对噪声、混响或扬声器波动进行建模,而是直接从语料中进行学习。团队采用 7000 小时的干净语音语料,通过添加人工噪音的方法生成 10 万小时的合成语音语料,并在 SWITCHBOARD评测语料上获得了 16.5% 的 WER(词错误率,是一项语音识别的通用评估标准)。当时的实验显示,百度的语音识别效果比起谷歌、Bing 与 Apple API 而言优势明显。

(2) DeepSpeech V2

 2015 年年底,百度 SVAIL 推出了Deep Speech 2,它基于 LSTM-CTC (Connectionist Temporal Classification)的端对端语音识别技术,通过将机器学习领域的 LSTM 建模与 CTC 训练引入传统的语音识别框架里,提出了具有创新性的汉字语音识别方法。并能够通过深度学习网络识别嘈杂环境下的两种完全不同的语言——英语与普通话,而端到端的学习能够使系统处理各种条件下的语音,包括嘈杂环境、口音及区别不同语种。而在 Deep Speech 2 中,百度应用了 HPC 技术识别缩短了训练时间,使得以往在几个星期才能完成的实验只需要几天就能完成。在基准测试时,系统能够呈现与人类具有竞争力的结果。

(3) DeepSpeech V3

2017年10月31日,百度的硅谷AI实验室发布了Deep Speech 3,这是下一代的语音识别模型,它进一步简化了模型,并且可以在使用预训练过的语言模型时继续进行端到端训练。并开发了Cold Fusion,它可以在训练Seq2Seq模型的时候使用一个预训练的语言模型。百度在论文中表明,带有Cold Fusion的Seq2Seq模型可以更好地运用语言信息,带来了更好的泛化效果和更快的收敛,同时只需用不到10%的标注训练数据就可以完全迁移到一个新领域。Cold Fusion还可以在测试过程中切换不同的语言模型以便为任何内容优化。Cold Fusion能够用在Seq2Seq模型上的同时,它在RNN变换器上应当也能发挥出同样好的效果。

2、DeepspeechV2原理

如下图所示为其论文的海报版本。

其主要的模型框架如下:

 

3、Deepspeech V2源码实践

这个第二版的DeepSpeech已经有多种实现版本。本文选用了https://github.com/mozilla/DeepSpeech的代码来进行复现。

(1) 要执行该代码,首先需要下载对应的C编译的包,主要包括ctc_decoder等。

 (2) 对LibriSpeech中的任一一条语音进行测试,发现准确率非常高。

(3) 选用网上的任意一个长文本英文句子进行实验。句子较长,发现效果也还算不错。

语音和文本见:http://www.tingroom.com/lesson/nce1/197.html

转写文字如下:i love twentedfomhemnetltmothlivrnmooleleontetrubepidmanontoequaseton ereafe book it i i latino is oh there he peradition in the moon the treeciion is near the we do there to micevineon the talrevitionferete le in the ron veriwhillyerpaple on the cave there is a pot trade in the room i am tree on me at the table there is a trio in the room the fare it near the door thereaefheebook an tara forahfotocktu in the room the picture a 

2017-12-01 17:00:49 zhenghongzhi6 阅读数 8032
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松

本文首发于“洪流学堂”公众号。
洪流学堂,让你快人几步!你好,我是你的技术探路者郑洪智,你可以叫我大智(vx: zhz11235)。

源码地址

https://github.com/zhenghongzhi/WitBaiduAip

功能概述

1 语音识别

  1. 从麦克风录制音频
  2. AudioClip的音频数据转换为百度语音识别的PCM16格式
  3. 百度语音识别Restful接口的封装以及一个测试场景

2 语音合成

  1. 百度语音合成Restful接口的封装以及一个测试场景
  2. mp3格式运行时转为AudioClip进行播放

为什么不使用百度的C# SDK
百度的C# SDK使用了一些Unity不支持的特性,直接导入unity不能用
而且百度C# SDK只是封装了Restful的接口,功能上并没有增多
自己编写更简洁

更新说明

2018-08-22更新

根据百度API的更新,语音合成性能优化,直接使用原生格式,移除第三方插件

2018-03-28更新

加入平台判断,更好的支持android和ios

2018-01-11更新

在工程中加入了语音合成

2018-01-02更新

应广大小伙伴的要求,对工程进行了重构,放出github源码
https://github.com/zhenghongzhi/WitBaiduAip

2017-12-23更新

教程首发


洪流学堂,让你快人几步
欢迎关注“洪流学堂”微信公众号

灵云语音识别

阅读数 2665

没有更多推荐了,返回首页