我已经使用了几个音频程序,如SDL调音台,大胆等等,但我想看看这些小音响玩具里面有什么。如何处理音频数据等。我还看到了C ++中MP3播放器的一些示例代码,它使用void*
来表示音频数据。
但所有这些并不能帮助我理解音频在计算机中的工作原理。那么有人可以向我解释(或介绍一些书籍)关于计算机如何存储和处理数字音频数据的问题? (例如,如果将三角波形存储到.wav文件中,该波形如何存储为位模式?)
答案 0 :(得分:11)
如何表示波形
有关如何在 Audacity manual 中表示音频的更详细说明:
...每条垂直线的高度表示为带符号的数字。
有关数字音频的更多信息
您可能会注意到所有这些链接都来自Audacity项目。这不是巧合。
答案 1 :(得分:9)
以你的WAV文件为例:
WAV文件将有一个标题,它为播放器或音频处理器指定关于通道数,采样率,位深度,数据长度等的关键信息。标题出现之后是原始位模式,它存储了音频样本(我假设你知道什么是抽样 - 如果没有,请参阅维基百科)。每个样本由多个字节组成(在标题中指定),并指定任何给定时间点的波形幅度。每个样本都可以以有符号或无符号的形式存储(也在标题中指定)。
答案 2 :(得分:8)
数字音频存储为一系列数字,称为样本。示例:
5,18,6,-4,-12,-3,7,14,4
将这些数字绘制为笛卡尔图上的点:样本值确定沿Y轴的位置,样本的序列号(0,1,2,3等)确定沿X轴的位置。
现在通过您刚绘制的点跟踪一条线。
恭喜,您刚刚渲染了数字音频的波形。 : - )
Y轴是振幅,X轴是时间。
“采样率”确定回放设备(例如声卡)在样本中前进的速度。这是样本的“时间价值”。例如,CD质量的数字音频每秒遍历44,100个样本,读取每个采样点的幅度(Y轴值)。
†上面的讨论忽略了压缩。压缩几乎没有改变数字音频的本质。就像压缩位图图像一样,不会改变位图图像的核心特性。 (音频压缩的主题很丰富 - 我并不是要过度简化它,只是所有压缩音频在渲染之前最终都是未压缩的 - 即,作为可听声音播放或绘制为波形 - 在这点压缩起源的后果不大。)
答案 3 :(得分:5)
您可以从Lothar Reichel阅读本讲座 他在那里解释了一些主题“数字音频压缩”,并发布了一些Matlab代码:
声音是一个复杂的现象。它通常是由空气中的移动物体(或其他介质)引起的, 例如,前后移动的扬声器锥体。该运动反过来导致气压变化 像池塘里的波浪一样穿过空气。我们的耳膜将压力变化转换为 我们的大脑处理成声音的现象。
计算机使用麦克风而不是耳膜“听到”声音。麦克风转换压力 电势的变化,其幅度对应于压力的强度。该 然后,计算机使用称为采样的技术处理电信号。计算机样本 通过定期测量其振幅来发出信号,通常为每秒44,100次。每次测量 存储为具有固定精度的数字,通常为16位。
希望它有所帮助。