【发布时间】:2015-11-27 15:08:46
【问题描述】:
我使用了 scipy.io.wavfile 中的 write 函数来生成一个 .wav 文件。
final_out = np.int16(stereo_out/np.max(np.abs(stereo_out)) * 32767)
write('final.wav', fs, final_out)
是否有任何允许超过 32767 个样本的替代写入函数?
【问题讨论】:
我使用了 scipy.io.wavfile 中的 write 函数来生成一个 .wav 文件。
final_out = np.int16(stereo_out/np.max(np.abs(stereo_out)) * 32767)
write('final.wav', fs, final_out)
是否有任何允许超过 32767 个样本的替代写入函数?
【问题讨论】:
样本数量没有这种限制,可以使用scipy.io.wavfile 写入 wav 文件。样本数上的actual limitation 是 2^32 (4,294,967,296),但它来自于标头将样本数存储为 32 位无符号整数的事实。
但是,WAV 格式以 16 位存储每个样本的幅度。
使用 16 位有符号整数,您只能存储 [-32768, 32767] 范围内的数字,您需要相应地缩放信号以适应该范围。
您可以将该数字视为您的系统可以产生的最高振幅的分数(比率)。
【讨论】:
您可以查看 Python 标准库中的 wave module。它可能允许您编写超过 32767 个示例,但我不确定您在尝试使用它时可能会遇到哪些限制。
【讨论】: