让音视频学习变得简单之音频深度学习(1):学习最先进的技术

颠覆式深度学习音频应用程序和体系结构的指南,以及为什么我们需要用简单语言来了解频谱图。

照片由 Jason RosewellUnsplash上发布

尽管计算机视觉和NLP应用程序得到了大多数关注,但音频数据的深度学习里很多突破性的用例正在改变我们在日常生活中使用语音聊天室的方式。 在接下来的几篇文章中,我将探索深度学习音频的迷人世界。

这是我计划在本系列中撰写的文章的摘要,我的目标是:不仅要理解某件事情的工作原理,而且要理解它工作的动因。

1.最先进的技术-本文(声音及其数字化方式。在日常生活中深度学习音频会遇到那些问题?什么是声谱图,为什么它们对使用语音聊天室至关重要?)

2.为什么梅尔频谱图的性能更好(在Python中处理音频数据。什么是梅尔频谱图以及如何生成它们)

3.功能的优化和增强(增强频谱图功能可通过超参数调整和数据增强实现最佳性能)

4.音频分类(端到端的示例和用于对普通声音进行分类的体系结构。适用于语音聊天室使用的各种场景。)

5.自动语音识别(语音转文本算法和体系结构,使用CTC Loss和解码来对齐序列)

在第一篇文章中,我会介绍该主题并概述深度学习音频应用程序的相关领域。 我们将了解什么是音频以及如何以数字形式展示音频,我会讨论音频应用程序对我们日常生活使用语音聊天室的影响,并探讨它们所使用的体系结构和模型技术。

什么是声音?

我们在学校都学过,气压的变化会产生声音信号。 我们可以测量压力变化的强度,并绘制随时间变化的测量值。

声音信号通常以规律性的间隔重复,以使每个波具有相同的形状。 高度表示声音的强度,我们称其为振幅。

|337xauto
显示振幅与时间的简单重复信号(马克-利伯曼教授授权)

信号完成一个完整波所花费的时间叫周期,信号在一秒钟内产生的波数称为频率。 频率是周期的倒数,频率单位是赫兹。

我们遇到的大多数声音都可能不遵循这种简单而有规律的周期性模式。 但是可以将不同频率的信号加在一起,以创建具有更复杂重复模式的复合信号。 我们听到的所有声音(包括我们自己的声音)都包含此类波形。 例如,以下可能是乐器的声音。

|716xauto
具有复杂重复信号的音乐波形(来源,乔治-吉布森教授授权)

人耳能够根据声音的“质量”(也称为音色)区分不同的声音。

我们如何用数字表示声音?

为了数字化声波,我们必须将信号转换为一系列数字,以便可以将其输入到模型中。 这是通过在固定的时间间隔内测量声音的振幅来完成的。


以固定的时间间隔进行采样测量(来源)

每个此类的测量称为一个样本,采样率是每秒的样本数。 例如,常见的采样率约为每秒44,100个样本。 这意味着一个10秒的音乐剪辑将具有441,000个样本!

为深度学习模型准备音频数据

直到几年前,在深度学习的前几天,Computer Vision的机器学习应用程序曾经依靠传统的图像处理技术来进行特色工程。 例如,我们将使用算法生成手工特征来检测角、边和面。 同样在NLP应用程序中,我们会使用诸如提取N-gram和计算术语频率之类的技术。

同样,音频机器学习应用程序过去也依赖于传统的数字信号处理技术来提取相关特征。 例如,要理解人类语音,可以使用语音概念来分析音频信号,以提取音素等元素。 这些都需要大量特定领域的专业知识来解决这些问题并调整系统以获得更好的性能。

近年来,随着深度学习变得越来越普遍,在处理音频方面它也取得了巨大的成功。 通过深度学习,我们不再需要传统的音频处理技术,我们可以依靠标准的数据来准备工作,不需要大量的手动和自定义功能就能生成。

更有趣的是,通过深度学习,我们实际上并没有处理原始格式的音频数据。 相反,常用的方法是将音频数据转换为图像,然后使用标准的CNN架构来处理这些图像!将声音转换为图片? 这听起来像科幻小说。 :smile:

这当然是真的。 这是通过从音频生成频谱图来完成的。 因此,首先让我们了解一下频谱是什么,然后使用它来理解频谱图。

光谱

