【问题标题】:Python - Convert Array of Float audio data to wav filePython - 将浮点音频数据数组转换为 wav 文件
【发布时间】:2020-04-18 15:44:23
【问题描述】:

我有像这样从麦克风录制的音频数据:(浮点数数组)

> print(data)
[-0.00762939 -0.00817871 -0.00714111 ...  0.0265511   0.02484207   0.02377392]

这是我的代码:

while(recording):
   frames.append(data)

waveFile = wave.open(WAVE_OUTPUT_FILENAME + "_" + str(COUNT_FILE) + ".wav", 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.wr(b''.join(frames))
waveFile.close()

但是当我播放音频时它就坏了,只有噪音……如何将其转换为 .wav 音频文件?

【问题讨论】:

  • waveFile.wr(b''.join(frames)) --> 语法错误,更正:waveFile.writeframes(b''.join(frames))
  • 您可以编辑您的问题。
  • 请添加库导入语句:我不知道您是如何创建这些 wav 的

标签: python numpy wav numpy-ndarray waveform


【解决方案1】:

你需要先使用 struct 打包你的数据

用这个替换你的 waveFile.writeframes

data=struct.pack( 'h' * len(frames), *frames )
waveFile.writeframes(data)

也许还可以将您的数据转换为整数,因为我认为 wav 文件只使用整数值

【讨论】:

  • 谢谢,现在我可以制作更好的 wav 音频,但仍然使用浮动,我仍然会听到噪音。我不知道为什么当使用整数时它只是变成空的声音。
  • 已解决我必须将音频数据乘以 1000 或 10000,因为 numpy 数组是小于 1 的浮点数
  • 它很可能是归一化值,最好知道归一化因子并将您的数组乘以它
猜你喜欢
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多