2017-10-15 35 views
2

처음 게시 할 때 이것이 어떻게되는지보십시오.파이썬을 사용하여 wav 파일에 무성 프레임 추가

파이썬에서 wav 파일의 시작 부분에 두 번째 침묵을 추가하는 스크립트를 작성하려고했지만 지금까지는 실패했습니다.

내가하려는 것은 웨이브 헤더에서 읽은 다음 웨이브 모듈을 사용하여 처음에 \ 0을 추가하는 것입니다.하지만 그다지 잘 작동하지 않습니다. 여기에 내가 오디오 아이폰에 입력과 동일하지 않습니다으로 침묵을 추가하려고하면 오류가 생긴다 위의 코드를 사용하여 http://andrewslotnick.com/posts/audio-delay-with-python.html

import wave 
from audioop import add 

def input_wave(filename,frames=10000000): #10000000 is an arbitrary large number of frames 
    wave_file = wave.open(filename,'rb') 
    params=wave_file.getparams() 
    audio=wave_file.readframes(frames) 
    wave_file.close() 

    return params, audio 

#output to file so we can use ipython notebook's Audio widget 
def output_wave(audio, params, stem, suffix): 
    #dynamically format the filename by passing in data 
    filename=stem.replace('.wav','_{}.wav'.format(suffix)) 
    wave_file = wave.open(filename,'wb') 
    wave_file.setparams(params) 
    wave_file.writeframes(audio) 

# delay the audio 
def delay(audio_bytes,params,offset_ms): 
    """version 1: delay after 'offset_ms' milliseconds""" 
    #calculate the number of bytes which corresponds to the offset in milliseconds 
    offset= params[0]*offset_ms*int(params[2]/1000) 
    #create some silence 
    beginning= b'\0' 
    #remove space from the end 
    end= audio_bytes   
    return add(audio_bytes, beginning+end, params[0]) 

audio_params, aduio_bytes = input_wave(<audio_file>) 
output_wave(delay(aduio_bytes,audio_params,10000), audio_params, <audio_file>, <audio_file_suffics>) 

여기에서 기반 코드입니다.

저는 오디오 프로세싱에 새로운 것이므로 지금은 무엇이든 시도하고 있습니다.

어떤 조언이나 아이디어에 접근하는 것이 좋습니다 :). 또한 내가 파이썬에게 2.7.5

많은 감사를 사용하고

.

답변

1

이러한 종류의 오디오 조작을 최소한의 코드로 쉽게 수행 할 수있는 라이브러리가 있습니다. 하나는 pydub입니다.

당신은 아래 pydub를 설치하고 종속성에 대한 세부 사항 here
pip install pydub

, 당신은, (이 경우 wav)을 다른 오디오 포맷을 읽을 오디오 세그먼트로 변환 한 후 조작을 수행하거나 할 수 pydub를 사용하는 단순히 그것을 재생하십시오.

또한 설정 기간의 자동 오디오 세그먼트를 만들고 '+'연산자가있는 두 세그먼트를 추가 할 수 있습니다.

소스 코드 함께 16 진수 값의 무리를 결합하고 특정 오디오 값을 쓰고 다음 방법 낫 네요

from pydub import AudioSegment 
from pydub.playback import play 

audio_in_file = "in_sine.wav" 
audio_out_file = "out_sine.wav" 

# create 1 sec of silence audio segment 
one_sec_segment = AudioSegment.silent(duration=1000) #duration in milliseconds 

#read wav file to an audio segment 
song = AudioSegment.from_wav(audio_in_file) 

#Add above two audio segments  
final_song = one_sec_segment + song 

#Either save modified audio 
final_song.export(audio_out_file, format="wav") 

#Or Play modified audio 
play(final_song) 
+0

쿨 감사합니다. 기분 좋게 움직여주세요. – Madmax