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

 

本文转自:http://www.jiqizhixin.com/article/2321

 

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

2017-02-19 13:20:47    机器学习   

0 0

还记得machine learning is fun吗?本文是该系列文章的第六部分,博主通俗细致地讲解了神经网络语音识别的整个过程, 是篇非常不错的入门级文章。

 

语音识别正闯入我们的生活。它内置于我们的手机、游戏机和智能手表。它甚至正在让我们的家庭变得自动化。只需要 50 美元,你就可以买到亚马逊的 Echo Dot——一个能允许你订购比萨饼,获得天气报告,甚至购买垃圾袋的魔法盒——只要你大声说:「Alexa,订购一个大披萨!」

 

 

Alexa, order a large pizza!

 

Echo Dot 在这个假期很受欢迎,亚马逊似乎没有 Echo Dot 的库存了。

 

语音识别已经存在数十年了,但是为什么现在才刚刚开始成为主流呢?原因是深度学习让语音识别足够准确,能够让语音识别在需要精心控制的环境之外中使用。

 

吴恩达早就预测,当语音识别的准确率从 95%达到 99%时,语音识别将成为人与计算机交互的主要方式。4%的准确性差距就相当于「难以容忍的不可靠」到「令人难以置信的有用性」之间的差异。由于有深度学习,我们正在走向顶峰。

 

让我们学习怎样利用深度学习进行语音识别!

 

机器学习并不总是黑箱

 

如果你知道神经网络机器翻译怎样工作,你可能会猜到:我们可以简单地将声音录音输入神经网络,然后训练神经网络来生成文本:

 

 

 

这是用深度学习进行语音识别的核心,但我们还没有完全做到(至少在我写这篇文章的时候没做到——我打赌,在未来的几年我们可以做到)。

 

最大的问题是语音会随着速度变化。一个人可能很快地说出「Hello!」,而另外一个人可能会很缓慢说「heeeelllllllllllllooooo!」。这就产生了一个更长的声音文件和更多的数据。这两个声音文件本应该被识别为完全相同的文本「hello!」而事实证明,把各种长度的音频文件自动对齐到一个固定长度的文本是很难的一件事情。

 

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

 

将声音转换成「字节」

 

语音识别的第一步是很显而易见的——我们需要将声波输入到计算机。

 

