【问题标题】:How can I convert a numpy array (wav data) to int16 with Python?如何使用 Python 将 numpy 数组(wav 数据)转换为 int16?
【发布时间】:2019-12-24 01:58:12
【问题描述】:

我有一些数据,我认为是wav 数据。如果我使用:

soundfile.write(filepath, my_data, samplerate)

,那么它会正确写入一个wav 文件。但我想以某种方式将该 wav 数据转换为 int16,因为目前它是某种 float

[0.0018415  0.00730521 0.01155283 ... 0.10048427 0.09344029 0.08903081]

max 0.3002103
min -0.33075073

它来自https://github.com/santi-pdp/segan_pytorch中的一个进程

有没有什么方法可以让我转换成int16这个而不必保存然后读取文件?

【问题讨论】:

  • 目前它是某种浮点数你能检查一下它实际上是什么吗?您在这里几乎没有提供任何信息,您能更具体一点吗?文件来自哪里?你在用什么库?
  • 添加了概述问题的更多细节
  • 这是一个numpy数组? .dtype 是什么?您是只想将类型更改为 int16,还是同时缩放数据?
  • 我想将数据缩放到使用 soundfile.read(dtype=int16) 读取时会发生的相同
  • 数据当前是否在 [0, 1[ 范围内?你写的是你假设数据是wav格式的,你能更具体一点吗?

标签: python numpy scipy wav soundfile


【解决方案1】:

答案很简单:

my_data = (my_data * 32767).astype(np.int16)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2012-01-17
    • 2020-10-13
    相关资源
    最近更新 更多