首页 > 解决方案 > 声音数据如何?

问题描述

我在这里阅读了计算机中的声音是如何用数字表示的。

我发现通常的表示是,我们每秒得到 [-32767, 32767] 之间的 44,100 个数字。

那么在我的想象中,一定有一个很大的单列矩阵,对吧?

我是 R 用户,所以用 R 说话,3 秒的声音数据是,

s <- 3
sound <- matrix(0, ncol = 1, nrow = 44100 * s)
nrow(sound)
#> [1] 132300

具有 132,300 行的单列矩阵。

真的是这样吗?

我想要一些类似的图片在我的脑海中,比如说,如果图片是 256 * 256,

如果我们 RGB 那张图片,我们会得到 3 个矩阵,每个矩阵都是 256 * 256。

在声音的情况下,我们得到一个很长的列?当我再次考虑这一点时,它毕竟甚至不是一个矩阵。这是一个专栏。

我对吗?我在互联网上找不到任何类似的数据集。

任何建议都将受到欢迎。谢谢。

标签: rimageaudio

解决方案


在该链接问题的早期创建的原始格式可能看起来很像一维数组。并且可能发送到扬声器以发出声音的信号可以类似地表示。

但是由于以下几个原因,您不太可能在计算机上找到类似的文件:

  • 声音可以以不同的位深度存储 - 即每个“数字”CD 音轨有多少位深度具有 16 位深度,但您可以有 8 位或 32 位等。在这些数字的直接流中,您需要一些如何知道读取下一个数字的距离,以便信息需要安全地保存在某个地方。
  • 采样率可能会有所不同。如果您有代表音频信号的数字序列,那么您需要知道每个数字持续多长时间。
  • 大多数声音更复杂。您拥有立体声或 5 声道或其他任何源,而不是单个源,因此系统需要能够存储/解码您想在特定时间听到的声音的多条信息
  • 大部分声音是重复的,因此通常可以从压缩中受益。

因此,大多数声音都以压缩格式存储,其中包含有关如何解码的包装信息。包装信息包括如何解码不同的音频通道、使用了何种压缩等。

您可能找到的最接近的是.wav文件 (Windows) 或.aiff(Mac)。但即使这些也包括一些元数据(开始时的采样率和位深度)。


推荐阅读