【问题标题】:Writing to a .wav file写入 .wav 文件
【发布时间】: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 个样本的替代写入函数?

【问题讨论】:

    标签: python audio


    【解决方案1】:

    样本数量没有这种限制,可以使用scipy.io.wavfile 写入 wav 文件。样本数上的actual limitation 是 2^32 (4,294,967,296),但它来自于标头将样本数存储为 32 位无符号整数的事实。

    但是,WAV 格式以 16 位存储每个样本的幅度。

    使用 16 位有符号整数,您只能存储 [-32768, 32767] 范围内的数字,您需要相应地缩放信号以适应该范围。

    您可以将该数字视为您的系统可以产生的最高振幅的分数(比率)。

    【讨论】:

    • 感谢您的详细解释! :)
    【解决方案2】:

    您可以查看 Python 标准库中的 wave module。它可能允许您编写超过 32767 个示例,但我不确定您在尝试使用它时可能会遇到哪些限制。

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 2023-03-21
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多