使用24位音频样本

时间:2013-07-05 12:40:38

标签: audio waveform 24-bit

使用24位音频的“标准方法”是什么?好吧,真的没有24位数据类型可用。以下是我想到的方法:

  1. 将24位音频样本表示为32位整数,并忽略高八位。
  2. 就像(1)但忽略低八位。
  3. 将24位音频样本表示为32位浮点数。
  4. 将样本表示为3个字节的结构(C / C ++可接受,但对Java不利)。
  5. 你是如何解决这个问题的?

1 个答案:

答案 0 :(得分:2)

将它们存储为32位或64位signed intfloatdouble,除非您有空间意识并且关心将它们打包到可能的最小空间中。

音频样本通常在音频硬件上显示为24位,因为这通常是DAC和ADC的分辨率 - 尽管在大多数计算机硬件上,不要惊讶地发现4位的底部3位随机敲打有噪音。

数字信号处理操作 - 通常在样本采集的下游发生 - 都涉及添加样本的加权和。存储在整数类型中的样本可以被认为是定点二进制,在某个任意点处具有隐含的二进制点 - 您可以策略性地选择其位置以尽可能多地保持精度。

例如,两个24位整数之和产生25位的结果。经过8次这样的添加后,32位类型会溢出,你需要通过舍入和右移来重新规范化。

因此,如果您使用整数类型来存储样本,请使用最大的样本,并从最低24位的样本开始。

浮点类型当然会为您处理这个细节,尽管您在重新归一化时的选择较少。它们是提供硬件支持的音频处理的常用选择。单精度float具有24位尾数,因此可以保持24位样本而不会损失精度。

通常浮点样本存储在-1.0f < x < 1.0f范围内。