2011-03-26 77 views
13

我已经使用了几个音频程序,如SDL调音台,大胆等,但我想看看这些小音响玩具里面有什么。音频数据如何处理等。我还看过一些C++ MP3播放器的示例代码,它使用void*作为音频数据。计算机如何处理音频数据?

但是,所有这些并不能帮助我理解音频如何在计算机中工作。那么有人可以向我解释(或向我介绍一些书籍)计算机如何存储和处理数字音频数据?

+0

相关(如何计算机处理音频):[Resampling Audio](http://stackoverflow.com/questions/1125666/how-do-you-do-bicubic-or-other-non-linear-interpolation-of -re-sampled-audio-dat) - 关键构建模块之一。 – 2011-03-26 20:40:58

回答

10

如何波形中表示

有音频是如何在Audacity manual代表的更详细的解释:

Waveform

...每条垂直线的高度表示为有符号数。


更多关于数字音频

  • 无畏wiki有一些有关how algorithms in Audacity work。如果Audacity中有一个特定的音频效果需要了解更多信息,那还没有涵盖,您可以在那里留下问题。
  • 如果您正在查看源代码,echo effect是一个很好的开始。
  • 有关数字音频的更多信息,请单击维基百科按钮以查看对您感兴趣的链接this page。在页面底部的那些特别有用于深入挖掘那里的不同的音频文件格式

您可能会注意到所有这些链接都来自Audacity项目。这不是巧合。

9

以你的WAV文件例如(举例来说,如果你存储一个三角波形为.wav文件,请问这个波形得到存储为位模式):

WAV文件将会有一个头,这向播放器或音频处理器指定关于通道数量,采样率,位深度,数据长度等的关键信息。在标题出现之后,存储音频采样的原始位模式(假设你知道采样是什么 - 如果没有,请参阅维基百科)。每个采样由多个字节组成(在标题中指定),并指定任何给定时间点的波形幅度。每个样本可以以有符号或无符号形式存储(也在标题中指定)。

+1

这简洁而且非常有帮助! – 2013-05-21 05:51:27

5

您可以阅读Lothar Reichel 他解释一点的题目是“数字音频压缩”这个演讲,并发布一些Matlab代码:

声音是一种复杂的现象。它通常是由空气(或其他介质)中的移动物体引起的,例如,扬声器锥体来回移动。该运动反过来导致空气压力变化 像在池塘中的波浪一样穿过空气。我们的耳膜将压力变化转换成我们的大脑像声音一样处理的现象。

电脑使用麦克风而不是耳膜听到声音。麦克风将压力变化转换为电压,其幅度对应于压力的强度。计算机然后使用称为采样的技术来处理电信号。计算机通过定期测量其振幅来采样 信号,通常为每秒44,100次。每个测量值 都以固定精度(通常为16位)存储为一个数字。

希望它有帮助。

7

数字音频存储为一个数字序列,称为采样。例如:

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

剧情这些数值为在笛卡尔图形点:样本值确定沿Y轴的位置,样本的序列号(0,1,2,3等)确定沿X轴的位置。

现在通过您刚绘制的点追踪一条线。

恭喜,您刚才呈现了数字音频的波形。 :-)

Y轴是振幅,X轴是时间。

“采样率”确定回放设备(例如声卡)在样本中前进的速度。这是样本的“时间值”。例如,CD质量的数字音频每秒传送44,100个样本,读取每个采样点的幅度(Y轴值)。

†上面的讨论忽略了压缩。数字音频的基本特性对压缩变化不大。很像压缩位图图像不会改变位图图像的核心本质。 (音频压缩的主题非常丰富 - 我并不想将其过分简化,只是所有压缩音频在呈现之前最终都是未压缩的 - 即可以听得见的声音播放或以波形形式绘制 - 在而此时它的压缩起源是无关紧要的)