【发布时间】:2021-01-25 03:37:31
【问题描述】:
我在这里可能没有使用正确的术语。我有一个像这样的 numpy 数组:
array([ 82, 73, 70, ..., 1, 230, 1], dtype=uint8)
应该是 16 位 PCM 格式。
我需要把它变成一个 numpy 音频波形。如果这不是正确的术语,我会很好地解释它是什么:从字面上看,就是在某个采样率下的声波振幅。
我还需要尽可能快地使用 Python。
【问题讨论】:
我在这里可能没有使用正确的术语。我有一个像这样的 numpy 数组:
array([ 82, 73, 70, ..., 1, 230, 1], dtype=uint8)
应该是 16 位 PCM 格式。
我需要把它变成一个 numpy 音频波形。如果这不是正确的术语,我会很好地解释它是什么:从字面上看,就是在某个采样率下的声波振幅。
我还需要尽可能快地使用 Python。
【问题讨论】:
【讨论】:
将您的 n 个样本数组重新整形为新形状 (n/2, 2) 将第二列乘以 256(最高有效字节) 将对求和为 16 位值
a = np.array([ 0x82, 0x73, 0x70, 0x1, 0x30, 0x1], dtype=np.uint8)
b = a.reshape(-1,2)*np.array([1,256], np.uint16)
c = b.sum(axis=1)
print(hex(c[0])) # '0x7382'
print(hex(c[1])) # '0x170'
print(hex(c[2])) # '0x130'
【讨论】: