audio - praat - 删除段

标签 audio praat

我有几个语音文件,我需要剪切声音文件的某个部分,从 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 

最佳答案

I want to cut the segment from the speech file and then save it without it



目前尚不清楚您想对已删除的片段做什么。您是要编辑它(例如,缩短声音的总持续时间?)还是简单地将其静音(例如将其中包含的样本设置为零?)。

无论哪种方式,您都不需要打开声音编辑器(带有声波和频谱图的窗口)。下面我用一些替代方法复制了你的脚本(并更新了语法)。
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

关于audio - praat - 删除段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446347/

相关文章:

audio - 使用Praat脚本,我如何通过静默方式分割wav文件,然后将语音剪辑连接成较小的wav文件?

javascript - 第一次播放后,循环中的howler js音量 slider 不起作用

Android 快速路径音频环回

javascript - 使用 Javascript 原生音频库延迟大文件

audio - 如何获取 .wav 文件的特定频率和时间值并将值导出为 .csv

scripting - Praat 脚本 : creating a text file

actionscript-3 - 此类如何与声音连接?

jquery - HTML5 jQuery 音频播放器

audio - 使用Praat或任何其他音频处理工具从textGrid创建文本文件

audio - 从连续 wav 文件中提取单独单词的时间