2013-10-16 4 views
1

w32 파일을 int32 데이터 형식으로 쓰고 샘플 속도가 11025이지만 재생시 출력 wav 파일이 소리가 나지 않습니다.왜 파이썬에서 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 파일 데이터 시퀀스가 ​​아닌 경우 정상보다 0이 적은 시퀀스가 ​​있기 때문에?

내가하고있는 일은 한 곡에만 30 곡을 결합하는 것처럼 음악을 배우는 것이지만 내가 만든 한 곡을 재생할 때 소리가 들리지 않습니다. 도움을 청했습니다. 감사합니다.

답변

0

scipy.io.wavfile에 대한 경험이 없습니다.

그러나 오디오 데이터가 int32 인 경우, 동적 범위가 [2147483648 ..- 2147483647]가되어 1063의 값이 4.95e-07의 진폭을 가지며 이는 사용자의 경우에도 들리지 않아야 함을 의미합니다. 하드웨어가 정확하게 렌더링 할 수 있습니다.

나는 또한 샘플링 속도에 당황 스럽다. 초당 11025 샘플 (1 채널 오디오를 가정 할 때)에 표시되는 160 개의 샘플은 14 밀리 초의 사운드를 생성합니다. 이 짧은 소리는 비록 진폭이 커도 연주가 시작되기 전에 거의 끝날 것입니다.

+0

내 시퀀스는 표시 할 값이 너무 커 all.cause의 바로 가기입니다. 그리고 크기가 500 * 11025 (int32) 인 500 초 파형 파일을 가지고 있고 그것을 연주 할 때 청취하지 않는 것이 있습니다. 정상적인 파형 파일을 재생하면 소리가납니다. 그래서 나는 그것을 인쇄하고 그것을 설명하는 방법을 찾으려고 노력합니다. 나는 당신이 범위를 말했고, 나는 파형에 대해 좋은 경험이 없다고 생각할 것이다. 고맙습니다. – user2858910