关于计算机如何将二进制转化为音频的一些疑问

关于计算机如何将二进制转化为音频的一些疑问

我不确定我是否将其发布到了正确的地方或者是否应该发布在 StackOverflow 中,因为我想将这些知识用于编程。

好吧,我对声学了解不多……

我知道,像位图这样的未压缩图像每个像素有 3 个字节:1 个表示红色,1 个表示绿色,1 个表示蓝色

但是音频是如何工作的呢?我使用一个程序生成从 0 到 255 再到 0 的所有数字,使用 HxD 将它们粘贴到一个文件中,保存时不使用扩展名,然后将原始文件导入 Audacity,它看起来像这样:

Audacity 中的图像

现在,我的问题是:

  1. 为什么有些在 0 水平线以下,而有些在 0 水平线以上?那条线代表什么?
  2. 为什么图片看起来不像三角形,因为它从 0 到 255 再到 0?为什么它看起来这么奇怪?

经过一番思考,我想我已经弄清楚了一些事情:水平线和垂直线相交的地方是图表/文件的中间,因此应该是 255。此外,0.001 和 0.002 之间以及 0.004 和 0.005 之间的那些峰值看起来像图表中的断点,就像它在水平线下方的对应峰值上延续一样。我猜对了吗?

另外,我想知道在上述峰值之后和之前,末尾和开头的那些不规则之处是什么。我怀疑 Audacity 使用了一些数学函数来让音频中的点处于正确的位置,并且该函数具有正弦或其他三角运算。我读到过一些文章说正弦和余弦与声音有关。

我对调(E、F、C 等)也有些疑问。它们和音高有关系吗?它们到底是什么?

编辑:我意识到我在生成图表的点时犯了一个非常愚蠢的错误。基本上,我忘记在 16 以下的每个数字前添加一个 0,因此当我输入到文件中的是字节(例如 1、2、3 和 4)时,最终写入文件的将是 2 个字节 12 和 34。无论如何,我修复了它,开头和结尾的那些“干扰”消失了。为了进行比较,以下是 0-255-0、0-255 和 255-0 的图表: http://postimg.org/image/nmoq9mmdp/

答案1

首先,需要注意的是一些图像容器类型(如图片尺寸 720X720) 有 3 个字节值来表示红色、绿色和蓝色值,其他的可以有 4 个字节值来表示红色、绿色、蓝色和 alpha 通道。其他的可以有更多。

这就是我们使用计算机来表示视觉信息的方式;这是因为如果您要拍摄快照并将其“原始”值转换为字节,则实际字节数将相当可观(如果使用全光谱,则 5"x7" 图像的字节数将达到 GB+ 范围)。因此,我们使用算法和硬件技术来欺骗我们的大脑,让我们认为在以数字方式呈现图像时,我们看到的是图像的全彩色表示。

我从某处读到正弦和余弦与声音有关。

音频有所不同,因为音频所包含的物理信息要少得多。声音(像光一样)是一种波(可以很容易地用正弦/余弦函数表示)。光是电波,而声音是物理波。光是在原子层面产生的,电子通过时会释放光子;将光波转换成原始数字信息比将声音转换成光波要复杂一些。声音是在分子和原子相互碰撞时产生的。这种物理压力相对容易通过磁铁和线圈从物理波转换成电波(很像麦克风的工作原理)。获取此电信号 ( +/- V),我们可以将其转换成数字信号 ( 1/ 0) 来表示物理声波。原始音频占用的空间比视频要小得多,但仍然远远超过我们当前的硬盘空间(如果是我的 50k+ MP3 收藏,如果它们是原始音频,则将占用更多空间)。

现在必须以某种方式呈现表示音频波形的数字信号,以便可以使用或播放它,因为如果您只是获取原始音频字节并以 CPU 的速度“播放”它们,它很可能听起来像一个响亮的哔哔声或其他随机声音。为此,必须以均匀的时间间隔对波形进行采样,并将每个间隔表示为一个数字。这些数字是字节,您正在更改的 0-255,它们代表音频波形并表示频率和音量等内容(假设是原始音频格式而不是像mp3或 这样的容器aac)。

正如一条评论指出的那样,这个具体的答案可能有点复杂(考虑到你的要求以及需要解释什么才能充分理解),所以无论是在这里还是在SO上问,我建议你看一下Digital Audio Fundamentals来自 Audacity 手册。它对您所问的问题有一个很好的入门介绍,并且可能比通过这些论坛之一进行合理解释更有帮助。

如果您在阅读他们的一些文档后仍有疑问,我很乐意进一步扩展(在这里或在 SO 上)。希望这能有所帮助。

相关内容