正如我们前面所讨论的,可以将不同频率的信号加在一起以创建复合信号,这些信号代表现实世界中发生的声音。 这意味着任何信号都包含许多不同的频率,并且可以表示为这些频率的总和。

频谱是组合在一起以产生信号的一组频率。 例如。 该图显示了一段音乐的频谱。

频谱绘制了信号中存在的所有频率以及每个频率的强度或振幅。

|520xauto

显示构成声音信号的频率的频谱 (来源, by permission of Prof Barry Truax)

信号中的最低频率称为基频。 基频整数倍的频率称为泛音。

例如,如果基频为200 Hz,则其泛音频率为400 Hz、600 Hz、依此类推。

时域与频域

我们前面看到的显示幅度随时间变化的波形是表示声音信号的一种方法。 由于x轴显示信号的时间值范围,因此我们正在时域中查看信号。

频谱是表示相同信号的另一种方法。 它显示了幅度与频率之间的关系,并且由于x轴显示了信号频率值的范围, 因此可能在某个时刻 ,我们正在频域中查看信号。

|540xauto
时域和频域 (来源)

频谱图

由于信号随时间变化会产生不同的声音,因此其组成频率也会随时间而变化。 换句话说,其频谱随时间变化。

信号的频谱图绘制了其光谱随时间的变化,就像信号的“照片”一样。 它在x轴上绘制时间,在y轴上绘制频率。 好像我们在不同的时间点一次又一次地拍摄频谱,然后将它们全部合并为一个图。

它使用不同的颜色表示每个频率的振幅或强度。 颜色越亮,信号越好。 频谱图的每个垂直“片段”本质上都是该时间点的信号频谱,并显示了信号强度在该时间点在信号中发现的每个频率中的分布方式。

在以下的示例中,第一张图片显示时域中的信号,即幅度与时间的关系。 它使我们感觉到剪辑在任何时间点的音量,却几乎没有提供存在哪些频率。

|604xauto
声音信号和它的光谱图 (图片由作者提供)

第二张图片是频谱图,并在频域中显示信号。

生成频谱图

频谱图是使用傅立叶变换将任何信号分解成其组成频率而产生的。 如果你已经忘记了大学期间对傅立叶变换学到的所有知识,不用担心:smile:! 实际上,我们不需要回忆所有的数学知识,有非常方便的Python库函数可以一步一步为我们生成频谱图。 我们将在下一篇文章中看到这些内容。

音频深度学习模型

现在,我们了解了频谱图是什么,我们知道它是音频信号的等效紧凑表示形式,有点像信号的“指纹”。 这是将音频数据的基本特征捕获为图像的一种优雅的方法。


音频深度学习模型使用的典型管道(图片由作者提供)

因此,大多数深度学习音频应用程序都使用频谱图来表示音频。 他们通常遵循以下过程:

  • 从波形文件形式的原始音频数据开始。
  • 将音频数据转换为其对应的声谱图。
  • (可选)使用简单的音频处理技术来扩展频谱图数据。 (在频谱图转换之前,还可以对原始音频数据进行一些增强或清除)
  • 现在我们有了图像数据,我们可以使用标准的CNN架构来处理它们,并提取特征图,这些特征图是频谱图图像的编码表示形式。

下一步是根据你要解决的问题,从这个编码表示中生成输出预测。

  • 例如,对于音频分类问题,通常你可以将其通过由一些完全连接的线性层组成的分类器。
  • 对于语音转文本问题,你可以将其传递给一些RNN层,以从此编码显示中提取文本句子。

当然,我们跳过了许多细节,并做了一些广义的概括,但是我们处于较高的水平。 在以下文章中,我们将详细介绍这些步骤以及所使用的体系结构。

音频深度学习解决了哪些问题?

日常生活中的音频数据可能以无数形式出现,例如人类语音、音乐、动物声音和其他自然声音,以及来自人类活动的人造声音,例如汽车和机械。

考虑到声音在我们生活中的普遍性和声音类型的范围,不足为奇的是,有大量的使用场景要求我们处理和分析音频。 如今,深度学习已经成熟,可以将其应用于解决许多用例。

音频分类

这是最常见的用例之一,涉及获取声音并将其分配给几个类中的一个。 任务可能是识别声音的类型或来源, 比如以下是汽车的起步声,还是锤子、口哨声或狗叫声。

|720xauto
普通声音的分类 (图片由作者提供)

