当前位置: 首页 > 科技观察

机器学习原来这么有趣:Howtousedeeplearningforspeechrecognition

时间:2023-03-18 16:15:15 科技观察

语音识别正在“入侵”我们的生活。我们的手机、游戏机和智能手表都内置了语音识别功能。他甚至让我们的房子自动化。只需50美元,您就可以获得一个AmazonEchoDot,这是一个神奇的盒子,可以让您点餐、收听天气,甚至购买垃圾袋,只需大声说:Aleax,给我订了一份披萨!EchoDot在2015年圣诞假期推出时非常受欢迎,以至于立即在亚马逊上销售一空。但其实语音识别已经存在很多年了,为什么现在才成为主流呢?因为深度识别终于将非受控环境下的语音识别准确率提升到了可以投入实际使用的程度。吴恩达教授曾预测,当语音识别的准确率从95%提高到99%时,它将成为与计算机交互的主要方式。因此,让我们通过深度学习学习语音室识别吧!机器学习并不总是黑盒子如果你想知道神经机器翻译是如何工作的,你应该猜到我们可以简单地将一些声音输入神经网络,然后训练它生成文本:这是语音识别的最高追求深度学习,但不幸的是我们还没有完全做到这一点(至少在我写这篇文章的时候还没有——我打赌我们可以在几年内做到)一个大问题是不同的语速。一个人可能会说“你好!”很快,而另一个人可能会说“heeeelllllllllllllooooo”!非常慢,导致声音文件更长,数据更多。这两个文件应该被识别为相同的文本-“Hello!”。事实证明,很难将各种长度的音频文件自动对齐到固定长度的文本。为了解决这个问题,我们必须使用一些特殊的技巧,并在深度神经网络之外做一些特殊的处理。让我们看看它是如何工作的!将声音转换为比特(Bit)显然,语音识别的第一步是——我们需要向电脑输入声波,我们应该如何将声波转换为数字呢?我们以我说的“你好”声音片段为例:声波是一维的,它在每一时刻都有一个值基于它的高度。让我们放大声波的一小部分:为了将这个声波转换为数字,我们只记录等距点的声波高度:这称为采样。我们每秒读取数千个读数,并及时将声波的高度记录为一个数字。这基本上是一个未压缩的.wav音频文件。“CD质量”音频以44.1khz(每秒44100次读数)采样。但对于语音识别,16khz(每秒16000个样本)的采样率足以覆盖人类语音的频率范围。让我们以每秒16000次的频率对“Hello”声波进行采样。这是前100个样本:每个数字代表声波在1/16000秒时的振幅。数字采样助手由于声波样本只是间歇性地读取,您可能认为它只是原始声波的粗略近似值。我们的读数之间存在差距,所以我们一定会丢失数据,对吗?但是,多亏了采样定理(Nyquisttheorem),我们知道我们可以使用数学从间隔采样中完美地重建原始声波——只要我们的采样频率至少应该是最高频率的两倍所需的频率。我提到这一点是因为几乎每个人都犯了这个错误,并认为使用更高的采样率总是会产生更好的音频质量。其实并不是。预处理我们的采样声音数据我们现在有一个数组,其中每个数字代表声波振幅的1/16000秒。我们可以将这些数字输入神经网络,但试图直接分析这些样本以进行语音识别仍然很困难。相反,我们可以通过对音频数据进行一些预处理来简化问题。让我们开始将我们的采样音频分成每20毫秒长的音频块。这是我们的前20毫秒音频(即我们的前320个样本):将这些数字绘制为简单的线图,我们得到了这20毫秒内原始声波的近似形状:尽管这段录音的长度只有1/50秒,但即使是这样简短的录音也是由不同频率的声音错综复杂地组成的。有一些低音,一些中音,甚至还有一些高音。但总的来说,正是这些不同频率的声音混合在一起,才构成了人类的语音。为了让神经网络更容易处理这些数据,我们将把这个复杂的声波分解成它的组成部分。我们将分离低音部分,然后是下一个最低部分,依此类推。然后通过将每个频段(从低到高)的能量相加,我们为每一类音频剪辑创建一个指纹。想象一下,您有一段某人在钢琴上弹奏C大调和弦的录音。这个声音由三个音符组成:C、E、G。它们混合在一起形成一个复杂的声音。我们想把这个复杂的声音分解成一个个音符,这样我们就可以区分C、E、G。这和语音识别是一样的。我们需要傅里叶变换来做到这一点。它将复杂的声波分解成更简单的声波。一旦我们有了这些单独的声波,我们就会将每个频带中包含的能量加在一起。最终结果是每个频率范围从低音(即低音)到高音的重要性。以每50hz为一个频段,我们的20毫秒音频从低频到高频所包含的能量可以表示为如下列表:但是画成图形会更容易理解:你可以看到在我们的20毫秒的声音片段,有很多低频能量,但高频能量不多。这是典型的“大男子主义”声音。如果我们对每20毫秒的音频块重复此过程,我们最终会得到一个频谱图(从左到右的每一列都是29毫秒的音频块)频谱图很酷,因为您可以从字面上查看音符和其他音高模式。与在原始声波中相比,神经网络在这些数据中找到模式要容易得多。所以这是我们要实际输入神经网络的数据的表示。从短音频中识别字符现在我们有了易于处理格式的音频,我们将把它输入深度神经网络。神经网络的输入将是20毫秒的音频块。对于每个小的音频片段,神经网络将尝试找出哪个字母对应于它当前所说的声音。我们将使用递归神经网络——一种具有记忆并可以影响未来预测的神经网络。这是因为它预测的每个字母都应该能够影响它对下一个字母的预测。例如,如果到目前为止我们已经说了“HEL”,那么接下来我们很有可能会说“LO”来完成“Hello”。我们不太可能说出像“XYZ”这样根本无法发音的东西。因此,记住以前的预测有助于神经网络对未来做出更准确的预测。在通过神经网络(一次一个块)运行我们的整个音频剪辑后,我们将最终得到一个映射,该映射标记每个音频块及其最可能对应的字母。这是我说“你好”的一般映射模式:我们的神经网络预测我说的词很可能是“HHHEE_LL_LLLOOO”。但它也认为我可以说“HHHUU_LL_LLLOOO”,甚至是“AAAUU_LL_LLLOOO”。我们可以按照几个步骤来整理此输出。首先,我们将用单个字符替换所有重复字符:HHHEE_LL_LLLOOO变为HE_L_LOHHHUU_LL_LLLOOO变为HU_L_LOAAAUU_LL_LLLOOO变为AU_L_LO然后,我们删除所有空格:HE_L_LO变为HELLOHU_L_LO变为HULLOAU_L_LO变为AULLO这为我们提供了三种可能的音译-“Hello”,“你好”和“Aullo”。如果您大声说出这些词,所有这些听起来都类似于“你好”。因为神经网络一次只预测一个字符,所以它会得出一些代表纯发音的转录。例如,如果您说“Hewouldnotgo”,它可能会给出“Hewudnetgo”的转录。解决这个问题的诀窍是将这些基于发音的预测与基于大型书面文本(书籍、新闻文章等)数据库的似然分数相结合。扔掉最不可能的结果,保留最实际的结果。在我们可能的转录“Hello”、“Hullo”和“Aullo”中,很明显“Hello”会更频繁地出现在文本数据库中(更不用说在我们原始的基于音频的训练数据中),所以它可能是正确答案。因此,我们将选择“Hello”作为最终结果,而不是其他音译。完毕!等一下!你可能会想“但是如果有人说你好呢”?这个词确实存在。也许“你好”是一个错误的转录!当然,有人实际上可以说“你好”而不是“你好”。但是这样的语音识别系统(以美式英语训练)很难产生像“Hullo”这样的音译。说“你好”,无论你发出“U”的声音有多大,它总会认为你在说“你好”。试试看!如果您的手机设置为美式英语,请尝试让您的手机助手识别“Hullo”这个词。这行不通!它翻转桌子并退出,它总是被解释为“你好”。不识别“你好”是一种合理的行为,但有时您会遇到烦人的情况:您的手机无法理解您所说的有效句子。这就是为什么这些语音识别模型总是处于重新训练的状态,他们需要更多的数据来修复这少数情况。我可以构建自己的语音识别系统吗?机器学习最酷的事情之一就是它有时看起来很简单。你得到一堆数据,将其输入机器学习算法,然后神奇地得到一个在你的游戏笔记本电脑的显卡上运行的世界级人工智能系统……对吧?这在某些情况下是正确的,但对于语音识别而言并非如此。语音识别是一个难题。几乎有无穷无尽的挑战需要克服:糟糕的麦克风、背景噪音、混响和回声、口音差异等等。您的训练数据需要包括所有这些,以确保神经网络能够处理它们。这是另一个例子:您知道吗,当您在嘈杂的房间里讲话时,您会不自觉地提高音调以盖过噪音。人类可以在任何情况下理解你,但需要训练神经网络来处理这种特殊情况。所以你需要人们在噪音中大声说话的训练数据!要构建可在Siri、GoogleNow!或Alexa等平台上运行的语音识别系统,您将需要大量训练数据。如果您不雇用数百人为您记录,它需要的训练数据远远超过您自己所能获得的。由于用户对低质量语音识别系统的容忍度较低,因此您不能吝啬它。没有人想要一个只能在80%的时间内工作的语音识别系统。对于像谷歌或亚马逊这样的公司来说,在现实生活中录制数千小时的人类语音是黄金。这就是他们的世界级语音识别系统与您自己的系统的区别所在。让您使用GoogleNow的意义!或免费的Siri,或50美元的Alexa,没有订阅费,是为了让你尽可能多地使用它们。你对这些系统所说的一切都会被永久记录下来,并用作未来版本语音识别算法的训练数据。这才是他们真正想要的!不相信我?如果您的Android手机装有GoogleNow!安装后,单击此处聆听您自己对它说过的每一句话:您可以通过Alexa在亚马逊上找到相同的东西。然而不幸的是,Apple不允许您访问您的Siri语音数据。因此,如果您正在寻找创业点子,我不建议您尝试构建自己的语音识别系统来与Google竞争。相反,想办法让人们把他们几个小时的谈话录音交给你。此数据可以是您的产品。