我用int32数据类型编写wav文件,采样率为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首歌曲合并为一首歌,但是当我播放我制作的一首歌时,没有声音。 寻求帮助,谢谢。
答案 0 :(得分:0)
我对scipy.io.wavfile没有经验。
但是,音频数据是int32,这意味着动态范围应该跨越[2147483648 ..- 2147483647],这将使得1063的值具有4.95e-07的幅度,即使您的硬件也应该听不到可以准确地呈现它。
我也对你的采样率感到困惑。在每秒11025个样本中,您显示的160个样本(假设是单声道音频)将产生14毫秒的声音。声音如此短暂,即使它处于你能听到的振幅,也会在它开始播放之前几乎结束。