2016-11-06 12 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

私はそれはあなたが削除されたセグメントに何をしたいのかはっきりしない音声ファイルからセグメントをカットし、それなしで

を、それを保存したいです。それを編集したい(音の総持続時間を短くするなど)か、それとも単純に消音したいのですか?

いずれにせよ、サウンドエディタ(音波とスペクトログラムのウィンドウ)を開く必要はありません。以下では、いくつかの選択肢を使ってスクリプトを再現しました(そして構文を更新しました)。

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 
関連する問題