2016-12-24 12:58:58 snow2know 阅读数 7514
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5918 人正在学习 去看看 杨波
导读

11 月 21 日到 23 日,搜狗、百度和科大讯飞三家公司接连召开了三场发布会,向外界展示了自己在语音识别和机器翻译等方面的最新进展。值得注意的是,这三家公司几乎在同一时段宣布了各自中文语音识别准确率达到了 97%。

其中搜狗语音团队在 11 月 21 日推出了自己的语音实时翻译技术。搜狗的这项技术主要包括两个方面,分别是语音识别和机器翻译。根据该团队的介绍,搜狗语音识别的准确率达到了 97%,支持最快 400 字每秒的听写。
百度则在 11 月 22 日宣布向开发者开放了情感合成、远场方案、唤醒二期和长语音方案等四项语音识别技术。百度语音开放平台自 2013 年 10 月上线以来每日在线语音识别请求已经达到了 1.4 亿次,开发者数量超过 14 万。在如此庞大的数据支撑下,百度语音在“安静条件下”的识别准确率达到了 97%。
image
另外,在 11 月 23 日的科大讯飞发布会上,科大讯飞轮值总裁胡郁引述了罗永浩在 9 月锤子发布会上的演示数据,表示科大讯飞的语音输入识别成功率也达到了 97%,即使是离线识别准确率也达到了 95%。
20161021050708410
针对中文语音识别准确率提升背后到底隐藏着哪些技术和准确率继续提升还需要突破哪些困难等问题,PingWest 品玩分别采访了搜狗语音交互中心技术负责人陈伟和百度首席科学家吴恩达。

陈伟表示,搜狗语音识别的目标是更自然的,更像任何人交互的方式靠近。因此自从 8 月份发布“知音引擎”后,搜狗就开始基于已有的深度学习平台搭建自己的识别引擎。在搭建这个引擎的过程中,搜狗做的第一件事情就是按照人类讲话时的生物特征将每一个音节分为一个个独立的帧,并根据其波形判断此时是语音还是静音状态,从而让语音识别的效率大为提升。

第二是在语音识别框架下建立一个声学模型,根据人在发音时声音信号和录音信号波形的对比,实现录音和文字之间的映射。

在此基础上,搜狗语音需要的就是用大量数据来训练这个深度学习模型,而在中文手机输入法中市场占有率遥遥领先的搜狗输入法刚好为搜狗带来了所需的数据。“我们每天的语音请求次数在 1.9 亿次左右,也就是大约 16 万小时的语音数据,有了这些数据以及我们前沿的深度学习技术,我们在语音识别取得比较好的效果,这也是能使我们语音实时翻译成功的重要因素。”陈伟说。
300000931099127952960461732_950
在接受 PingWest 品玩采访时,百度首席科学家则表示 97% 的语音识别准确率是百度技术团队多年研发的成果。在百度语音团队的努力下,百度语音识别的错误率每年能够下降 20% 到 30%。吴恩达表示,百度语音识别准确率的不断提升还离不开算法的不断更新和数据的积累。

但除了识别率的提升,百度的语音识别还考虑到了环境和感情等方面的问题。例如在比较空旷和嘈杂的环境里,百度语音团队给出的远场方案可以基于麦克风阵列,利用麦克风阵列束形成、语音增强、回声消除、声源定位等技术综合实现高准确率远场识别。吴恩达称开发者可以利用这一技术让语音识别距离增加 3-5 米,解决长时间语音识别的准确率。

在语音识别领域耕耘多年的科大讯飞在这一次的发布会上也宣布将会将自己的技术应用到多个领域,并将其语音平台开放给开发者。根据科大讯飞研究员副院长魏思此前发表的一篇文章,讯飞语音识别准确率提升的秘诀是讯飞研发的一种名为前馈型序列记忆网络 FSMN 的新框架。

魏思说,相对于传统的深度学习模型,讯飞的前馈型序列记忆网络增加了一个“记忆块”的模块来存储对判断当前语音帧有用的历史信息和未来信息,实现语音识别中的“端到端”建模。

