2014-03-31 5 views
2

파이썬 웨이브 모듈을 사용하여 특정 WAV 오디오 파일의 재생 속도 (증가 또는 감소)를 변경하고 싶습니다. WAV 파일의 재생 속도 증가/감소 Python

나는 것은 아래 시도 : 입력 파일의

  1. 읽기 프레임 속도를.
  2. 프레임 속도를 두 배로합니다.
  3. output_wave.setparams() 함수를 사용하여 증가 된 프레임 속도로 새 웨이브 파일을 작성하십시오.

하지만 제대로 작동하지 않습니다.

좋습니다. 사전에

감사합니다,

+0

a) 사용중인 코드를 게시 할 수 있고 b) 문제에 대한 자세한 설명 - 즉 * 어떻게 * 작동하지 않는가? – lvc

답변

4

와우!

속도를 높이거나 낮출 때 피치를 변경하지 않아도 샘플 속도를 변경할 수 있습니다.

import wave 

CHANNELS = 1 
swidth = 2 
Change_RATE = 2 

spf = wave.open('VOZ.wav', 'rb') 
RATE=spf.getframerate() 
signal = spf.readframes(-1) 

wf = wave.open('changed.wav', 'wb') 
wf.setnchannels(CHANNELS) 
wf.setsampwidth(swidth) 
wf.setframerate(RATE*Change_RATE) 
wf.writeframes(signal) 
wf.close() 

증가 또는 변수 Change_RATE 감소 :

파이썬을 사용하여 매우 간단 할 수있다!

이제 피치를 그대로 유지해야하는 경우 동일한 유형의 중복 추가 방법이 필요합니다.

+0

고마워! 이것은 내가 찾고 있던 것입니다 ... 고맙습니다! –

+0

또 다른 질문으로는 총 20000 프레임의 프레임 파일을 만들고 프레임 속도가 500 인 웨이브 파일을 만들면 wav 사운드의 시간은 40 초가되어야하지만 실제로는 1 분 19 초가됩니다. NUMBER_OF_FRAME = 20000 (1, 2, FRAME_RATE, NUMBER_OF_FRAME, 'NONE', '압축되지 않음') op = wave.open (' NUMBER_OF_FRAME) \t 다음 struct.pack 바이트 1 = ('H', randint (0255)) \t 다음 struct.pack 바이트 2 = ('H', randint (0255)) \t op.writeframes + 바이트 3 (바이트 1) OP. close() 왜 내가 무슨 일이야? –