【发布时间】:2013-09-09 19:58:02
【问题描述】:
我有这个代码:
import numpy as np
import scipy.io.wavfile
import math
rate, data = scipy.io.wavfile.read('xenencounter_23.wav')
data2 = []
for i in range(len(data)):
data2.append([int(round(math.sin(data[i][0])*3000)), int(round(math.sin(data[i][1])*3000))])
data2 = np.asarray(data2)
print data2
scipy.io.wavfile.write('xenencounter_23sin3.wav',rate,data2)
打印(截断):
[[-2524 2728]
[ -423 -2270]
[ 2270 423]
...,
[-2524 0]
[ 2524 -2728]
[-2270 838]]
wav 文件在 Windows Media Player 中打开并播放,因此至少它是正确的格式。但是,当使用 Audacity 打开它并查看单个样本时,它们都是 0,并且一致地,该文件根本不会播放任何声音。
我不明白的是上面列出的 numpy 数组是如何变成全 0 的。它应该低于样本的最大值(或高于,如果它是负数)。
【问题讨论】:
-
如果你用 scipy 重新加载它会发生什么?是零还是您保存的值?
-
它返回的内容与写入之前打印的内容相同。
-
你能在
rate, data = scipy.io.wavfile.read('xenencounter_23.wav')行之后添加print data语句吗?我想看看这些数据是什么样子的。 -
它打印这个
[[-1 2] [-3 4] [-4 3] ..., [-1 0] [ 1 -2] [ 4 -6]]但是,在它列出的数组的另一部分:[-2050 -1856] [-1814 -1621] [-1493 -1295] [-2042 -1848],非常相似 -
试试
scipy.io.wavfile.write('xenencounter_23sin3.wav',rate,data)- 你想知道是写方法还是你对数据执行的操作有问题。