吴恩达教授曾经预言过,当语音识别的准确度从95%提升到99%的时候,它将成为与电脑交互的首要方式。
下面就让我们来学习与深度学习进行语音室识别吧!
机器学习并不总是一个黑盒
如果你想知道神经机器翻译是如何工作的,你应该猜到了我们可以简单地将一些声音送入神经网络,然后训练它使之生成文本:
这是使用深度学习进行语音识别的最高追求,但是很遗憾我们现在还没有完全做到这一点(至少在笔者写下这一篇文章的时候还没有–我敢打赌,再过几年我们可以做到)
一个大问题是语速不同。一个人可能会很快的说出”Hello!”,而另一个人可能非常缓慢的说”heeeelllllllllllllooooo’!’,产生了一个拥有更多数据也更长的声音文件。这两个文件都应该被识别为同一个文本–“Hello!”。而事实证明,把各种长度的音频文件自动对齐到一个固定长度的文本是很难的一件事情。
为了解决这个问题,我们必须使用一些特殊的技巧,并进行一些深度神经网络以外的特殊处理。让我们看看它是如何工作的吧!
将声音转换为比特(Bit)显然,语音识别的第一步是–我们需要将声波输入到电脑中。
我们应该怎么将声波转换为数字呢?让我们使用我说的「hello」这个声音片段举个例子:
声波是一维的,它在每个时刻都有一个基于其高度的值。让我们把声波的一小部分放大看看:
为了将这个声波转换成数字,我们只记录声波在等距点的高度:
这被称为采样(sampling)。我们每秒读取数千次,并把声波在该时间点的高度用一个数字记录下来。这基本上就是一个未压缩的 .wav 音频文件。
“CD 音质”的音频是以 44.1khz(每秒 44100 个读数)进行采样的。但对于语音识别,16khz(每秒 16000 个采样)的采样率就足以覆盖人类语音的频率范围了。
让我们把“Hello”的声波每秒采样 16000 次。这是前 100 个采样:
每个数字代表声波在一秒钟的16000分之一处的振幅。
数字采样小助手因为声波采样只是间歇性的读取,你可能认为它只是对原始声波进行粗略的近似估计。我们的读数之间有间距,所以我们必然会丢失数据,对吧?