【新智元导读】吴恩达曾经预测当语音识别的准确率从95%上升到99%时,语音识别将会成为人类与计算机交互的新方式。归功于深度学习,这4%的准确率的提升使得语音识别从难以实际应用的技术变成有无限的应用潜力的技术。本文深入浅出介绍了怎样用深度学习做语音识别。

语音识别正在进入我们日常生活的方方面面。语音识别技术内置在我们的手机、游戏机和智能手表中,它甚至能将我们的整个家庭智能化。只需50美元就能买到一个Amazon Echo Dot,它像一个魔术盒子,可以帮你订购比萨,向你播报天气预报等等,你只需大声对它说:

“Alexa,order a large pizza!”

语音识别技术已经发展了几十年,近年突然变得炙手可热,这归功于深度学习终于使得语音识别的准确率提升到足矣让这项技术在实验测试以外的实际场景中应用。

吴恩达曾经预测当语音识别的准确率从95%上升到99%时,语音识别将会成为人类与计算机交互的新方式。这4%的准确率的提升使得语音识别从难以使用到潜力无限。多亏深度学习的发展,我们终于到达语音识别的顶点。

让我们一起来了解怎样用深度学习做语音识别。

机器学习并不总是黑盒

如果你对神经机器翻译的工作机制已经有所了解,你可能会想到,我们可以简单地将声音作为输入喂进神经网络,然后训练网络产生文本:

上图是使用深度学习做语音识别的最佳机制,但我们目前还没有达到这一步。

一个很大的问题是语速不同。某些人说“hello!”会很快速,有些人会拉得很长地说“heeeelllllllllllllooooo!”,这会产生更长的声音文件和更多的数据。这两个声音文件应该被识别为完全相同的文本——“hello!”这里面的难点在于把不同长度的音频文件自动对齐为一个同样长度的文本结果。

要解决这个问题,我们需要使用一些特殊的技巧,在深度神经网络之上增加一些额外的处理。

将声音转换为位元

语音识别的第一步显然是——将声音馈送到计算机。

在图像识别技术中,我们可以将图像视为数字的阵列,直接将数字喂入神经网络进行图像识别,如图:

图像被视为数字的排列,这些数字是对每个像素的强度进行解码的结果。

但声音是通过波(wave)传输的。怎样将声波转换为数字呢?让我们使用“Hello”这个声音片段作为例子:

“Hello”的声波

声波是一维的。每个时刻的声波只有一个单一的值,这个值的大小基于波的高度。让我们放大上述声波的一小片段看看:

为了将这段声波转换成数字,我们需要记录等间隔点的波的高度:

对一段声波采样

这个过程叫做采样(sampling)。我们每秒读数千次,并记录下代表该时间点的声波高度的数字。这基本上是一个未压缩的.wav音频文件。“CD质量”的音频以44.1khz(每秒读取44100次)进行采样,但对于语音识别来说,16khz(每秒16000次采样)的采样率已经足以覆盖人类语音的频率范围。

我们对“Hello”这个声波进行了16000次/秒的采样,这里是前100个样本:

每个数字代表间隔1/16000秒的声波的振幅

数字采样重建原始声波

你可能认为采样只是原始声波的粗略近似,因为它只是偶然的读数。我们的读数之间有间隔,所以我们必定会丢失一些数据,是这样吗?

(左)原始模拟信号;(右)采样的数字信号

但是,由于Nyquist定理,我们其实可以使用数字信号从有间隔的样本完全重建原始的声波——只要我们采样的频率至少比我们想要记录的最高频率高两倍。

我提到这点是因为几乎每个人都会在这一点上弄错,会认为使用更高的采样率能得到更好的音频质量。其实不是的。

预处理采样的音频数据

我们现在已经有一组数字阵列,每个数字代表声波间隔1/16000秒的振幅。

我们可以把这些数字馈送入神经网络,但是试图直接处理这些样本来识别语音模式是很困难的。相反,通过对音频数据进行一些预处理能让问题更容易。

让我们先把采样的音频以20毫秒长的块来分组。以下是第一个20毫秒的音频(即前320个样本):

将这些数字绘成图,得出20毫秒时间段的原始声波的粗略近似:

这样一个记录的长度只有1/50秒,但这样一个短录音已经包含复杂的不同频率的声音,有低音,有中音,甚至还有一些高音。但总的来说,这些不同的频率混合在一起,组合成复杂的人类语音。

为了让这些数据更容易为神经网络处理,我们把这些复杂的声波分解为一个个组成部分。我们将它分解为低音部分,更低音部分,等等,然后将每个频带(从低到高)的能量相加,为该音频片段创建一个有排序的识别码。

我们使用傅立叶变换运算来实现这点,它能将复杂的声波分解为简单的声波。当我们有了这些单独的声波,可以将每一个部分所包含的能量加在一起。最终得到的结果是从低音到高音的每个频率范围的重要程度得分。下图的每个数字表示这段20毫秒的音频中每个50Hz的频带的能量:

把这些数字绘制成图表:

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

如果我们对每个20毫秒的音频片段重复这个过程,最终能得到一个频谱图(每一列从左到右是一个20ms的片段):

“Hello”音频的完整频谱图

这个谱图很酷,因为你能够实际看到音频数据中的音符以及其他音高模式。神经网络在这种形式的数据中能够比从原始声波数据更容易找到模式。因此,这种数据呈现是我们实际馈送给神经网络的输入。

从短音频中识别字符

现在我们将格式易于处理的音频数据输入到深度神经网络中,这些输入是20毫秒的音频片段。对于每个片段,神经网络将试图找出对应于当前声音的字母。

我们使用一个循环神经网络来预测每个字母对下一个字母的影响可能性。例如,如果我们已经识别到“HEL”,那么很可能接下来的字母是“LO”,以完成“Hello”,而不太可能是“XYZ”之类的字母。因此,具有先前预测的记忆有助于神经网络进行更准确的预测。

在我们通过神经网络(每次一个片段)处理完整个音频后,我们将最终得到每个音频片段和最可能的字母的映射。下图是“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”更可能是正确的。所以我们选择将“Hello”作为最后的转录结果。

你可能会想“但是,如果有人真的说了‘hullo’呢?这是一个有效的词,但机器转录成‘hello’是错误的!”

当然可能有人说“hullo”,而不是“hello”。语音识别系统(用美式英语数据训练)基本上永远不会产生“hullo”的转录。只是这是可能性很低的情况,不管你说“hullo”时多么强调‘U’的发音,系统总是会认为你在说“hello”。

这就是为什么这些语音识别模型总是需要用更多的数据进行大量的训练,以更好的处理这些极端情况。

原文:https://medium.com/@ageitgey/machine-learning-is-fun-part-6-how-to-do-speech-recognition-with-deep-learning-28293c162f7a#.p0lln4o9d

【干货】怎样用深度学习做语音识别相关推荐

  1. (转) 机器学习很有趣Part6:怎样使用深度学习进行语音识别

    本文转自:http://www.jiqizhixin.com/article/2321 机器学习很有趣Part6:怎样使用深度学习进行语音识别 2017-02-19 13:20:47    机器学习  ...

  2. 如何用深度学习做自然语言处理?这里有份最佳实践清单

    如何用深度学习做自然语言处理?这里有份最佳实践清单 By 机器之心2017年7月26日 14:16 对于如何使用深度学习进行自然语言处理,本文作者 Sebastian Ruder 给出了一份详细的最佳 ...

  3. 【github干货】主流深度学习开源框架从入门到熟练

    文章首发于微信公众号<有三AI> [github干货]主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人 ...

  4. 深度学习在语音识别中的声学模型以及语言模型的应用

    过去 3 年,深度学习在各个领域取得较大突破,比如计算机视觉领域的物体识别.场景分类,语音分析等,并且其技术推广和应用的速度超过人们预期,比如 Google 的广告系统已经开始使用深度学习盈利,Twi ...

  5. 如何用深度学习进行语音识别

    作者:九五要当学霸 链接:https://zhuanlan.zhihu.com/p/24703268 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 原文:Adam G ...

  6. 专访微软研究院俞栋:基于深度学习的语音识别及CNTK的演进

    作为人工智能领域的一个重要方向,语音识别近年来在深度学习(Deep Learning)的推动下取得了重大的突破,为人机语音交互应用的开发奠定了技术基础.语音识别技术演进及实现方法.效果,既是语音识别从 ...

  7. 干货好文 | 深度学习是如何在美团点评推荐业务中实践的?

    本文作者:陈文石,2012年毕业于东南大学,美团点评算法专家,目前负责点评平台及综合 BG 推荐平台业务.在加入美团点评之前,曾在百度做过一些个性化推荐相关工作.对人工智能在搜索.推荐等业务应用上有较 ...

  8. 解析深度学习:语音识别实践电子书

    作者:俞栋 出版社:电子工业出版社 品牌:博文视点 出版时间:2020-10-01 解析深度学习:语音识别实践电子书 ISBN:9787121287961

  9. 深度学习进行语音识别的方法 如何建立自己的语音识别系统

    语音识别正在「入侵」我们的生活.我们的手机.游戏主机和智能手表都内置了语音识别.他甚至在自动化我们的房子.只需50美元,你就可以买到一个Amazon Echo Dot,这是一个可以让你订外卖.收听天气 ...

最新文章

  1. Myeclipse下Maven的配置
  2. Apollo进阶课程㊶丨Apollo实战——本机演示实战
  3. js获取数组前n项的和
  4. MQ中将消息发送至远程队列的配置
  5. Windows mobile 下读取手机SIM卡信息
  6. UGUI实现摇杆(模仿太极熊猫)
  7. (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求
  8. Windows - 安装/卸载服务 - 学习/实践
  9. c语言输出整型量格式符,C语言输出格式(详细)
  10. Android 获取时间戳
  11. Python爬取淘宝销量数据!这年头数据就是钱啊!
  12. 物联网平台开发接口http/mqtt,支持部标808/1078协议对接
  13. 80坐标系(3度带)转经纬度
  14. LSB 算法matlab改进版,将二值图嵌入多张灰度图像中
  15. causal snps | causal variants | tensorflow | 神经网络实战 | Data Simulation
  16. 网友自制的谷歌输入法皮肤及制作方法
  17. v4l2loopback -- 源码分析
  18. 【黄啊码】fastadmin接入微信支付和支付宝支付
  19. 搜索算法工程师、专家、leader
  20. 中国电子学会2022年06月份青少年软件编程Python等级考试试卷一级真题(含答案)

热门文章

  1. java以正确的方式停止线程
  2. 7. Flask 大型程序的结构
  3. Python学习之路3 - 字符串操作字典
  4. HandlerInterceptor与MethodInterceptor
  5. ip电话系统设计和实现
  6. 【bzoj4653】[Noi2016]区间 双指针法+线段树
  7. Oracle物理的体系结构
  8. (转)Android权限列表permission说明 (一)
  9. 51Nod-1062 序列中最大的数【序列计算+打表】
  10. CCF201604-3 路径解析(解法二)(100分)(废除!!!)