我写的wav文件的数据类型为int32,采样率为11025,但播放时输出的wav文件没有声音。
from scipy.io.wavfile import read
rate, data0 = read('001.wav') #rate type is int
data = numpy.asarray(data0,dtype=theano.config.floatX)
for ffp in data:
print data[ffp]使用此代码,我们可以清楚地看到正常的wav文件。下面是一些整数序列:
-23.0 -51.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 -17.0 39.0 253.0 -266.0 -146.0 -146.0 -56.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 43.0 177.0 -428.0 455.0 -236.0 -325.0 113.0 237.0 121.0 82.0 352.0 139.0 0.0 0.0 2.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 214.0 160.0 -733.0 -501.0 844.0 -446.0 -8.0 28.0 0.0 -1.0 -170.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 -2.0 -1.0 0.0 0.0 0.0 -2.0 184.0 51.0 -330.0 -80.0 416.0 -121.0 -498.0 192.0 148.0 0.0 0.0 -1.0 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 112.0 -171.0 -253.0 -49.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -24.0 0.0 0.0 -101.0 -142.0 -476.0 -212.0 -377.0 329.0 44.0 -38.0 246.0 0.0 0.0 7.0 315.0 189.0 67.0 28.0 97.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 120.0 54.0 0.0
这一次播放时没有声音wav文件:
from scipy.io.wavfile import write
wavfiles = []
for fr in range(wavfile.size/11025):
for fn in range(wavfile[fr].size):
wavfile[fr][fn] = int(wavfile[fr][fn])
wavfiles0 = numpy.asarray(wavfile[fr],dtype='int32')
wavfiles.append(wavfiles0)
wavfiles_ = numpy.vstack(wavfiles)
wavfiles2 = wavfiles_.ravel()
filename = 'test01.wav'
write(filename, 11025, wavfiles2)
for ffp in wavfiles2:
print wavfiles2[ffp]我们可以看到这个整数序列:
-429 -288 -725 -1264 486 326 -639 -695 -632 -742 532 1063 671 71 -613 73 807 195 496 -422 -74 -564 884 -1196 558 -106 -667 975 -546 -178 -1253 -279 1021 -549 38 304 -278 -950 -264 -88 621 -460 78 -138 450 -191 370 123 599 -858 -860 95 -204 -285 -210 441 294 -225 -109 -26 -1267 -199 -950 -369 -232 348 -528 -13 495 -554 -542 1066 159 -176 -282 -1240 -298 -1304 -883 309 -574 519 -149 271 -562 -1107 -248 -161 100 -165 109 105 -267 -801 8 -346 -1065 -198 394 -538 32 -41 73 -209 -1095 1508 -520 37 139 450 -335 -60 -225 499 -63 991 -702 -733 702 -480 -828 -447 -803 978 -439 663 636 -513 42 -100 388 945 364 590 -142 1127 -950 -1052 1122 213 -94 -722 -63 -601 323 509 -692 -446 -393 -496 940 -761 311 -643 -144 -280 -162 383 -828 -198 -361 -61 -1035 -246 1167 -29 27 246 1063 -88 192 -1481 -524 457 -205 453 -198 499 -33 30 438 72 198 -17 -303 532 -282 738 712 -963 198 53 623 708 879 398 388 954 -177 -549 165 116 -359 147 410 -69 615 240 168 -745 -83 125 -858 847 930 142 -1127 465 1535 1054 -1229 711 295 266 38 146 -701 -345 -74 241 164 102 -684 -339 130 -883 -1442 -1196 124 -649 -15 -376 776 -559 73 940 -419 -48 617 20 -515 179 -1065 157 -497 202 282 -6 -104 -267 343 489 236 722 -320 1007 -466 -129 807 487 -674 -627 170 256 -856 -629 -166 -1390 1184 -303 179 -447 482 303 -502 -52 -137 395 109 280 1147 159 243 118 531 -70 -564 562 491 38 -74 -826 -63 -1276 329 -43 -41 -587 -193 -43 -52 949 -258 -446 -460 -258 332 -580 -514 -898 294 -883 -377 -428 48 0 411 970 146 410 -183 -161 -177 38 67 346 -447 -217 -998 580 -165 411
是什么原因导致了这种无声演奏的错误。
如果该整数序列不是一个正常的wav文件数据序列,是否因为该序列中的零小于正常一?
我所做的是学习音乐,就像将30首歌曲组合成一首歌,但当我播放我自己制作的一首歌时,却没有声音。寻求帮助,谢谢。
发布于 2013-10-16 18:45:20
我没有使用scipy.io.wavfile的经验。
但是,如果音频数据是int32,这意味着动态范围应为2147483648-2147483647,这将使1063值具有4.95e-07的振幅,即使您的硬件可以准确地渲染它,也应该是听不到的。
我也对你的采样率感到困惑。在每秒11025个采样的情况下,您显示的160个采样(假设是单声道音频)将产生14毫秒的声音。这么短的声音,即使它的振幅是你能听到的,在它开始播放之前就几乎结束了。
https://stackoverflow.com/questions/19398631
复制相似问题