Skip to Content
为深度学习编程 PyTorch
book

为深度学习编程 PyTorch

by Ian Pointer
July 2025
Intermediate to advanced
220 pages
3h
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 为深度学习编程 PyTorch

第 6 章 声音之旅 声音之旅

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

Deep Learning 最成功的应用之一就是我们每天随身携带的东西。无论是 Siri 还是 Google Now,为这两个系统和亚马逊的 Alexa 提供动力的引擎都是神经网络。在本章中,我们将了解 PyTorch 的torchaudio 库。你将学习如何使用它来构建一个管道,利用基于卷积的模型对音频数据进行分类。之后,我将向你推荐一种不同的方法,它可以让你使用在图像中学到的一些技巧,并在 ESC-50 音频数据集上获得很高的准确率。

但首先,让我们来看看声音本身。声音是什么?它通常是如何以数据形式表示的?这是否能为我们提供一些线索,让我们知道应该使用哪种类型的神经网络从数据中获得洞察力?

声音

声音是通过空气振动产生的。我们听到的所有声音都是高压和低压的组合,我们通常用波形来表示,如图 6-1 所示。在这幅图中,原点上方的波为高压,下方的部分为低压。

Sine wave
图 6-1. 正弦波

图 6-2显示了一首完整歌曲更为复杂的波形。

Song waveform
图 6-2. 歌曲波形

在数字音频中,我们每秒对波形进行多次采样,传统上 CD 音质的采样次数为 44100 次,并存储每个采样点的波幅值。在时间t 上,我们存储的是单个值。这与图像略有不同,图像需要xy 两个值来存储一个值(灰度图像)。如果我们在神经网络中使用卷积滤波器,我们需要的是一维滤波器,而不是之前用于图像的二维滤波器。

现在你对声音有了更多了解,让我们来看看我们使用的数据集,以便你能对它更熟悉一些。

ESC-50 数据集

环境声音分类(ESC) 数据集是一组现场录音,每段录音时长 5 秒,并被归入 50 个类别之一(例如,狗叫声、打鼾声、敲门声)。在本章的其余部分,我们将使用该数据集尝试两种音频分类方法,并探索使用torchaudio 来简化音频的加载和操作。

获取数据集

ESC-50 数据集是一组 WAV 文件。您可以通过克隆 Git 仓库下载:

git clone https://github.com/karoldvl/ESC-50

或者使用 curl 下载整个版本库:

curl https://github.com/karoldvl/ESC-50/archive/master.zip

所有 WAV 文件都存储在音频目录中,文件名如下:

1-100032-A-0.wav

我们关心文件名中的最后一个数字,因为它告诉我们这个声音片段被分配到了哪个类别。文件名的其他部分对我们来说并不重要,但大多与更大的 Freesound 数据集有关,ESC-50 就是从该数据集中提取的(但有一个例外,我很快就会提到)。如果您有兴趣了解更多信息,ESC-50 软件仓库中的README文档会提供更多细节。

现在我们已经下载了数据集,让我们来看看其中包含的一些声音。

在 Jupyter 中播放音频

如果你想真正听到来自 ESC-50 的声音,那么你可以使用 Jupyter 内置的音频播放器 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

产品路线图全面升级

产品路线图全面升级

C. Todd Lombardo, Bruce McCarthy, Evan Ryan, Michael Connors
超越Vibe编程

超越Vibe编程

Addy Osmani

Publisher Resources

ISBN: 9798341662902Supplemental Content