gpt4 book ai didi

python - Python:如何将两个有符号的int16数组求和成一个而不会溢出

转载 作者:行者123 更新时间:2023-12-03 02:30:13 30 4
gpt4 key购买 nike

我在字符串中有几个int16流,我希望它们加在一起(没有溢出)并将其作为int16字符串返回。背景技术将多个wave文件混合到一个流中。

decodeddata1 = numpy.fromstring(data, numpy.int16)
decodeddata2 = numpy.fromstring(data2, numpy.int16)
newdata = decodeddata1 + decodeddata2
return newdata.tostring()

有没有办法用numpy做到这一点,还是有另一个库?

在python中处理每个单个值太慢,导致结结。

最重要的是性能,因为此代码用于提供音频的回调方法中。

@编辑:
test input data:
a = np.int16([20000,20000,-20000,-20000])
b = np.int16([10000,20000,-10000,-20000])
print a + b --> [ 30000 -25536 -30000 25536]

但我想保持最高水平:
[30000 40000 -30000 -40000]

最佳答案

将两个信号与-32768<x<32767的动态范围混合在一起的明显结果是,生成的信号具有-65537<x<65536的范围-需要17位来表示它。

为了避免削波,您将需要按比例缩放输入-显而易见的方法是将和(或两个输入)除以2
numpy看起来应该对此非常快-至少比python内置的可变大小整数类型快。如果其他算术是性能问题,则应考虑选择语言。

关于python - Python:如何将两个有符号的int16数组求和成一个而不会溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58133414/

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