2016-11-06 2 views
0

나는 여러 개의 음성 파일을 가지고 있으며 사운드 파일의 특정 부분을 0.21 밀리 초에서 0.45 밀리 초로 자릅니다. 아래 스크립트는 0.21 밀리 초에서 0.45 밀리 초 사이의 사운드 세그먼트를 선택하고 저장합니다. 나는 연설 파일에서 세그먼트를 자르고 그것없이 그것을 저장하고 싶다. 아마도 "선택 끝을 가장 가까운 제로 크로싱"으로 이동하고 "선택한 사운드 쓰기 ..."를 변경 한 후에 다른 라인을 추가해야 할 것입니다. 그러나 정확히 어떻게 확신 할 수 없습니다.praat - 세그먼트 삭제

form Files 
    sentence InputDir ./ 
endform 

createDirectory ("output") 
Create Strings as file list... list 'inputDir$'*.wav 
numberOfFiles = Get number of strings 

for ifile to numberOfFiles 

    select Strings list 
    fileName$ = Get string... ifile 
    Read from file... 'inputDir$''fileName$' 
    sound_name$ = selected$ ("Sound") 

     select Sound 'sound_name$' 
     Edit 
     editor Sound 'sound_name$' 
     Select... 0.21 0.45 
     Move start of selection to nearest zero crossing 
     Move end of selection to nearest zero crossing 
     Write selected sound to WAV file... ./output/'fileName$' 
     endeditor 

    select all 
    minus Strings list 
    Remove 

endfor 

select all 
Remove 

답변

0

나는 음성 파일에서 세그먼트를 절단하고 당신이 삭제 된 세그먼트에 수행 할 작업 분명하지 않다

없이 저장하고 싶습니다. 소리의 총 지속 시간을 줄이거 나 편집하거나 소리를 없애고 싶습니까? (0에 포함 된 샘플을 설정하는 것처럼?)

어쨌든 사운드 에디터 (사운드 웨이브와 스펙트로 그램이있는 윈도우)를 열 필요는 없습니다. 아래에서는 몇 가지 대안을 사용하여 스크립트를 재현했습니다 (구문을 업데이트했습니다).

form Files 
    sentence Input_dir ./ 
    positive Start 0.21 
    positive End 0.45 
endform 

createDirectory("output") 
list = Create Strings as file list: "list", input_dir$ + "*.wav" 
numberOfFiles = Get number of strings 

for ifile to numberOfFiles 
    selectObject: list 
    fileName$ = Get string: ifile 
    sound = Read from file: input_dir$ + fileName$ 
    sound_name$ = selected$("Sound") 

    # Find zero crossings 
    start = Get nearest zero crossing: 1, start 
    end = Get nearest zero crossing: 1, end 
    sound_end = Get total duration 

    # Cut the selected part out, shortening the sound 
    # by extracting the part before and after and concatenating 
    before = Extract part: 0, start, "rectangular", 1, "no" 
    selectObject: sound 
    after = Extract part: end, sound_end, "rectangular", 1, "no" 
    selectObject: before, after 
    new = Concatenate 
    removeObject: before, after 

    ## Or, if you want to set the selected part to zero 
    ## (since we already have the zero crossings) 
    # new = Set part to zero: start, end, "at exactly these times" 

    ## Or, if what you want is to get only the selected part 
    ## and not the original sound 
    # new = Extract part: start, end, "rectangular", 1, "no" 

    # Either way, the new, modified sound is selected 
    # and its ID is stored in `new` 

    Save as WAV file: "./output/" + fileName$ 

    # I prefer a less shotgunny way to remove unwanted objects 
    removeObject: sound, new 
endfor 

removeObject: list