2016-05-23 16:45:51 ff8zell 阅读数 1476
  • C++语音识别开篇

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

    5918 人正在学习 去看看 杨波

一个在电信上班的前端普通职员,由于更感兴趣于技术研究(其实也是对于营销能力不足的一种逃避),解决工作生活中遇到的难题,所以决定接下去的日子里投身于语音识别的学习。

接下去坚持每日更新学习进展,此处的文字用于督促自己抓紧时间。

5月24日更新,对于一个零基础的人来说,学习是有一条漫长的路需要走的,对于遇到的困难,我是迫切的希望能够解决,但是确实没有相应的基础,只能不断的记忆、搜索、再记忆,尝试构建一个新的认识方式以理解诸多技术的精妙之处。

今日总结语音识别的大概流程:平常我们能见到的可视化的语音是,声音波形。经典的语音识别方式是将波形文件进行分帧,这个过程可以想象成是一个长度为25的矩形窗口,每移动10的距离剪切下一段语音波形作为一帧。然后取每一帧的声学特征(mfcc),取声学特征的过程包括了将时域信号进行傅里叶变化后可进行频域的分析-经过mel滤波器组-对数运算-离散余弦变换DTC最终得到MFCC系数。接下去找出若干帧对应的音素,这个过程使用的是隐马尔科夫HMM模型。知道了对应音素后就可以组成单词。

今天主要学习了MFCC,期间碰到非常多的问题,这会真的体会到了书到用时方恨少啊,经常会因为一些小的知识点不明白而影响到了继续阅读。明日将继续深入学习关于MFCC的知识。

每日都将在这里进行一天的学习总结,因为初学,很多细节问题意识不到,这里总结的文字也会存在很多漏洞,所以仅仅只作为自己对自己的督促,和后期学习回顾作用,有差错的后期会做改正。如果有专家光顾这里就简单一笑而过吧,若是能给予指正批评那当然是求之不得的恩惠。

2018-07-31 17:08:50 yibuerbusanbu 阅读数 3432
  • C++语音识别开篇

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

    5918 人正在学习 去看看 杨波

1.前言:
本科毕业之后,开始了北漂,一直想从事一些偏上层方面的工作,开始找工作期间各种碰壁。可能自己c语言的基础还可以的原因,被现在的单位的引擎组招了过来,起初只是被用来干一些引擎的支持和测试,慢慢的开始接触到了语音识别等引擎的开发,所以利用自己在工作中所了解得在这里班门弄斧地谈谈语音识别,也是想工作进行总结。也欢迎大家指出错误和不足。
1.语音识别简介:
语音识别技术即AutomaticSpeechRecognition(简称ASR),是指将人说话的语音信号转换为可被计算机程序所识别的信息,从而识别说话人的语音指令及文字内容的技术。目前语音识别被广泛的应用于客服质检,导航,智能家居等领域。
2.语音识别过程:
在这里插入图片描述
语音识别大体上包含前端处理,特征提取,模型训练,解码四个模块。其中前端处理包括了,语音转码,高通滤波,端点检测等。
上图目前语音识别的基本流程,输入的语音数据流经过前端处理(语音格式转码,高通,端点检测),语音格式转码是将输入的语音数据转成pcm或者wav格式的语音,端点检测是检测出转码后语音中的有效语音,这样对解码速度和识别率上都会改善。经过前端处理之后的得到的分段语音数据送入特征提取模块,进行声学特征提取。最后解码模块对提取的特征数据进行解码,解码过程中利用发音字典,声学模型,语言模型等信息构建WFST搜索空间,在搜索空间内寻找匹配概率最大的最优路径,便得到最优的识别结果。
在其他章节中会详细介绍以上四个模块。
3.语音识别的学习:
由于语音识别本事就是一个非常大并且繁琐的工程,设计到知识面很广,目前我也在想如何把这个学习过程更加系统化,简单化。希望这一块能得到前辈的指点。
目前我再看这些书籍:
1).数学之美,这本书对整个语音识别过程以及各个模块讲的很详细,也很通俗易懂,是一本不错的语音识别入门的书。
2).语音信号处理,这本书对前端处理模块的学习有很大的帮助,由于是一本教材书籍,自己在有些地方看起来也很晦涩,目前也想在网上找一些相关网课看看,这样更加深理解,找到的话也会第一时间分享。
3).关于特征提起模块,网上有很多帖子写的都很详细,后面我也会整理一下。
4).解码和模型训练…未完!!!

2017-09-01 16:52:06 jianyuchen23 阅读数 1030
  • C++语音识别开篇

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

    5918 人正在学习 去看看 杨波

语音识别的研究和发展情况基本分为三个主要时期:

2011年之前
没什么进展
2011年—2014年
第一个基于深度学习的语音识别系统。此后有了更多的数据,云计算后,一些公司均采用深度学习技术。
2015年至今
递归神经网络与注意力模型、记忆网络以及其他技术一起,掀起了第三次发展的浪潮。

机器所识别的语音可能包括一部分噪声,所以要求其能够从噪声中提取出与对话相关的部分并将其转化为有意义的文字。

语音识别系统的基本构造块

语音识别基本分为三个部分:

  • 信号位准:信号位准的目的是提取语音信号并增强信号(如果有必要的的话),或是进行适当预处理、清理和特征提取。
  • 噪声位准:噪音位准的目的在于将不同的特征划分成不同的声音。换句话说,声音本身并不能提供一个足够精准的标准,而有时我们将次于原声的声音称为声学标准。
  • 语言位准:因为我们假设这些声音都是人类所产生而且是有意义的,因此我们可以把这些声音组合成词语,然后把这些词语组合成句子。

评级标准

人们对语音识别系统的评价都基于一个名为配电盘(SWBD)的行业标准。(SWBD)是一个语音语料库,整合了电话中的即兴对话,包含音频和人声的副本。
语音识别系统的评价标准主要基于其误字率(WER),误字率是指语音识别系统识别错误的单词有多少。

从2008年得到2011年,误字率一直处于一个稳定的状态,位于23%到24%之间;深度学习从2011年开始出现时,误字率从23%降低至5.5%。

在信号位准中,有着不同的基于神经模型从信号中提取和增强语音本身的技术。同时,还有能够用更加复杂高效的基于神经模型的方法取代经典特征提取方法的技术。
声音和语言位准也包含有各种各样不同的深度学习技术,无论是声音等级分类还是语言等级分类,都采用了不同类型基于神经模型的架构。

2018-04-22 23:57:26 xm1076709179 阅读数 1880
  • C++语音识别开篇

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

    5918 人正在学习 去看看 杨波

语音识别就是将包含文字信息的语音通过计算机转化成文字的过程,也叫语音转写,英文叫automatic speech recognition(ASR)或者 speech to text(STT),语音识别框架一般如图所示:
这里写图片描述
从上图中可以看出,语音识别技术是一个复杂的多学科交叉技术,涉及到信号处理、统计、机器学习、语言学、数据挖掘、生理学等知识。一个完整的语音识别系统声学方面和语言学方面。声学方面包括从最初的语音信号获取(这其中包括将语音转化成电信号)到语音信号处理(包括模数转换,降噪、增强、端点检测(VAD)等),再到特征提取(MFCC、FB、PLP、BN等),最后到声学模型建模;语言学方面包括字典(词典)构造,语言模型建模等。通过建立的声学模型和语言模型就可以对输入的测试语音进行解码,得到相对应的文字。

解码原理(基于最大后验概率MAP)

假设我们有一段语音X(通常是提取的特征),要得到对应的文本W,就是求使得概率p(W|X)最大的W的过程,即求

W¯=argmaxWp(W|X)

利用条件概率公式和贝叶斯公式将上述公式转化为
W¯=argmaxWp(W,X)p(X)=argmaxWp(X|W)p(W)p(X)

p(X)表示声学观测序列的概率,不管选择解码空间中的哪一条路径,一段语音发出来后p(X)就确定了,是一个未知的常数,虽然这个概率很难估计,但是并不会影响到W¯的取值,因此,上式可以简化为
W¯=argmaxWp(X|W)p(W)

该公式就是解码的核心公式了,下面对该公式做一个简单解读
其中第一项p(X|W)就是我们的声学模型,准确的说,这个概率可以通过声学模型和词典(Lexicon)计算得到,第二项就是我们的语言模型,该怎么理解呢?
从概率上看,p(X|W)表示在给定文本W的情况下,求“生成”语音X的概率,就是说,我们之所以说某一句话而不会说其他话,是因为在说这句话之前,脑海里肯定有我们想表达的内容(这里内容就可以理解成文本W),然后,调动发声器官发出语音X,因此,语音识别的目标就是通过发出的语音X去猜测说这句话到底表达什么内容W
p(W)就是我们的先验概率,为什么这么说,因为它不依赖于我们给定的语音X,而是由经验得出的,具体的,可以理解为人类发展到现在所总结出来的语法知识,更通俗一点就是人类的表达习惯。举个例子,我们通常会说“上床睡觉”而不会说“上床上班”。这个概率可以由语言模型得到。
要使得p(X|W)p(W)最大,一方面需要文字表达尽量符合语法习惯(即p(W)尽量大),另一方面需要识别出来的文字尽量和发出的语音相符(即p(X|W)尽量大),就是说,在解码空间里(解码空间后续会说,简单理解为不同词之间有多种组合方式,不同的组合方式构成不同的W),可能有很多种组合都符合语法习惯,但是有些就和发出的语音不太吻合,例如,我们说一句话“我下班坐地铁回家”,其中有三个不同的识别结果:
1.我下班坐公交回家
2.我坐地铁回家
3.我下班坐地铁回家
显然,上述三种识别结果都符合语法习惯,但是前两种识别结果都存在误识(替换错误,后续会讲)或信息丢失(删除错误,后续会讲),即语音中所表达的信息没有被完全识别出来,因此声学模型的得分p(X|W)就没有第3种识别结果得分高。
好了,语音识别的介绍就到这里,具体如何对声学模型和语言模型进行建模,以及解码等内容在后续进行介绍。

ps:哪位大神能教我怎样用LaTexW写到argmax下面去吗,这样看着好别扭

2018-10-10 19:01:28 m0_37605956 阅读数 377
  • C++语音识别开篇

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

    5918 人正在学习 去看看 杨波

摘要: 百度语音识别demo接入至vr设备:
项目所需,要测试百度语音识别对某些特定指令语言在vr设备上的识别正确率,需要首先研究百度语音识别的demo使用,特将整个学习过程记录:

一:百度语音android sdk下载地址
http://ai.baidu.com/sdk#asr
我下载了“离在线融合SDK”的android版本
上述链接的页面点击"使用说明"链接,进入SDK说明页面:
http://ai.baidu.com/docs#/ASR-Android-SDK/top

SDK下载后,参考了两个重要的文档,
第一个是目录下的readme_README_IMPORTANT
第二个是doc_integration_DOCUMENT目录下的"ASR-INTEGRATION-helloworld-V2.0",

二:根据上述文档集成百度asr至helloworld工程
由于下载下来的sdk直接导入到android studio中没有编译通过,所以直接新建项目集成语音识别功能,依据ASR-INTEGRATION-helloworld-V2.0文档,

首先新建一个android helloworld工程:
为了节约时间,没有在官网中注册应用。使用百度demo的各个参数。在工程新建过程中,完全按文档中的进行,包括company domain, appId,appkey,secretkey以及applicationId。在选择activity模板时候,选择了"Empty activity",android的版本号选择了默认的15

其次:工程建好编译通过后,按文档导入原demo的core模块并设置app依赖core,编译时候出现以下错误:
Android dependency ‘com.android.support:appcompat-v7’ has different version for the compile (26.1.0) and runtime (27.1.1) classpath. You should manually set the same version via DependencyResolution

网上搜索原因发现:
是由于app和core两个模块使用的依赖库(appcompat-v7)的版本号不同导致,
app的gradle:
dependencies {
implementation fileTree(include: [’
.jar’], dir: ‘libs’)
implementation ‘com.android.support:appcompat-v7:26.1.0’
implementation ‘com.android.support.constraint:constraint-layout:1.1.3’
testImplementation ‘junit:junit:4.12’
androidTestImplementation ‘com.android.support.test?1.0.2’
androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’
implementation project(’:core’)
}*
core的gradle:
dependencies {
api fileTree(include: [’
.jar’], dir: ‘libs’)
implementation ‘com.android.support:appcompat-v7:27.1.1’
}*

于是修改了app模块的库版本至:27.1.1,与core保持一致。
同时修改app模块build.gradle里的compileSdkVersion 27,targetSdkVersion 27,之后编译通过。

之后修改mainactivity如下:
public class MainActivity extends ActivityMiniRecog {

}

编译后安装到android手机可以进行语音识别

三: 将该demo移植至vr设备:
需要修改manifest,在MainActivity的intent-filter下增加:
category android:name=“com.***.intent.category.VRAPP”
这样安装后可以看到该AP

四: vr设备如何测试:
由于不能直接点击,所以在使用controller打开AP后,需要一个辅助软件vysor进行投屏,然后在电脑上面进行点击测试操作。

语音识别初探

阅读数 3373

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