在第 3 章中(https://medium.com/@ageitgey/machine-learning-is-fun-part-3-deep-learning-and-convolutional-neural-networks-f40359318721#.tvzicp8bh),我们学习了如何把图像处理成数字序列,以便我们能直接将其输入进神经网络进行图像识别:

 

 

图像仅是图片中每个像素值的数字编码数组

 

声音以波的形式传播。我们怎样将声波转换成数字呢?让我们使用我说的「hello」这个声音片段作为例子:

 

音频「Hello」的波形

 

声波是一维的。在每个时刻,它有单一的高度值对应。让我们放大声波的一个小部分,看看:

 

 

 

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

 

 

 

声波采样

 

这被称为「采样」。我们采取每秒读取数千次的方式,并把声波在对应时刻的高度值记录下来。这基本上是一个未被压缩的.wav 音频文件。

 

「CD 音质」以 44.1kHZ(每秒读取 44100 次)进行采样。但是对于语音识别,16kHz 的采样频率足以覆盖人类语言的频率范围。

 

让我们用 16kHz 的方式对「Hello」音频采样,这是前 100 个样本:

 

 

每个数字代表声波在第 1/16000 间隔处时刻的高度值。

 

数字采样快速入门助手

 

你可能会认为:采样只是对原始声波的粗略近似,因为它只是间歇性读取数据,我们的读数之间有差距,所以我们丢失了数据,对吗?

 

 

 

数字采样能否完美重现原始声波?如何处理那些间距?

 

借鉴奈奎斯特定理 (Nyquist theorem),我们可以利用数学从间隔的采样中完美地重建原始声波——只要以我们希望得到的最高频率的两倍来进行采样就可以实现。

 

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

 

采样声音数据的预处理

 

我们现在有一个数值数组,每个数值代表声波在间隔为 1 / 16,000 秒的时刻时的高度值(振幅)。

 

我们可以将这些数值输入神经网络。但是试图通过直接处理这些样本来识别语音模式是困难的。相反,我们可以通过对音频数据预处理来简化问题。

 

让我们将采样的音频以 20 毫秒时间段长进行分组。这是我们第一个 20 毫秒的样本音频,即我们的前 320 个样本。

 

 

 

将这些数值绘制为简单的线图,给出了对于 20 毫秒时间段的原始声波的粗略近似:

 

 

 

虽然这段录音只有 1/50 秒的时长,但即使这样短暂的时长也包含不同频率的声音。有低音、中音,甚至高音混在一起。但总的来说,这些不同频率的声音混合在一起构成了人类复杂的语音。

 

为了使这些数据更容易进行神经网络处理,我们将这复杂的声波分成不同部分。我们将一步步分离低音部分,下一个最低音部分,以此类推。然后通过将每个频带(从低到高)中的能量相加,我们就为各个类别(音调)的音频片段创建了一个指纹。

 

想象你有一段某人在钢琴上弹奏 C 大调的音频。这段音频是由三个音符组合而成的 - C,E 和 G – 他们混合在一起组成一个复杂的音频。我们想把这个复杂的音频分解成单独的音符:C,E 和 G。这和我们语音识别的想法一样。

 

我们可以使用数学中的傅里叶变换来完成。傅里叶变换将复杂的声波分解成简单的声波,一旦我们得到了这些简单声波,我们将每一个声波包含的能量加在一起。

 

最终结果是从低音(即低音音符)到高音,每个频率范围的重要程度。下面的每个数字表示在我们的 20 毫秒音频剪辑中每个 50Hz 频带中的能量:

 

 

表中的每个数值表示每个 50Hz 频带中的能量

 

当你把它以图表形式画出,你更容易看出:

 

 

 

你可以看出,我们的 20 毫秒的声音片段中有很多低频能量,高频能量较少。这是典型的「男性」的声音。

 

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

 

 

「hello」声音片段的完整频谱图

 

频谱图很棒,因为你可以从音频数据中看到音符和其他音高模式。相比于原始声波,神经网络可以更加容易地从这种数据中找到规律。因此,这(频谱图)就是我们将实际输入到神经网络的数据表征方式。

 

从短声音中识别字符

 

有了易于处理音频形式,我们将把它输入到深度神经网络。神经网络的输入是 20 毫秒的音频块,对于每个小的音频切片,神经网络都会试图找出与声音对应的字母。

 

 

 

我们将使用循环神经网络——即是具有能影响未来预测的记忆的神经网络。因为它预测的每个字母都将影响它对下一个字母的预测。例如,如果我们已经说出「HEL」,那么接下来我们很可能说出「LO」以说出「Hello」。我们不太可能会说像「XYZ」这种根本无法发音的词。因此,具有先前预测的记忆将有助于神经网络对未来进行更准确的预测。

 

当我们在神经网络上运行我们的整个音频剪辑(一次一块)后,我们最终将得到与每个音频块最可能对应的字符的一个映射。这是一个看起来像是我说」Hello」时的映射:

 

 

 

我们的神经网络可能预测到我说的是「HHHEE_LL_LLLOOO」,也可能是「HHHUU_LL_LLLOOO」或甚至「AAAUU_LL_LLLOOO」。

 

我们用几个步骤来整理输出结果。首先,我们会用单个字符替换重复的的字符:

 

  • HHHEE_LL_LLLOOO becomes HE_L_LO

     

  • HHHUU_LL_LLLOOO becomes HU_L_LO

     

  • AAAUU_LL_LLLOOO becomes 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」那又怎么样?「Hullo」是一个有效的词。也许「Hello」是错误的转录!

 

 

 

当然实际上可能有人说的是「Hullo」而不是「Hello」。但是这样的语音识别系统(基于美式英语训练)基本上不会将「Hullo」作为转录。相比」Hello「,用户不太可能说「Hullo」,即是你在说」Hullo「ullo,它也总是会认为你在说「Hello」,无论你发「U」的声音有多重。

 

试试看!如果你的手机设置为美式英语,尝试让你的手机的数字助理识别「Hullo」。你不能达到目标!它会拒绝!它总是会理解为「Hello」。

 

不识别「Hullo」是合理的,但有时你会发现令人讨厌的情况:你的手机就是不能理解你说的语句。这就是为什么这些语音识别模型总需要更多的数据训练来处理这些少数情况。

 

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

 

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

 

有些情况下的确是这样,但是语音识别却并不如此简单。语音识别是一个难题,你必须克服无限的挑战:质量差的麦克风、背景噪声、混响和回声、口音变化等等。这些问题都需要呈现在你的训练数据中,以确保神经网络可以处理它们。

 

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

 

要构建一个达到 Siri、Google Now!或 Alexa 等水平的语音识别系统,你需要得到大量的训练数据,如果没有雇佣成百上千的人为你记录数据,你很难做到。用户对低质量语音识别系统的容忍度很低,因此你不能吝啬语音数据。没有人想要一个只有 80% 的时间有效的语音识别系统。

 

像谷歌或亚马逊这样的公司,现实生活中记录的成千上万小时的口语音频,对他们来说就是「黄金」。这就是将他们世界级语音识别系统与你自己的系统拉开差距的法宝。在手机上免费使用 Google Now! 和 Siri 或是不收取转录费且售价 50 美元的 Alexa,都是为了让你尽可能地使用它们。你说的每句话都将被这些系统所记录,然后这些数据将被用于训练未来的语音识别算法。

 

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

 

 

 

你可以通过 Alexa 在亚马逊上找到相同的东西。然而不幸的是,苹果手机并不允许你利用你的 Siri 语音数据。

 

所以,如果你正在寻找创业的想法,我不建议你建立自己的语音识别系统与 Google 竞争。相反,你应该找到一种能让人们将他们几个小时的录音给予你的方法。这种数据可以是你的产品。

 

学习更多

 

这个被用来处理不同长度音频的算法被称为 Connectionist Temporal Classification(CTC)。你可以阅读来自 2006 年的原始文章:

http://www.cs.toronto.edu/~graves/icml_2006.pdf。

 

百度的 Adam Coates 在湾区深度学习学校做了关于「用深度学习做语音识别」的精彩演讲。你可以在 YouTube 上观看这段视频(https://youtu.be/9dXiAecyJrY?t=13874,他的演讲从 3 分 51 秒开始)。强烈推荐。

 

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

声明:本文由机器之心编译出品,原文来自medium,作者Adam Geitgey,转载请查看要求,机器之心对于违规侵权者保有法律追诉权。

参与成员:


  • 机器之心

相关文章



模型学习全面概述:利用机器学习查找软件漏洞



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



5 个Python 库,照亮你的机器学习之路

评论

共有0条评论,点击展开

 

机器之心

 

758
文章

0
评论

0
收藏

 

特写:一个让连环杀手畏惧的算法

2017年02月17日

 

首届TensorFlow开发者大会:值得关注...

2017年02月18日

 

2012-2016 年被引用次数最多的深度学...

2017年02月17日

 

机器之心深度研学社每周干货:2017年第7周

2017年02月17日

 

直观理解GAN背后的原理:以人脸图像生成为例

2017年02月13日

 

 

关于我们    |   加入我们    |   寻求报道    |   商务合作    |   Newsletter

友情链接: Synced Global   36氪   爱可可-爱生活   虎嗅网   凤凰网   动脉网   

   

Copyright 2015 版权所有 jiqizhixin.com 京ICP备12027496机器之心(北京)科技有限公司

 

时间: 2024-08-02 00:17:18

(转) 机器学习很有趣Part6:怎样使用深度学习进行语音识别的相关文章

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

         过去 3 年,深度学习在各个领域取得较大突破,比如计算机视觉领域的物体识别.场景分类,语音分析等,并且其技术推广和应用的速度超过人们预期,比如 Google 的广告系统已经开始使用深度学习盈利,Twitter 也通过深度学习改善App 图片及视频内容服务体验.那具体何为深度学习呢?深度学习是怎么应用在上述的各个领域呢,下面结合自身在语音识别的若干年经验,谈谈深度学习在语音识别中的具体应用. 0. 背景          "深度学习"的概念在上个世纪便被提出,但Hint

确定不收藏?十张机器学习和深度学习工程师必备速查表!

本文讲的是十张机器学习和深度学习工程师必备速查表,对于初学者,机器学习和深度学习课程会很困难,此外各类深度学习库也十分难理解.我在Github上创建了一个本地库(https://github.com/kailashahirwar/cheatsheets-ai ),里面包含了从不同渠道收集的速查表,可以直接下载.尽管拿去用吧,同时欢迎补充完善! 1. Keras Karas是Theano和TensorFlow平台上一款强大易用的深度学习库.它为发展和训练深度学习模型提供高阶神经网络API接口. 来

入门级攻略:机器学习 VS. 深度学习

楔子:      机器学习和深度学习现在很火,你会发现突然间很多人都在谈论它们.如下图所示,机器学习和深度学习的趋势对比(来自Google trend,纵轴表示搜索热度):   本文将会以简单易懂的语言及示例为大家详细解释深度学习和机器学习的区别,并介绍相关用途. 机器学习和深度学习简介 机器学习      Tom Mitchell 关于机器学习的定义被广泛引用,如下所示: 对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而不断自我完善,那么我们称这个计算机程序在从经

机器学习实例:深度学习如何做语音识别!

文章讲的是 机器学习实例:深度学习如何做语音识别,语音识别正在「入侵」我们的生活.我们的手机.游戏主机和智能手表都内置了语音识别.他甚至在自动化我们的房子.只需50美元,你就可以买到一个Amazon Echo Dot,这是一个可以让你订外卖.收听天气预报.甚至是买垃圾袋的魔术盒,而这一切你只需要大声说出: Aleax,给我订一个pizza! Echo Dot 在2015年的圣诞假期一经推出就大受欢迎,在亚马逊上面立刻售罄. 但其实语音识别已经存在很多年了,那为什么现在才成为主流呢?因为深度识别终

机器人、威胁情报、对抗机器学习以及深度学习是如何影响安全领域的

转 安全数据科学正在蓬勃发展,有报告显示安全分析市场将在2023年达到八十亿美元的价值, 26%的增长率.这要感谢不屈不挠的网络攻击.如果你想要在2017年走在不断涌现的安全威胁的前面,那么投资在正确的领域是很重要的.在2016年3月,我写了一篇<2016年需要注意的4个趋势>.而2017年的文章由我与来自Netflix的Cody Rioux合作,带来他的平台化视角.我们的目标是帮助你为2017年的每一个季度形成一个计划(例如,4个季度有4个趋势).对于每一个趋势,我们都提供了一个短小精悍的理

深度学习 vs 机器学习 vs 模式识别

本文我们来关注下三个非常相关的概念(深度学习.机器学习和模式识别),以及他们与2015年最热门的科技主题(机器人和人工智能)的联系. 图1 人工智能并非将人放入一台计算机中(图片来源于 WorkFusion 的博客) 环绕四周,你会发现不缺乏一些初创的高科技公司招聘机器学习专家的岗位.而其中只有一小部分需要深度学习专家.我敢打赌,大多数初创公司都可以从最基本的数据分析中获益.那如何才能发现未来的数据科学家?你需要学习他们的思考方式. 三个与"学习"高度相关的流行词汇 模式识别(Patt

转载 : 神经网络浅讲:从神经元到深度学习

神经网络是一门重要的机器学习技术.它是目前最为火热的研究方向--深度学习的基础.学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术. 本文以一种简单的,循序的方式讲解神经网络.适合对神经网络了解不多的同学.本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文. 神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术.人脑中的神经网络是一个非常复杂的组织.成人的大脑中估计有1000亿个神经元之多. 图1 人脑神经网络   那

[译] 深度学习系列1:设置 AWS &amp; 图像识别

本文讲的是[译] 深度学习系列1:设置 AWS & 图像识别, 原文地址:Deep Learning #1: Setting up AWS & Image Recognition 原文作者:Rutger Ruizendaal 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:TobiasLee 校对者:Tina92 sqrthree 这篇文章是深度学习系列的第一部分.你可以在这里查看第二部分,以及这里查看第三部分. 本周的任务:对猫和狗的图像进行分

学习深度学习的四个步骤

原文地址: https://medium.com/@vzkuma/4-steps-for-learning-deep-learning-86f11fcee54 学习深度学习的四个步骤 一个手写资源列表帮助你变成一个深度学习专家 首先,如果你需要一些基本的信息或者令人信服的关于深度学习为什么有非常大的影响,可以检验下面由Andrew Ng制作的视频.               https://www.youtube.com/watch?v=n1ViNeWhC24   步骤1.学习深度学习的基本知