显然,可能的应用是巨大的。 这可用于根据机器或设备产生的声音来检测机械或设备的故障,或者在监视系统中用于检测安全漏洞。

音频分离与分割

音频分离是指将感兴趣的信号从混合信号中分离出来,以便用于进一步处理。 例如,你希望将个人声音与大量背景噪音区分开,或者将小提琴的声音与音乐表演的其余部分区分开。


从视频中分离出单个发言者(来源, 由Ariel Ephrat授权)

音频分段用于突出显示音频流中的相关部分。 例如,它可以用于诊断目的,以检测人的心跳并检测异常。

音乐流派分类和标记

随着音乐流媒体服务的普及,我们大多数人都熟悉的另一个常见应用程序是基于音频对音乐进行识别和分类。,分析音乐的内容以找出音乐的流派。 这是一个多标签分类问题,因为给定的音乐可能属于多个流派。 例如摇滚、流行、爵士、萨尔萨舞、器乐以及其他方面,例如“老歌”,“女歌手”,“快乐”,“派对音乐”等。

|720xauto
音乐流派分类和标签 (图片由作者提供)

当然,除了音频本身之外,还有关于音乐的元数据,例如歌手、发行日期、作曲家、歌词等,这些元数据可用于向音乐添加丰富的标签。

这可用于根据音乐收藏的音频功能为音乐收藏建立索引,根据用户的喜好提供音乐推荐,或搜索和检索与您正在听的歌曲相似的歌曲。

音乐生成和转录

如今,我们已经看到了很多关于深度学习的新闻,这些深度学习大多用于以编程方式生成人脸和其他场景的极为真实的图片,并且能够编写语法正确且智能的信件或新闻文章。

|720xauto
音乐一代 (图片由作者提供)

同样,我们现在能够生成与特定流派、乐器甚至特定作曲家风格相匹配的合成音乐。

在某种程度上,“音乐转录”反向应用了此功能。 它需要一些声学效果并对其进行注释,以创建音乐中存在的音符的乐谱。

语音识别

从技术上讲,这也是一个分类问题,但要处理语音识别问题。 它可以用来识别说话者的性别或姓名(例如,这是比尔·盖茨或汤姆·汉克斯,还是此基坦的声音或入侵者的声音)

|720xauto
用于探测入侵者的语音识别 (图片由作者提供)

我们可能想检测人的情绪并从他们的声音语调中识别人的情绪,例如检测出一个人的快乐、悲伤、愤怒或压力。

我们可以将其应用于检测动物的声音,以识别产生声音的是什么动物,或者有可能确定它是温柔的、刺耳的、威胁性的还是惊恐的叫声。

语音转文字和文字转语音

在处理人类语音时,我们可以更给力,不仅可以识别说话者,还可以理解他们在说什么。 这涉及从语音中提取语音中所使用的单词,并将其转录为文本语句。

这是最具挑战性的应用程序之一,因为它不仅涉及音频分析,还涉及NLP,并且需要开发一些基本的语言功能才能从发出的声音中辨别出不同的单词。

|720xauto
语音转文字 (图片由作者提供)

相反,通过语音合成,一个人可以朝另一个方向前进,获取书面文本并从中生成语音,例如,使用人工语音作为会话代理。

能够理解人类语音显然可以在我们的业务和个人生活中实现大量有用的应用程序如语音聊天室,而我们才刚刚开始摸索。

已广为人知的例子是虚拟助手,例如Alexa、Siri、sCortana和Google Home,它们是围绕此功能研发的对消费者友好的产品。

结论

本文中,我们停留在一个相对较高的层次上,探讨了音频应用的广度,并介绍了解决这些问题所应用的一般技术。

在下一篇文章中,我们将更多地介绍预处理音频数据和生成谱图的技术细节。我们还会观察用于调整性能的超参数。

然后,这将为我们深入研究几个端到端的例子做准备,从普通声音的分类开始,最后是更具挑战性的自动语音识别,在这里我们还将介绍CTC算法。

最后,如果你喜欢这篇文章,你可能也会喜欢我的其他与此有关以及强化学习的系列文章。

原文作者 Ketan Doshi

原文链接https://towardsdatascience.com/audio-deep-learning-made-simple-part-1-state-of-the-art-techniques-da1d3dff2504

推荐阅读
作者信息
AgoraTechnicalTeam
TA 暂未填写个人简介
文章
110
相关专栏
精选文章
46 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和 Agora 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。