# Praat script: SegmentLongWAVFilesToSmallOnes.praat # Author: Pengfei Shao # Version: 2014/5/28 14:16:00 # Praat Version 6.0.19 # Purpose: Divide the discourse into slices according to the label of Tier # # Requires: # # Version History: # 2014/5/28: Praat script is created. # 2016/08/19: Change to Simple version. ################################################## form dialogue comment 请输入源声音文件和标注文件所在目录: text openpath C:\Users\Administrator\Desktop\Test\ToDo comment 请输入切分后声音保存目录: text savepath C:\Users\Administrator\Desktop\Test\Over comment 请输入标记所在层级及标记内容: positive tier_number 1 sentence mark_string comment 请输入数字位数: positive limit 4 comment 生成一个文件名列表 text saveTXTpath C:\Users\Administrator\Desktop\Test\list.txt endform if right$(openpath$,1) <> "\" openpath$ = openpath$ + "\" endif if right$(savepath$,1) <> "\" savepath$ = savepath$ + "\" endif createDirectory: savepath$ deleteFile: saveTXTpath$ Create Strings as file list: "fileList", openpath$ + "*.wav" numofFiles = Get number of strings for i from 1 to numofFiles selectObject: "Strings fileList" fileName$ = Get string: i order = 1 Read from file: openpath$ + fileName$ nameOfFile$ = selected$("Sound") textgridNameOfFile$ = nameOfFile$ + ".TextGrid" Read from file: openpath$ + textgridNameOfFile$ numOfIntervals = Get number of intervals: tier_number for j from 1 to numOfIntervals selectObject: "TextGrid " + nameOfFile$ startTime = Get start point: tier_number, j endTime = Get end point: tier_number, j labelOfInterval$ = Get label of interval: tier_number, j if (labelOfInterval$ = mark_string$ and mark_string$ <> "") or (labelOfInterval$ <> "" and mark_string$ = "") #####将范围根据标的情况前后分别扩大0.3秒 startTime1 = startTime - 0.3 endTime1 = endTime + 0.3 Extract part: startTime1, endTime1, "no" selectObject: "Sound " + nameOfFile$ Extract part: startTime1, endTime1, "rectangular", 1, "no" ## 这一段得到一个序号的前面填充0的N位整齐数字 temp = order ii = 0 repeat temp = temp div 10 ii = ii + 1 until temp = 0 sumtemp = limit - ii mark$ = "" for jjj from 1 to sumtemp mark$ = mark$ + "0" endfor mark$ = mark$ + string$(order) ## selectObject: "Sound " + nameOfFile$ + "_part" Save as WAV file: savepath$ + nameOfFile$ + "_" + mark$ + ".wav" appendFileLine: saveTXTpath$, nameOfFile$ + "_" + mark$ + ".wav" selectObject: "Sound " + nameOfFile$ + "_part" Remove selectObject: "TextGrid " + nameOfFile$ + "_part" Remove order = order + 1 endif endfor selectObject: "TextGrid " + nameOfFile$ Remove selectObject: "Sound " + nameOfFile$ Remove endfor select Strings fileList Remove exit Over!