2014-06-26 15:36:17 suaoyang 阅读数 2004
  • C++语音识别开篇

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

    5905 人正在学习 去看看 杨波

一、概述

作为最自然的人机交互方式 --语音,正在改变人们的生活,丰富多媒体技术的应用。语音识别技术是语音信号处理的一个重要分支,也是近年来很火的一个研究领域。随着科技的飞速发展,语音识别不仅在桌面PC和大型工作站得到了广泛应用,而且在嵌入式系统领域也占有一席之地,如智能家居、苹果的Siri、车载语音识别系统等。相信在不久的将来,语音识别技术必定会渗透在人们生活的每个角落。

二、语音识别系统的分类

语音识别按照说话人的说话方式可以分为孤立词(IsolatedWord)识别、连接词(Connected Word)识别和连续语音(Continuous Speech)识别。孤立词识别是指说话人每次只说一个词或短语,每个词或短语在词汇表中都算作一个词条,一般用在语音电话拨号系统中;连接词语音识别支持一个小的语法网络,其内部形成一个状态机,可以实现简单的家用电器的控制,而复杂的连接词语音识别系统可以用于电话语音查询、航空订票等系统;连续语音识别是指对说话人以日常自然的方式发音,通常特指用于语音录入的听写机。

从识别对象的类型来看,语音识别可以分为特定人(SpeakerDependent)语音识别和非特定人(Speaker Independent)语音识别。特定人是指只针对一个用户的语音识别,非特定人则可用于不同的用户。

