当前位置: 首页 > 知识库问答 >
问题:

Python-将浮点音频数据数组转换为wav文件

林龙野
2023-03-14

我有音频数据记录从麦克风这样:(ndarray的浮动)

> 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音频文件?

共有1个答案

单修德
2023-03-14

您需要先使用struct打包数据

替换你的波形文件。用这个写照片

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

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

 类似资料:
  • 我目前正在处理音频样本。我从AVAssetReader获得它们,并有一个,其内容如下: 如您所见,我找到的唯一用于转换[Int16]->[Float]的方法是,但这样做会增加我的处理时间。是否存在将Int16指针转换为Float指针的其他方法?

  • 我正在做一个简单的Android应用程序,我从智能手机麦克风录制一些东西,保存在一个文件中,然后播放该文件。 现在我想对音频文件应用高通滤波器,但要做到这一点,我需要首先将音频文件转换为浮点数组。谁能帮我一下吗。 谢谢

  • 这是我的问题,有人给了我一个函数,如果我理解得很好,它会把一些声音样本放入数组列表中。 我想创建一个。wav文件的音频曲目,我真的不知道如何做到这一点。 这是代码,因为也许我根本不懂。。。 下面是示例,在上面的代码中导入。

  • 问题内容: 有点像这个问题,但是相反。 给定类似,或的字符串,将其转换为浮点数的最佳方法是什么?我正在考虑根据情况使用正则表达式,但是也许有人知道更好的方法或预先存在的解决方案。我希望可以使用,但是我认为第3种情况可以避免这种情况。 问题答案: 我稍微调整了詹姆斯的回答。 http://ideone.com/ItifKv

  • 我得到以下错误: WindowserRor:[错误2]系统找不到指定的文件

  • 问题内容: 我正在尝试对.3gpp音频文件执行快速傅立叶变换。该文件包含来自电话麦克风的44100kHz的5秒钟小录音。 出于显而易见的原因,我可以找到的每个Java FFT算法都只接受double [],float []或Complex []输入,但是我以字节数组的形式读取音频文件,因此我有点困惑我从这里去哪里。我唯一能找到的是上一个问题的答案: Android音频FFT使用音频记录检索特定频率