另外,讯飞语音识别系统还集成了一个由语音自动切分、自然语言处理和声纹识别等技术组成的语音转写引擎。在此基础上,科大讯飞最创新的一点就是为不同场景下的语音识别做了大量的定制工作,例如讯飞语音识别系统能够实现会议或者采访场景中的对话角色自动分离。
1722082
除了 97% 这个数字上的巧合,百度、搜狗和讯飞这三家公司都对自己的手机输入法进行了语音识别方面的升级。其中科大讯飞已经将野心延展到了物联网上,并推出了一款“万物联网输入法”,想通过语音操作的方式解决物联网设备的人机交互问题。而搜狗也计划在下一个版本的搜狗手机输入法中加入实时语音翻译功能。

根据比达咨询发布的《2016 年第三季度中国第三方手机输入法市场研究报告》,本季度中国第三发手机输入法越活越用户数排名前三的分别是搜狗输入法、百度输入法和讯飞输入法。

很明显这三家公司在语音识别领域最大的竞争点就是手机输入法。相比于在手机屏幕上使用拼音打字,语音输入不仅会让输入效率大幅提升还能解放用户的双手。但囿于语音识别准确率的限制,此前各大手机输入法厂商仅仅是将语音输入当作一个附加功能放在输入法的键盘里。现在随着技术的进步,语音识别准确率正在逐渐提升。而物联网时代的到来,语音识别必然成为物联网终端最重要的人机交互模式。

从市场份额上看,搜狗输入法一直都遥遥领先于其他两位竞争对手。如果百度和讯飞想要改变这一现状,就只能在未来必然成为主流的语音输入上先发制人。现在这三家公司在语音识别准确率上的较量,谁又能说他们不是在争夺物联网时代人机交互市场。

本文转载自:http://www.linuxprobe.com/sogou-speech-recognition.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

2014-07-30 21:28:39 Vintage_1 阅读数 5570
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5918 人正在学习 去看看 杨波
       在跑通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-04-17 13:56:32 lihaitao000 阅读数 2864
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5918 人正在学习 去看看 杨波
语音识别中基于规则的语言模型
一 语言模型的选择

语音识别一般分为两个阶段:
1)语音识别阶段:这个阶段利用语音的声学模型,把自然的声音信号转换为机器可以处理的数字表达的音节形式。
2)语音理解阶段:这个阶段把上阶段的结果即音节转换成汉字,这一阶段需使用语言模型的知识进行理解。
而在语音识别中最重要的一部就是建立语言模型,提高语音识别的准确率。
语言模型现在常用的一般可以分为两种:一种是基于大规模语料库的统计语言模型。这种方法的特点是适合处理大规模真实语料 , 数据准备的一致性好,鲁棒性强 , 但由于其实现受系统的空间和时间所限 , 因而只能反映语言的紧邻约束关系,无法处理语言的长距离递 归现象 。 
一种是基于规则的语言模型。这种方法是在对汉语词汇系统按语法语义进行分类 的基础上 , 通过确定 自然语言的词法 、 句法及语义关系 , 试图达到同音词的大范围的基本唯一识别 。 其特点是适于处理封闭语料 , 能够反映语言的长距离约束关系和递归现象 , 但这种方法的鲁棒性差 , 不适合处理开放性语料 , 知识表达的一致性不好 。
二 词汇分类体系的建立
词类的划分是 自然语言理解的基础 , 分类是人类认识事物 的一种结果 , 也是人类认识
事物的一 种手段 。 只有对汉语词汇进行系统的语法语义分类 , 才能对整个词汇系统有完
整 的认识 , 进行合理的属性标注 , 并在此基础上 , 建立完整系统的规则体系 , 这也会给实际工作带来极大的方便。
按语法进行分类 , 划分 比较简单 , 它和句法关系密切 , 只关心基本词性 , 基本上不关
心被表达知识的意义 。 
) 按语法进行划分 , 把词划分成十一大类 : 名词 、 动词 、 形容词 、 数词 、 量词 、 代词 、副词 、 介词 、 连词 、 助词和语气词 。
2 ) 在语法分类 的基础上 , 按照语义对名词类 、 形容词类 、 量词类 以及动词类进行更深层次的分类 , 分类时尽量考虑建立各种规则的需要 , 视具体情况 , 语义类可分到一
至六层
三 规则的表示
规则表示的是汉 语句子 内各成分之间的结合关系 , 包括语法和语义上的关系 。 规则由
产生式来表示 。 这样一 个规则体系就是一个产生式体系 。 上 下文无关文法最适合用来描述
自然语言 , 我们采用它来描述系统的产生式规则 。
在我们的系统中 , 用下列符号来表示各种语法语义成分 :
S 是起始符 , 代表整个句子 ;
N 、 V 、 A 、 D 、 M 为非终结符 , 分别代表名词 、 动词 、 形容词 、 副词和量词等语法类:
N P 花 、 N P 动物 、 N P 车 、 A P 花 、 A P 动物 、 A P 车 、 V 打 、 V 吃 、 · 一等为非终结符 ,
分别代表名词 、 形容词 、 动词词性的语义类 ;
戮 为终结符 , 表示汉语单词 。
四 规则的获取
规则的获取就是使计算机获得关于语言的知识 , 利角 这些知识来理解句子 , 以区别汉
字输入 中出现 的大量候选字 。 规则的获取同其他知识获取一样主要有两种途径 :
l ) 人工 编辑方式: 由人直接对语言知识进行编辑加工 , 形成规则 , 构成基本知识库 .
2 ) 机器 自动获取 : 使系统具有机器学习功能 , 在使用过程中, 根据经验不断学习 , 自
动获取规则 , 逐步完善和丰富知识库 .
我们首先采用人工编辑的方式获取规则以建立基本规则库 , 在此基础上使系统具有机
器学习 的功能
五 规则模型的实现
我 们 首先在拼音一汉字转换系统 中成功实现 了基于规则的语言模型 。 实现时先把各音节
的同音字归纳成一棵语法 、 语义树 , 根据 匹配规则在树 中选择满足条件 的汉字串作为音字
转换的结果 3 [ ] 。 设有这样一组规则 :
M + % 个十 N P 人一> N P 人
N P 人+ % 是+ N甲 人

S ( * )
我们输入拼音串 “ w o s i h i y g e b ig n ” , 系统将生成如图 1 所示的树结构


系统根据规则 ) 搜索此树 , 生成汉字 串: “ 我是一个兵 ” 。 ( *
单纯使用规则进行匹配存在这样 的问题 : 可 能有多个汉字 串对应该语义树 , 即存在多

个同音字或 同音词属于同一语义类 。 这种问题可 以用统计方法来解决


参考文献:哈尔滨工业大学计算机科学与工程系 《语音识别中基于规则的语言模型的研究》

2017-09-27 21:08:43 Feng512275 阅读数 2252
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5918 人正在学习 去看看 杨波

背景:

总监看我太无聊了,讯飞语音识别搞完了,就让我去搞一下百度语音识别。然后比较两种语音识别的准确率,哪种更高点。

个人认为吧,都差不多。百度稍微会好那么一点点。

不过,值得一提的是:虽然讯飞和百度的语音识别都是免费的,但是百度每天免费试用次数是20000次,而讯飞的每天只有500次。其他语音产品,也都是百度的免费次数多。讯飞和百度都有个性化词库,所谓个性化词库就是你说的语句,如果话中的词语包含在个性化词库中,那么会优先识别个性化词库的词。但是,百度除了有个性化词库之外,还有个语义解析,就是你设置好问答,然后你问上一句,他会自动答出下一句。好不好玩?讯飞不知道有没有,我没看到。


百度语音识别:

当然是要去百度语音开放平台注册应用啦,如果还没注册的,包括如何引入库,可以参考:iOS-百度语音合成的使用



//
//  ViewController.m
//  BirdBtn
//
//  Created by HZhenF on 2017/9/25.
//  Copyright © 2017年 GZHYTechnology. All rights reserved.
//

#import "ViewController.h"
#import "BDSEventManager.h"
#import "BDSASRDefines.h"
#import "BDSASRParameters.h"

#define ScreenW [UIScreen mainScreen].bounds.size.width
#define ScreenH [UIScreen mainScreen].bounds.size.height

const NSString* API_KEY = @"BCZkKhjhlFi10eGshX7NNEfY";
const NSString* SECRET_KEY = @"07b9795bbe95fa71a710c2179d80fc0b";
const NSString* APP_ID = @"10177498";


@interface ViewController ()<BDSClientASRDelegate>

@property(nonatomic,strong) BDSEventManager *asrManager;

@property(nonatomic,assign) BOOL isStartRecord;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];


    CGFloat btn3W = 127;
    CGFloat btn3H = 93;
    CGFloat btn3X = 10;
    CGFloat btn3Y = CGRectGetMaxY(btn2.frame) + 10;
    UIButton *btn3 = [[UIButton alloc] initWithFrame:CGRectMake(btn3X, btn3Y, btn3W, btn3H)];
    [btn3 setImage:[UIImage imageNamed:@"icon_logo_L"] forState:UIControlStateNormal];

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];
    [btn3 addGestureRecognizer:longPress];
    [self.view addSubview:btn3];



   //配置百度语音识别
    [self configureBDVoice];
}

-(void)configureBDVoice
{
    //创建相关接口对象
    self.asrManager = [BDSEventManager createEventManagerWithName:BDS_ASR_NAME];
    //设置代理
    [self.asrManager setDelegate:self];


    //配置参数
    //1.设置DEBUG_LOG的级别
    [self.asrManager setParameter:@(EVRDebugLogLevelTrace) forKey:BDS_ASR_DEBUG_LOG_LEVEL];
    //2.配置API_KEY 和 SECRET_KEY 和 APP_ID
    [self.asrManager setParameter:@[API_KEY, SECRET_KEY] forKey:BDS_ASR_API_SECRET_KEYS];
    [self.asrManager setParameter:APP_ID forKey:BDS_ASR_OFFLINE_APP_CODE];
    //3.配置端点检测
    NSString *modelVAD_filepath = [[NSBundle mainBundle] pathForResource:@"bds_easr_basic_model" ofType:@"dat"];
    NSLog(@"modelVAD_filepath = %@",modelVAD_filepath);
    [self.asrManager setParameter:modelVAD_filepath forKey:BDS_ASR_MODEL_VAD_DAT_FILE];
    [self.asrManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_MODEL_VAD];
    //4.开启语义理解
    [self.asrManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_NLU];
    [self.asrManager setParameter:@"15361" forKey:BDS_ASR_PRODUCT_ID];

    //长按设置
    [self.asrManager setParameter:@(YES) forKey:BDS_ASR_VAD_ENABLE_LONG_PRESS];
    [self.asrManager setParameter:@(NO) forKey:BDS_ASR_ENABLE_LONG_SPEECH];
    [self.asrManager setParameter:@(NO) forKey:BDS_ASR_NEED_CACHE_AUDIO];
    [self.asrManager setParameter:@"" forKey:BDS_ASR_OFFLINE_ENGINE_TRIGGERED_WAKEUP_WORD];

    [self.asrManager setParameter:nil forKey:BDS_ASR_AUDIO_FILE_PATH];
    [self.asrManager setParameter:nil forKey:BDS_ASR_AUDIO_INPUT_STREAM];

    self.isStartRecord = YES;

}

-(void)longPressAction:(UILongPressGestureRecognizer *)longPress
{
//    NSLog(@"longPressAction");
    if (self.isStartRecord) {
        //发送指令:启动识别
        [self.asrManager sendCommand:BDS_ASR_CMD_START];
        self.isStartRecord = NO;
    }
    if (longPress.state == UIGestureRecognizerStateEnded) {
        self.isStartRecord = YES;
        //结束发送指令
        [self.asrManager sendCommand:BDS_ASR_CMD_STOP];
    }

}


-(void)VoiceRecognitionClientWorkStatus:(int)workStatus obj:(id)aObj
{
    switch (workStatus) {
        case EVoiceRecognitionClientWorkStatusNewRecordData: {
            NSLog(@"EVoiceRecognitionClientWorkStatusNewRecordData");
            break;
        }

        case EVoiceRecognitionClientWorkStatusStartWorkIng: {
            NSLog(@"EVoiceRecognitionClientWorkStatusStartWorkIng");
            break;
        }
        case EVoiceRecognitionClientWorkStatusStart: {
           NSLog(@"EVoiceRecognitionClientWorkStatusStart");
            break;
        }
        case EVoiceRecognitionClientWorkStatusEnd: {
            NSLog(@"EVoiceRecognitionClientWorkStatusEnd");
            break;
        }
        case EVoiceRecognitionClientWorkStatusFlushData: {
            NSLog(@"EVoiceRecognitionClientWorkStatusFlushData");
            break;
        }
        case EVoiceRecognitionClientWorkStatusFinish: {
            NSLog(@"EVoiceRecognitionClientWorkStatusFinish");

            NSLog(@"aObj = %@",aObj);

            NSArray *contentArr = aObj[@"results_recognition"];
            NSString *contentStr = contentArr[0];

            NSLog(@"contentStr = %@",contentStr);
            break;
        }
        case EVoiceRecognitionClientWorkStatusMeterLevel: {
            NSLog(@"EVoiceRecognitionClientWorkStatusMeterLevel");
            break;
        }
        case EVoiceRecognitionClientWorkStatusCancel: {
            NSLog(@"EVoiceRecognitionClientWorkStatusCancel");
            break;
        }
        case EVoiceRecognitionClientWorkStatusError: {
            NSLog(@"EVoiceRecognitionClientWorkStatusError");
            break;
        }
        case EVoiceRecognitionClientWorkStatusLoaded: {
            NSLog(@"EVoiceRecognitionClientWorkStatusLoaded");
            break;
        }
        case EVoiceRecognitionClientWorkStatusUnLoaded: {
            NSLog(@"EVoiceRecognitionClientWorkStatusUnLoaded");
            break;
        }
        case EVoiceRecognitionClientWorkStatusChunkThirdData: {
            NSLog(@"EVoiceRecognitionClientWorkStatusChunkThirdData");
            break;
        }
        case EVoiceRecognitionClientWorkStatusChunkNlu: {
            NSLog(@"EVoiceRecognitionClientWorkStatusChunkNlu");
            break;
        }
        case EVoiceRecognitionClientWorkStatusChunkEnd: {
           NSLog(@"EVoiceRecognitionClientWorkStatusChunkEnd");
            break;
        }
        case EVoiceRecognitionClientWorkStatusFeedback: {
           NSLog(@"EVoiceRecognitionClientWorkStatusFeedback");
            break;
        }
        case EVoiceRecognitionClientWorkStatusRecorderEnd: {
           NSLog(@"EVoiceRecognitionClientWorkStatusRecorderEnd");
             break;
        }
        case EVoiceRecognitionClientWorkStatusLongSpeechEnd: {
           NSLog(@"EVoiceRecognitionClientWorkStatusLongSpeechEnd");
            break;
        }
        default:
            break;
    }
}




@end

个性化词库和语义解析

里面有官方的格式,按照官方格式来弄就行。
弄完上传就好,个性化词库要等一个小时才能生效(讯飞、百度都是一个小时)。语义解析要等两个小时才能生效。

这里写图片描述

2019-11-11 21:02:02 weixin_42466538 阅读数 14
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5918 人正在学习 去看看 杨波
基于文本情感分类的语音识别控制系统
技术领域
本发明涉及语音识别技术领域,更为具体地,涉及一种基于文本情感分类的语音识别控制系统。
背景技术
传统的语音识别技术,主要采用模板匹配的方法,在孤立词汇的识别上取得了较好的效果。但是,对于大量的连续语音而言,模板匹配方法遇到了困难,由于语音识别的准确率依赖于匹配的准确率,因此需要大量的语音匹配模板,造成匹配系统设计复杂,匹配效率低,消耗资源要求也高。
近年来,提出了一些基于文本情感分类和深度学习的语音识别方法,由于基于情感词典的文本情感分类对人的记忆和判断思维的最简单的模拟,存在识别准确率较低的问题,进一步利用深度学习算法可以提高准确度,但是实现成本较高,系统设计很复杂等。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于文本情感分类的语音识别控制系统,提高了语音识别的准确率,降低了语音识别系统的复杂性,保障识别准确度的同时降低了实现成本。
本发明的目的是通过以下技术方案来实现的:
一种基于文本情感分类的语音识别控制系统,包括文本预处理模块,用于剔除html标签,并进行数据清洗识别出情感词汇,将识别出的感词汇分类导入文本情感模板;文件上传模块,用于将文本情感模板和语音文件上传到服务器;语音识别服务器,在所述语音识别服务器中设置有语音识别程序模块,所述语音识别程序模块包括文件查询接口模块、特征提取模块和解码器模块;所述文件查询接口模块,用于检索查询是否上传有新的语音文件;所述特征提取模块用于将上传的语音文件的所有特征向量按时间顺序排列,将排列好的特征向量分成多等份,对每一等份进行池化,然后将所有向量拼起来再次池化处理,从而得到全局特征并形成语音记录文件;所述解码器模块,用于将语音记录文件解码成文本信息,并与文本情感模板进行匹配;文件下载模块,用于将语音记录文件传输到手机端和计算机端;在计算机端通过计算机现实模块输出语音识别结果;在手机端,通过手机显示模块输出语音识别结果。
进一步的,包括数据爬取模块,用于爬取网页数据。
进一步的,所述文本情感模板包括积极词汇情感模板、消极词汇情感模板。
进一步的,包括终端测深度学习模块,所述终端测深度学习模块用于训练识别录入语音。
进一步的,所述终端测深度学习模块包括计算机端深度学习模块,所述终端测深度学习模块用于训练识别录入语音。
进一步的,所述终端测深度学习模块包括手机端深度学习模块,所述终端测深度学习模块用于训练识别录入语音。
本发明的有益效果是:
(1)本发明提高了语音识别的准确率,降低了语音识别系统的复杂性,保障识别准确度的同时降低了实现成本。具体的,形成语音记录文件,提高了特征提取效率,通过将语音记录文件解码成文本信息并与文本情感模板进行匹配,与语音匹配相比,降低了匹配难度,提高了匹配准确性,实现了快速匹配正确的语音记录文件,不仅提高了匹配效率,而且使得系统设计更加简单,降低了实现成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的结构框图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。本说明书中公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
下面将详细描述本发明的具体实施例,应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。在以下描述中,为了提供对本发明的透彻理解,阐述了大量特定细节。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的电路,软件或方法。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在对实施例进行描述之前,需要对一些必要的术语进行解释。例如:
若本申请中出现使用“第一”、“第二”等术语来描述各种元件,但是这些元件不应当由这些术语所限制。这些术语仅用来区分一个元件和另一个元件。因此,下文所讨论的“第一”元件也可以被称为“第二”元件而不偏离本发明的教导。应当理解的是,若提及一元件“连接”或者“联接”到另一元件时,其可以直接地连接或直接地联接到另一元件或者也可以存在中间元件。相反地,当提及一元件“直接地连接”或“直接地联接”到另一元件时,则不存在中间元件。
在本申请中出现的各种术语仅仅用于描述具体的实施方式的目的而无意作为对本发明的限定,除非上下文另外清楚地指出,否则单数形式意图也包括复数形式。
当在本说明书中使用术语“包括”和/或“包括有”时,这些术语指明了所述特征、整体、步骤、操作、元件和/或部件的存在,但是也不排除一个以上其他特征、整体、步骤、操作、元件、部件和/或其群组的存在和/或附加。

语音识别初探

阅读数 3373

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