从识别的词汇量大小可以分为小词汇量(词数少于100)、中等词汇量(词数100~500)和大词汇量(词数多于500

非特定人大词汇量连续语音识别是近几年研究的重点,也是研究的难点。目前的连续语音识别大多是基于HMM(隐马尔科夫模型)框架,并将声学、语言学的知识统一引入来改善这个框架,其硬件平台通常是功能强大的工作站或PC机。

三、语音识别的原理

语音识别就是对麦克风输入的语音信号进行解析和理解,并将其转化为相应的文本或命令。

一个完整的语音识别系统主要包括三个部分:

(1)语音特征提取(前端处理部分):目的是滤除各种干扰成分,从语音波形中提取出随时间变化的能表现语音内容的特征矢量序列。

(2) 声学模型和模式匹配(识别算法):声学模型通常由获得的语音特征通过训练产生,目的是为每个发音建立发音模板。在识别时将输入的语音特征同声学模型进行匹配与比较,得到最佳识别结果。

(3) 语义理解(后处理):计算机对识别结果进行语义、语法分析,明白语音的意义以便做出相应的反应,通常通过语言模型来实现。

语音识别原理如下图所示:

待识别语音经话筒转化为电信号后加在识别系统的输入端,经过预处理,接着进行语音特征提取,用反映语音信号特征的若干参数来代表原始语音。常用的语音特征包括:线性预测系数(LPC)、线性预测倒谱系数(LPCC)、Mel频谱系数(MFCC)等。接下来分为两个阶段::训练阶段和识别阶段。在训练阶段,对用特征参数形式表示的语音信号进行相应处理,获得表示识别基本单元共性特点的标准数据,以此构成参考模板,将所有能识别的基本单元的参考模板结合在一起,形成参考模式库;在识别阶段,将待识别的语音信号经特征提取后逐一与参考模式库中的各个模板按某种原则进行匹配,找出最相似的参考模板所对应的发音,即为识别结果。最后进行语音处理,涉及语法分析、语音理解、语义网络等。

语音识别过程要根据模式匹配原则,计算未知语音模式与语音模板库中的每一个模板的距离测度,从而得到最佳的匹配模式。语音识别所应用的模式匹配方法主要有动态时间规整(Dynamic Time Warping,DTW),隐马尔科夫模型(Hidden Markov Model,HMM)和人工神经元网络(Artificial Neural Networks,ANN)。

四、难题

识别率是衡量语音识别系统性能好坏的一个重要指标,在实际应用中,识别率主要受到以下几个因素的影响:

1、  对于汉语语音识别,方言或口音会降低识别率;

2、  背景噪声。公共场所的强噪声对识别效果影响甚大,即使是在实验室环境下,敲击键盘、移动麦克风都会成为背景噪声;

3、  “口语”问题。它既涉及到自然语言理解,又与声学有关。语音识别技术的最终目的是要让用户在“人机对话”时,能够像进行“人与人对话”一样自然,而一旦用户以跟人交谈的方式进行语音输入时,口语的语法不规范和语序不正常的特点会给语义的分析和理解带来困难。

此外,识别率还与说话人的性别、说话时间长短等有关。

实时性是衡量语音识别系统性能好坏的另一指标。

对于具有高速运算能力的CPU和大容量存储器的PC而言,基本上能够满足实时性的要

求;而对于资源有限的嵌入式系统来说,实时性几乎得不到保证。

参考资料:《matlab扩展编程》

2014年6月26日星期四15时28分

        

 

2009-02-10 17:19:00 chenlanmin 阅读数 1403
  • C++语音识别开篇

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

    5905 人正在学习 去看看 杨波

语音识别技术是2000年至2010年间信息技术领域十大重要的科技发展技术之一。它是一门交叉学科,正逐步成为信息技术中人机接口的关键技术。语音识别 技术与语音合成技术结合使人们能够甩掉键盘,通过语音命令进行操作。语音技术的应用已经成为一个具有竞争性的新兴高技术产业。

语音识别技术

与 机器进行语音交流,让机器明白你说什么,这是人们长期以来梦寐以求的事情。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的 高技术。语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家 电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。
语音识别听写机在一些领域的应用被美国新闻界评为1997年计算机发展十件大事之一。很多专家都认为语音识别技术是2000年至2010年间信息技术领域十大重要的科技发展技术之一。

语音识别技术的基础

语音识别技术关系到多学科的研究领域,不同领域上的研究成果都对语音识别的发展作了贡献。

让机器识别语音的困难在某种程度上就像一个外语不好的人听外国人讲话一样,它和不同的说话人、不同的说话速度、不同的说话内容、以及不同的环境条件有关。语音信号本身的特点造成了语音识别的困难。这些特点包括多变性,动态性,瞬时性和连续性等。

计算机语音识别过程与人对语音识别处理过程基本上是一致的。目前主流的语音识别技术是基于统计模式识别的基本理论。一个完整的语音识别系统可大致分为三部分:

(1)语音特征提取:其目的是从语音波形中提取出随时间变化的语音特征序列。

(2)声学模型与模式匹配(识别算法):声学模型通常将获取的语音特征通过学习算法产生。在识别时将输入的语音特征同声学模型(模式)进行匹配与比较,得到最佳的识别结果。

(3)语言模型与语言处理:语言模型包括由识别语音命令构成的语法网络或由统计方法构成的语言模型,语言处理可以进行语法、语义分析。对小词表语音识别系统,往往不需要语言处理部分。

声 学模型是识别系统的底层模型,并且是语音识别系统中最关键的一部分。声学模型的目的是提供一种有效的方法计算语音的特征矢量序列和每个发音模板之间的距 离。声学模型的设计和语言发音特点密切相关。声学模型单元大小(字发音模型、半音节模型或音素模型)对语音训练数据量大小、系统识别率,以及灵活性有较大 的影响。必须根据不同语言的特点、识别系统词汇量的大小决定识别单元的大小。

语言模型对中、大词汇量的语音识别系统特别重要。当分类发生 错误时可以根据语言学模型、语法结构、语义学进行判断纠正,特别是一些同音字则必须通过上下文结构才能确定词义。语言学理论包括语义结构、语法规则、语言 的数学描述模型等有关方面。目前比较成功的语言模型通常是采用统计语法的语言模型与基于规则语法结构命令语言模型。语法结构可以限定不同词之间的相互连接 关系,减少了识别系统的搜索空间,这有利于提高系统的识别。

语音识别过程实际上是一种认识过程。就像人们听语音时,并不把语音和语言的语法结构、语义结构分开来,因为当语音发音模糊时人们可以用这些知识来指导对语言的理解过程,但是对机器来说,识别系统也要利用这些方面的知识,只是如何有效地描述这些语法和语义还有困难:

(1)小词汇量语音识别系统。通常包括几十个词的语音识别系统。

(2)中等词汇量的语音识别系统。通常包括几百个词至上千个词的识别系统。

(3)大词汇量语音识别系统。通常包括几千至几万个词的语音识别系统。这些不同的限制也确定了语音识别系统的困难度。

语音识别技术的发展情况

我 国语音识别研究工作起步于五十年代,但近年来发展很快。研究水平也从实验室逐步走向实用。从1987年开始执行国家863计划后,国家863智能计算机专 家组为语音识别技术研究专门立项,每两年滚动一次。我国语音识别技术的研究水平已经基本上与国外同步,在汉语语音识别技术上还有自己的特点与优势,并达到 国际先进水平。其中具有代表性的研究单位为清华大学电子工程系与中科院自动化研究所模式识别国家重点实验室。

清华大学电子工程系语音技术 与专用芯片设计课题组,研发的非特定人汉语数码串连续语音识别系统的识别精度,达到94.8%(不定长数字串)和96.8%(定长数字串)。在有5%的拒 识率情况下,系统识别率可以达到96.9%(不定长数字串)和98.7%(定长数字串),这是目前国际最好的识别结果之一,其性能已经接近实用水平。研发 的5000词邮包校核非特定人连续语音识别系统的识别率达到98.73%,前三选识别率达99.96%;并且可以识别普通话与四川话两种语言,达到实用要 求。

2000年7月在北京自然博物馆新开设的动物展馆中展出的具有语音识别口语对话功能“熊猫”,采用了我们研发非特定人连续语音识别系 统,在展览馆这样高噪声的环境下,该识别系统的识别率也超过了98%,达到实用要求。通过该系统观众与“熊猫”自然对话可以了解熊猫的生活习惯、生理结构 等信息,其形式生动、活泼,吸引了大量的学生与参观者。

采用嵌入式芯片设计技术研发了语音识别专用芯片系统,该芯片以8位微控制器 (MCU)核心,加上低通滤波器,模/数(A/D),数/模(D/A),预放,功率放大器,RAM,ROM,脉宽调幅(PWM)等模块,构成了一个完整的 系统芯片,这是国内研发的第一块语音识别专用芯片。芯片中包括了语音识别、语音编码、语音合成功能,可以识别30条特定人语音命令,识别率超过95%,其 中的语音编码速率为16kbits/s。该芯片可以用于智能语音玩具;也可以与普通电话机相结合构成语音拨号电话机。这些系统的识别性能完全达到国际先进 水平。研发的成果已经进入实用领域,一些应用型产品正在研发中,其商品化的过程也越来越快。

语音识别技术的前景和应用

在 电话与通信系统中,智能语音接口正在把电话机从一个单纯的服务工具变成为一个服务的“提供者”和生活“伙伴”;使用电话与通信网络,人们可以通过语音命令 方便地从远端的数据库系统中查询与提取有关的信息;随着计算机的小型化,键盘已经成为移动平台的一个很大障碍,想象一下如果手机仅仅只有一个手表那么大, 再用键盘进行拨号操作已经是不可能的。语音识别正逐步成为信息技术中人机接口的关键技术,语音识别技术与语音合成技术结合使人们能够甩掉键盘,通过语音命 令进行操作。语音技术的应用已经成为一个具有竞争性的新兴高技术产业。

语音识别技术发展到今天,特别是中小词汇量非特定人语音识别系统识 别精度已经大于98%,对特定人语音识别系统的识别精度就更高。这些技术已经能够满足通常应用的要求。由于大规模集成电路技术的发展,这些复杂的语音识别 系统也已经完全可以制成专用芯片,大量生产。在西方经济发达国家,大量的语音识别产品已经进入市场和服务领域。一些用户交机、电话机、手机已经包含了语音 识别拨号功能,还有语音记事本、语音智能玩具等产品也包括语音识别与语音合成功能。人们可以通过电话网络用语音识别口语对话系统查询有关的机票、旅游、银 行信息,并且取得很好的结果。调查统计表明多达85%以上的人对语音识别的信息查询服务系统的性能表示满意。

可以预测在近五到十年内,语 音识别系统的应用将更加广泛。各种各样的语音识别系统产品将出现在市场上。人们也将调整自己的说话方式以适应各种各样的识别系统。在短期内还不可能造出具 有和人相比拟的语音识别系统,要建成这样一个系统仍然是人类面临的一个大的挑战,我们只能一步步朝着改进语音识别系统的方向一步步地前进。至于什么时候可 以建立一个像人一样完善的语音识别系统则是很难预测的。就像在60年代,谁又能预测今天超大规模集成电路技术会对我们的社会产生这么大的影响。

2019-01-24 10:53:50 u010090306 阅读数 165
  • C++语音识别开篇

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

    5905 人正在学习 去看看 杨波

算法职位分类

 

 

不同算法工程师涉及的技术

 

技术岗位(语音识别、自然语言)

 


 

 

 

应用岗位(对话系统)

 


 

 

 

不同算法应用领域

 

语音识别、自然语义处理、对话系统

 


 

 

在当下这个时间,以对话为主要交互形式的应用,会越来越多的出现在我们的生活场景中。当然,这个对话系统,不只是局限在我们日常所见到的手机上的各类助手,还包括各种音频转化等软件应用。

 

一个常规的对话交互,计算机往往要经历的过程是『听懂-理解-回答』这3个环节。这3个环节涉及到的技术就是:语音识别(ASR),自然语言处理(NLP)、语音合成(TTS)

 

 

语音识别是将用户所说的话(语音)转化为文字形式。

自然语言处理,则是理解这些文字(其实,机器还是挺难理解的,只能通过大量的数据做随机固定反馈)

语音合成,则是在计算机理解了用户的意图之后,将回答以语音的形式输出。

 

因此,语音识别和语音合成,只是我们作为一手用户的直观感受,实际上自然语言处理,是其在后台进行处理的非常重要的过程。

语音识别,相当于感知层;自然语言处理,是其逻辑层。语音是前提基础,自然语言处理是后续支持。

 

整个闭环流程,在我们的生活中非常常见。光微信上面,就有很多相关的功能。

语音转换为文字,是一个。

很显然,我只是读了前面关于语音识别的任务这句话,但微信就识别出来的是玉林市教育。

 

微信的声音锁,也是一个。

导航时的语音搜索地点

百度搜索时的语音搜索

手机输入法中的语音输入

这些都是语音识别的一些常用应用。

 

截止目前,其实语音识别系统对环境的敏感度还是非常高的,因为非常容易造成语音拒识或误识的现象,未来的语音识别可以需要添加一些新的稳定的信号源或者信号处理方式。

 

前面的微信声音锁功能,建议各位慎重,因为很有可能你的微信就打不开了。

 

事实上,目前语音识别主要体现2种应用场景。

 

固定场景

专业术语的描述是,只能识别预告指定的字/词/指令。

 

目前这类产品的应用相对非常成熟,识别率也非常高。

像类似小米音箱或者天猫精灵之类的产品,你只要说,小艾,打开空调,播放音乐,他就自动做一些简单的操作。如果你要是来一段,小艾,可以借我10块钱么?人家可就不会理你了。

 

开放场景

 

无预告指令,算法通过将语音放入语言集合中进行识别。

 

比如,同声传译类的机器,或者是即时翻译器,都会算做此类。当然目前的小冰、siri等这些手机中的语音助手,也是属于此类范畴。

还有一种长段语音翻译也是这种类型,比如搜狗和讯飞都有类似的产品,包括微信的那个语音转文字,也是属于这个版块的。因为计算机不知道你会输入什么样的语音指令。

 

对话系统

对话系统的底层,是自然语言处理。

目前市面上主要,也是有2种。

 

 

像语音版的智能电话销售,相信很多朋友都体验过。

 

一般在保险和电信行业,会有这种。

电话接通后,对面没声音。当你『喂』之后,对面才会开始。

 

目前来看,比较厉害的siri大约能够做到的是这样的对话。

若是日后猎头行业,也能够有这一套完整工作能力匹配、求职动机匹配的智能电话系统的话,未来很多猎头,真的是要失业了。

以人工智能的聪明才智,大量输入各种优质的电话录音做深度学习,真的很可怕。

 

 

不过,目前来看这个非常难。

目前我们接触到的各种Saas软件,更多只是停留在简历文本的这种固定化内容处理,不用担心。

2019-12-10 13:42:53 Tecsae 阅读数 12
  • C++语音识别开篇

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

    5905 人正在学习 去看看 杨波

自1962年IBM推出第一台语音识别机器以来,语音识别科学已经走了很长一段路。这已经不是什么秘密了。随着技术的发展,语音识别已越来越多地渗透到我们的日常生活中,这些语音驱动应用程序包括Amazon的Alexa, 苹果的Siri,微软的Cortana或Google的许多语音响应功能。 从我们的电话,计算机,手表甚至冰箱中,我们带入生活中的每一个新的语音交互设备都会加深我们对人工智能(AI)和机器学习的依赖。

人工智能与机器学习

人工智能由约翰·麦卡锡(John McCarthy)于1956年首次提出,可以定义为“机器展示的人类智能”。 在最初用于分析和快速计算数据的地方,人工智能现在允许计算机执行通常只有人类才能执行的任务。

机器学习是人工智能的子集,是指可以自行学习的系统。 它涉及教导计算机识别模式,而不是使用特定规则对其进行编程。 训练过程包括将大量数据提供给算法,并使其从该数据中学习并识别模式。 在早期,程序员必须为他们想识别的每个对象(例如人与狗)编写代码; 现在,一个系统可以通过向每个系统展示许多示例来识别两者。 随着时间的推移,这些系统将不断变得更加智能,而无需人工干预。

机器学习有许多不同的技术和方法。 这些方法之一是人工神经网络,其中一个例子是产品推荐。 电子商务公司通常使用人工神经网络展示用户更有可能购买的产品。 他们可以通过从所有用户的浏览体验中提取数据并利用这些信息提出有效的产品推荐来做到这一点。

今天,人工智能的其他一些常见应用是对象识别,翻译,语音识别和自然语言处理。 Rev的自动转录由自动语音识别(ASR)和自然语言处理(NLP)驱动。 ASR是将口语单词转换为文本,而NLP是对文本进行处理以得出其含义。 由于人类经常以口语,缩写和首字母缩写讲话,因此需要对自然语言进行大量的计算机分析才能产生准确的转录。

语音识别技术面临的挑战

语音识别技术面临的挑战众多,但范围正在缩小。 其中包括克服不良的录音设备,背景噪音,难以理解的口音和方言,以及人们各种声音的变化。

教机器学习人类读口语的能力尚未达到完美。 聆听和理解一个人说的话远不止是听到一个人说的话。 作为人类,我们还通过人的眼睛,面部表情,肢体语言以及语音中的语调和语调,解读话语的含义。 语音的另一个细微差别是人类倾向于缩短某些短语(例如“我不知道”变成“不知道”)。 这种人为的倾向对语音识别中的机器学习提出了另一个挑战。

机器正在学习“侦听”口音,情绪和曲率,但是还有很长的路要走。 随着技术变得越来越复杂,特定算法使用了更多数据,这些挑战正在迅速被克服。

随着人工智能的发展以及可以轻松挖掘用于机器学习目的的大量语音数据,如果它成为下一个主要交互界面也不足为奇了。

钛灵AIX是一款集计算机视觉与智能语音交互两大核心功能为一体的人工智能硬件,搭载 Intel 专业级 AI 加速运算芯片与多种传感技术,是全方位体验和学习新互联网、物联网、人工智能技术的"超级智慧大脑"。钛灵 AIX可以帮助越来越多AI爱好者、开发者,甚至在校学生群体,降低人工智能的学习与研发成本,加速AI应用的开发。

化繁为简,简单3步,只需5分钟,就能快速开发一个AI应用。钛灵AIX,让AI易用易开发。开源开放,get更多有趣新技能!

2017-09-20 09:59:32 kwame211 阅读数 2301
  • C++语音识别开篇

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

    5905 人正在学习 去看看 杨波

图片来自dribbble.com by Justin Mezzell

本系列文章目前已经更新两期,分别是: 机器学习原来如此有趣!全世界最简单的机器学习入门指南、 机器学习原来如此有趣:如何故意欺骗神经网络机器学习原来如此有趣:用深度学习识别人脸

语音识别正在「入侵」我们的生活。我们的手机、游戏主机和智能手表都内置了语音识别。他甚至在自动化我们的房子。只需50美元,你就可以买到一个Amazon Echo Dot,这是一个可以让你订外卖、收听天气预报、甚至是买垃圾袋的魔术盒,而这一切你只需要大声说出:


Aleax,给我订一个pizza!


Echo Dot 在2015年的圣诞假期一经推出就大受欢迎,在亚马逊上面立刻售罄。


但其实语音识别已经存在很多年了,那为什么现在才成为主流呢?因为深度识别终于将语音识别在非受控环境下的准确度提高到了一个足以投入实用的高度。


吴恩达教授曾经预言过,当语音识别的准确度从95%提升到99%的时候,它将成为与电脑交互的首要方式。


下面就让我们来学习与深度学习进行语音室识别吧!


机器学习并不总是一个黑盒

如果你想知道神经机器翻译是如何工作的,你应该猜到了我们可以简单地将一些声音送入神经网络,然后训练它使之生成文本:



这是使用深度学习进行语音识别的最高追求,但是很遗憾我们现在还没有完全做到这一点(至少在笔者写下这一篇文章的时候还没有--我敢打赌,再过几年我们可以做到)


一个大问题是语速不同。一个人可能会很快的说出''Hello!'',而另一个人可能非常缓慢的说''heeeelllllllllllllooooo'!',产生了一个拥有更多数据也更长的声音文件。这两个文件都应该被识别为同一个文本--“Hello!”。而事实证明,把各种长度的音频文件自动对齐到一个固定长度的文本是很难的一件事情。

为了解决这个问题,我们必须使用一些特殊的技巧,并进行一些深度神经网络以外的特殊处理。让我们看看它是如何工作的吧!



将声音转换为比特(Bit)


显然,语音识别的第一步是--我们需要将声波输入到电脑中。


我们应该怎么将声波转换为数字呢?让我们使用我说的「hello」这个声音片段举个例子:


声波是一维的,它在每个时刻都有一个基于其高度的值。让我们把声波的一小部分放大看看:

为了将这个声波转换成数字,我们只记录声波在等距点的高度:



这被称为采样(sampling)。我们每秒读取数千次,并把声波在该时间点的高度用一个数字记录下来。这基本上就是一个未压缩的 .wav 音频文件。


“CD 音质”的音频是以 44.1khz(每秒 44100 个读数)进行采样的。但对于语音识别,16khz(每秒 16000 个采样)的采样率就足以覆盖人类语音的频率范围了。


让我们把“Hello”的声波每秒采样 16000 次。这是前 100 个采样:

每个数字代表声波在一秒钟的16000分之一处的振幅。


数字采样小助手


因为声波采样只是间歇性的读取,你可能认为它只是对原始声波进行粗略的近似估计。我们的读数之间有间距,所以我们必然会丢失数据,对吧?


但是,由于采样定理(Nyquist theorem),我们知道我们可以利用数学,从间隔的采样中完美重建原始声波——只要我们的采样频率比期望得到的最高频率快至少两倍就行。


我提这一点,是因为几乎每个人都会犯这个错误,并误认为使用更高的采样率总是会获得更好的音频质量。其实并不是。


预处理我们的采样声音数据


我们现在有一个数列,其中每个数字代表 1/16000 秒的声波振幅。


我们可以把这些数字输入到神经网络中,但是试图直接分析这些采样来进行语音识别仍然很困难。相反,我们可以通过对音频数据进行一些预处理来使问题变得更容易。


让我们开始吧,首先将我们的采样音频分成每份 20 毫秒长的音频块。这是我们第一个 20 毫秒的音频(即我们的前 320 个采样):


将这些数字绘制为简单的折线图,我们就得到了这 20 毫秒内原始声波的大致形状:


虽然这段录音只有 1/50 秒的长度,但即使是这样短暂的录音,也是由不同频率的声音复杂地组合在一起的。其中有一些低音,一些中音,甚至有几处高音。但总的来说,就是这些不同频率的声音混合在一起,才组成了人类的语音。


为了使这个数据更容易被神经网络处理,我们将把这个复杂的声波分解成一个个组成部分。我们将分离低音部分,再分离下一个最低音的部分,以此类推。然后将(从低到高)每个频段(frequency band)中的能量相加,我们就为各个类别的音频片段创建了一个指纹(fingerprint)。


想象你有一段某人在钢琴上演奏 C 大调和弦的录音。这个声音是由三个音符组合而成的:C、E 和 G。它们混合在一起组成了一个复杂的声音。我们想把这个复杂的声音分解成单独的音符,以此来分辨 C、E 和 G。这和语音识别是一样的道理。


我们需要傅里叶变换(Fourier Transform)来做到这一点。它将复杂的声波分解为简单的声波。一旦我们有了这些单独的声波,我们就将每一份频段所包含的能量加在一起。


最终得到的结果便是从低音(即低音音符)到高音,每个频率范围的重要程度。以每 50hz 为一个频段的话,我们这 20 毫秒的音频所含有的能量从低频到高频就可以表示为下面的列表:



但是把它们画成图表时会更容易理解:

你可以看到,在我们的 20 毫秒声音片段中有很多低频能量,然而在更高的频率中并没有太多的能量。这是典型「男性」的声音。


如果我们对每个20毫秒的音频块都重复这个过程,我们最后会得到一个频谱图(从左到右每一列都是一个29毫秒的音频块)

频谱图很酷,因为你可以在音频数据中实实在在地看到音符和其他音高模式。对于神经网络来说,相比于原始声波,从这种数据中寻找规律要容易得多。因此,这就是我们将要实际输入到神经网络中去的数据表示方式。


从短音频中识别字符


现在我们已经让音频转变为一个易于处理的格式了,现在我们将要把它输入深度神经网络。神经网络的输入将会是 20 毫秒的音频块。对于每个小的音频切片(audio slice),神经网络都将尝试找出当前正在说的声音所对应的字母。

我们将使用一个循环神经网络——即一个拥有记忆,能影响未来预测的神经网络。这是因为它预测的每个字母都应该能够影响它对下一个字母的预测。例如,如果我们到目前为止已经说了「HEL」,那么很有可能我们接下来会说「LO」来完成「Hello」。我们不太可能会说「XYZ」之类根本读不出来的东西。因此,具有先前预测的记忆有助于神经网络对未来进行更准确的预测。


当通过神经网络跑完我们的整个音频剪辑(一次一块)之后,我们将最终得到一份映射(mapping),其中标明了每个音频块和其最有可能对应的字母。这是我说那句「Hello」所对应的映射的大致图案:


我们的神经网络正在预测我说的那个词很有可能是「HHHEE_LL_LLLOOO」。但它同时认为我说的也可能是「HHHUU_LL_LLLOOO」,或者甚至是「AAAUU_LL_LLLOOO」。


我们可以遵循一些步骤来整理这个输出。首先,我们将用单个字符替换任何重复的字符:


· HHHEE_LL_LLLOOO 变为 HE_L_LO


· HHHUU_LL_LLLOOO 变为 HU_L_LO


· AAAUU_LL_LLLOOO 变为 AU_L_LO


然后,我们将删除所有空白:


· HE_L_LO 变为 HELLO


· HU_L_LO 变为 HULLO


· AU_L_LO 变为 AULLO


这让我们得到三种可能的转写——「Hello」、「Hullo」和「Aullo」。如果你大声说出这些词,所有这些声音都类似于「Hello」。因为神经网络每次只预测一个字符,所以它会得出一些纯粹表示发音的转写。例如,如果你说「He would not go」,它可能会给出一个「He wud net go」的转写。


解决问题的诀窍是将这些基于发音的预测与基于书面文本(书籍、新闻文章等)大数据库的可能性得分相结合。扔掉最不可能的结果,留下最实际的结果。


在我们可能的转写「Hello」、「Hullo」和「Aullo」中,显然「Hello」将更频繁地出现在文本数据库中(更不用说在我们原始的基于音频的训练数据中了),因此它可能就是正解。所以我们会选择「Hello」作为我们的最终结果,而不是其他的转写。搞定!


稍等一下!


你可能会想「但是如果有人说Hullo」怎么办?这个词的确存在。也许「Hello」是错误的转写!



当然可能有人实际上说的是「Hullo」而不是「Hello」。但是这样的语音识别系统(基于美国英语训练)基本上不会产生「Hullo」这样的转写结果。用户说「Hullo」,它总是会认为你在说「Hello」,无论你发「U」的声音有多重。


试试看!如果你的手机被设置为美式英语,尝试让你的手机助手识别单词「Hullo」。这不行!它掀桌子不干了,它总是会理解为「Hello」。


不识别「Hullo」是一个合理的行为,但有时你会碰到令人讨厌的情况:你的手机就是不能理解你说的有效的语句。这就是为什么这些语音识别模型总是处于再训练状态的原因,它们需要更多的数据来修复这些少数情况。


我能建立自己的语音识别系统吗?


机器学习最酷炫的事情之一就是它有时看起来十分简单。你得到一堆数据,把它输入到机器学习算法当中去,然后就能神奇地得到一个运行在你游戏本显卡上的世界级 AI 系统...对吧?


这在某些情况下是真实的,但对于语音识别并不成立。语音识别是一个困难的问题。你得克服几乎无穷无尽的挑战:劣质麦克风、背景噪音、混响和回声、口音差异等等。你的训练数据需要囊括这所有的一切,才能确保神经网络可以应对它们。


这里有另外一个例子:你知不知道,当你在一个嘈杂的房间里说话时,你会不自觉地提高你的音调,来盖过噪音。人类在什么情况下都可以理解你,但神经网络需要训练才能处理这种特殊情况。所以你需要人们在噪音中大声讲话的训练数据!


要构建一个能在 Siri、Google Now! 或 Alexa 等平台上运行的语音识别系统,你将需要大量的训练数据 。如果你不雇上数百人为你录制的话,它需要的训练数据比你自己能够获得的数据要多得多。由于用户对低质量语音识别系统的容忍度很低,因此你不能吝啬。没有人想要一个只有八成时间有效的语音识别系统。


对于像谷歌或亚马逊这样的公司,在现实生活中记录的成千上万小时的人声语音就是黄金。这就是将他们世界级语音识别系统与你自己的系统拉开差距的地方。让你免费使用 Google Now!或 Siri,或是只要 50 美元购买 Alexa 而没有订阅费的意义就是:让你尽可能多地使用它们。你对这些系统所说的每一句话都会被永远记录下来,并用作未来版本语音识别算法的训练数据。这才是他们的真实目的!


不相信我?如果你有一部安装了 Google Now! 的 Android 手机,请点击这里收听你自己对它说过的每一句话:


你可以通过 Alexa 在 Amazon 上找到相同的东西。然而,不幸的是,苹果并不让你访问你的 Siri 语音数据。


因此,如果你正在寻找一个创业的想法,我不建议你尝试建立自己的语音识别系统来与 Google 竞争。相反,你应该想个办法,让人们把自己讲了几个小时的录音交给你。这种数据可以是你的产品。

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