gpt4 book ai didi

python - 在python中查找最大有符号短整数

转载 作者:太空狗 更新时间:2023-10-30 01:04:02 27 4
gpt4 key购买 nike

如何在 Python 中获取最大有符号短整数(即 C 的 limits.h 中的 SHRT_MAX)

我想对来自 *.wav 文件的单个 channel 的样本进行归一化,所以我想要一堆 1 到 -1 之间的 float ,而不是一堆 16 位有符号整数。这是我得到的(相关代码在 normalized_samples() 函数中):

def samples(clip, chan_no = 0):
# *.wav files generally come in 8-bit unsigned ints or 16-bit signed ints
# python's wave module gives sample width in bytes, so STRUCT_FMT
# basically converts the wave.samplewidth into a struct fmt string
STRUCT_FMT = { 1 : 'B',
2 : 'h' }

for i in range(clip.getnframes()):
yield struct.unpack(STRUCT_FMT[clip.getsampwidth()] * clip.getnchannels(),
clip.readframes(1))[chan_no]

def normalized_samples(clip, chan_no = 0):
for sample in samples(clip, chan_no):
yield float(sample) / float(32767) ### THIS IS WHERE I NEED HELP

最佳答案

GregS是对的,这不是解决问题的正确方法。如果您的示例已知为 8 位或 16 位,您不希望将它们除以因平台而异的数字。

您可能会遇到麻烦,因为有符号的 16 位 int 实际上的范围是 -32768 到 32767。在极端的负数情况下除以 32767 将得到 < -1。

试试这个:

yield float (样本 + 2**15)/2**15 - 1.0

关于python - 在python中查找最大有符号短整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2308247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com