![](/img/trans.png)
[英]How to automatically extract pitch range from .wav files in PRAAT and put them all in a .csv file?
[英]concatenating multiple wav files in praat
我有一個包含從1到20的wav文件的文件夾,例如1.wav,2.wav .....,20.wav等。我想串行連接它,但不是串行連接。 請提出一些幫助
我正在使用此代碼:
form Concatenate sound files
comment Directory of input sound files
text Sound_directory C:\temp\
sentence Sound_file_extension .wav
comment Save the final file as
text Save_as C:\temp\temp.wav
endform
# Here, you make a listing of all the sound files in the specified directory.
Create Strings as file list... list 'sound_directory$'*'sound_file_extension$'
numberOfFiles = Get number of strings
for ifile to numberOfFiles
select Strings list
filename$ = Get string... ifile
# A sound file is opened from the listing:
Read from file... 'sound_directory$''filename$'
endfor
# Now, concatenate all files into a single file
select all
minus Strings list
Concatenate
# And save the resulting file
Write to WAV file... 'save_as$'
select all
Remove
也許有些令人費解,但是您也可以對Table
使用Sort
命令來模擬Strings
的一種通用排序。 我已經用幾個測試用例進行了嘗試,它看起來做得很好(對於黑客來說)。
我添加了對多個Strings
支持以及不區分大小寫的排序選項。 選項的默認值是需要最少工作量的選項。 這是腳本:
form Generic sort...
boolean Numeric_first yes
boolean Case_sensitive yes
endform
n = numberOfSelected("Strings")
for i to n
strings[i] = selected("Strings", i)
endfor
for i to n
# stopwatch
selectObject(strings[i])
nstrings = Get number of strings
# Create an empty table
cols$ = "num str"
if !case_sensitive
cols$ = cols$ + " lc"
endif
table = Create Table with column names: "nums", nstrings, cols$
# Populate the table with the strings or their number versions where possible
for row to nstrings
selectObject(strings[i])
s$ = Get string: row
s = number(s$)
selectObject(table)
Set string value: row, "str", s$
if !case_sensitive
Set string value: row, "lc", replace_regex$(s$, "(.*)", "\L\1", 0)
endif
Set numeric value: row, "num", number(s$)
endfor
sort$ = "num " + if case_sensitive then "str" else "lc" fi
Sort rows: sort$
# Invert order for non-numeric strings first
if !numeric_first
selectObject(table)
nantable = nowarn Extract rows where column (text):
..."num", "is equal to", "--undefined--"
selectObject(table)
numtable = nowarn Extract rows where column (text):
..."num", "is not equal to", "--undefined--"
removeObject(table)
selectObject(nantable, numtable)
table = Append
removeObject(nantable, numtable)
endif
# Replace the original strings with the sorted list
selectObject(table)
for row to nstrings
selectObject(table)
s$ = Get value: row, "str"
selectObject(strings[i])
Set string: row, s$
endfor
# Clean-up
removeObject(table)
# selectObject(strings[i])
# name$ = selected$("Strings")
# time = stopwatch
# appendInfoLine("Sorted ", name$ , " in ", time)
endfor
# Restore selection
if n >= 1
selectObject(strings[1])
for i from 2 to n
plusObject(strings[i])
endfor
endif
我已經找到解決方案,當我創建字符串列表時,請創建字符串作為文件列表...
它按字母順序創建一個列表
所以您得到1.wav,10.wav,11.wav,... 2.wav,20.wav ...等,如果我將文件重命名為01.wav; 02.wav,以上代碼可以正常運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.