簡體   English   中英

praat-刪除段

[英]praat - delete segment

我有幾個語音文件,我需要將聲音文件的特定部分從0.21毫秒減少到0.45毫秒。 下面的腳本將在0.21毫秒到0.45毫秒之間選擇聲音片段並保存。 我想從語音文件中剪切片段,然后不帶它保存。 我可能應該在“將選擇的結束點移動到最近的零交叉點”之后添加另一行,並更改“寫選擇的聲音...”,但是我不確定該怎么精確。

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 

我想從語音文件中剪切片段,然后在沒有片段的情況下保存它

目前尚不清楚您要對已刪除的細分受眾群做什么。 您是要編輯它(例如,縮短聲音的總持續時間?)還是簡單地使其靜音(例如,將其中的采樣設置為零?)。

無論哪種方式,您都不需要打開聲音編輯器(帶有聲波和頻譜圖的窗口)。 下面,我用一些替代方法復制了您的腳本(並更新了語法)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM