Audio 计算机如何处理音频数据?

Audio 计算机如何处理音频数据?,audio,Audio,我用过几个音频程序,如SDL混音器、audacity等,但我想看看这些小音频玩具里面有什么。音频数据是如何处理的等等。我还看到了C++中MP3播放器的一些示例代码,它使用了 Value>代码>音频数据。 但所有这些并不能帮助我大体上理解音频在计算机中是如何工作的。有人能给我解释一下(或者给我介绍一些书)计算机是如何存储和处理数字音频数据的吗?(例如,如果将三角形波形存储到.wav文件中,该波形如何存储为位模式?以wav文件为例: WAV文件将有一个头文件,它为播放器或音频处理器指定有关通道数、采

我用过几个音频程序,如SDL混音器、audacity等,但我想看看这些小音频玩具里面有什么。音频数据是如何处理的等等。我还看到了C++中MP3播放器的一些示例代码,它使用了<代码> Value>代码>音频数据。
但所有这些并不能帮助我大体上理解音频在计算机中是如何工作的。有人能给我解释一下(或者给我介绍一些书)计算机是如何存储和处理数字音频数据的吗?(例如,如果将三角形波形存储到.wav文件中,该波形如何存储为位模式?

以wav文件为例:


WAV文件将有一个头文件,它为播放器或音频处理器指定有关通道数、采样率、位深度、数据长度等的关键信息。头文件之后是原始位模式,它存储音频样本(我假设您知道采样是什么-如果不知道,请参阅维基百科)。每个样本由若干字节(在标题中指定)组成,并指定任何给定时间点的波形振幅。每个样本可以以签名或未签名的形式存储(也在标题中指定)。

您可以从 在这里,他解释了一点“数字音频压缩”的主题,并发布了一些Matlab代码:

声音是一种复杂的现象。通常由空气(或其他介质)中的移动物体引起, 例如,前后移动的扬声器圆锥体。该运动进而导致气压变化 像池塘中的波浪一样在空气中传播。我们的耳膜将压力变化转化为 我们大脑处理为声音的现象

计算机使用麦克风而不是鼓膜来“听”声音。麦克风转换压力 振幅与压力强度相对应的电势的变化。这个 然后,计算机使用一种称为采样的技术来处理电信号。计算机采样 以固定的间隔(通常为每秒44100次)测量其振幅的信号。每次测量 存储为具有固定精度的数字,通常为16位

计算机发出声音的方式或多或少与上述过程相反。样品被送入一个产生与样品值成比例的电势的装置。然后,扬声器或其他类似装置可将电信号转换为气压变化。进行测量的速率称为采样速率。常见的采样率为每秒44100次(用于光盘或CD音频)。一组数字音频数据的比特率是每秒声音所需的存储位。如果数据具有固定的采样率和精度(与CD音频一样),则比特率只是它们的乘积。例如,一路CD音频的比特率为44100采样/秒×16比特/采样=705600比特/秒。比特率是存储的一般度量,并不总是简单的采样率和精度的乘积。例如,我们将讨论一种以可变精度编码数据的方法


希望有帮助。

数字音频以数字序列的形式存储,称为样本。例如:

5,18,6,4,12,3,7,14,4

如果将这些数字绘制为笛卡尔图上的点:采样值确定沿Y轴的位置,采样的序列号(0、1、2、3等)确定沿X轴的位置。X轴只是一条单调递增的数字线

现在在刚刚绘制的点上画一条线

祝贺您,您刚刚呈现了数字音频的波形。:-)

Y轴是振幅,X轴是时间

“采样率”确定播放设备(如声卡)通过采样的速度。这是样本的“时间值”。例如,CD质量数字音频每秒遍历44100个采样,读取每个采样点的振幅(Y轴值)


†上述讨论忽略了压缩。压缩对数字音频的本质变化不大。就像压缩位图图像一样,不会改变位图图像的核心特性。(音频压缩是一个内容丰富的话题——我不是想把它简单化,只是所有压缩的音频在渲染之前最终都会被解压缩——也就是说,以声音的形式播放或以波形的形式绘制——在这一点上,其压缩的起源几乎没有什么影响。)

波形是如何表示的

关于音频在中的表示方式,有更详细的说明:

…每条垂直线的高度用有符号的数字表示


有关数字音频的更多信息

  • Audacity wiki有一些关于的信息。如果《Audacity》中有一个特定的音频效果您想了解更多,但还没有涉及,您可以在那里留下一个问题
  • 如果您正在查看源代码,是一个很好的起点
  • 有关数字音频的更多信息,请单击Wikipedia按钮,获取您感兴趣的链接。该页面底部的内容对于深入挖掘不同的音频文件格式非常有用
您可能会注意到,所有这些链接都来自Audacity项目。这不是巧合。

与(计算机如何处理音频)相关:——关键构建块之一。