mx_提取语音文件共振峰数据(F1-F3)Hz

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#作者:
#目的:提取带有标注的语音文件各音节的共振峰数据,从F1到F3
#start:09.9.14

form 基本设置
comment 路径设置
sentence sound_File_Path F:\课程\实验语音学前沿\单音节(M01-M15)\m01\sounds
sentence textGrid_File_Path F:\课程\实验语音学前沿\单音节(M01-M15)\m01\TextGrid(handy)
sentence save_File_Path F:\课程\实验语音学前沿\单音节(M01-M15)\saveFile
comment 标注文件设置
natural sy_Tier 1
natural py_Tier 2
comment 发音人特征
choice informant_character: 1
button 男
button 女
button 小孩
comment 保存文件名称
sentence save_File_Name
endform

#提取对话框中的数据
sFilePath$=sound_File_Path$
tFilePath$=textGrid_File_Path$
saveFilePath$=save_File_Path$
syTier=sy_Tier
pyTier=py_Tier
type=informant_character
saveFileName$=save_File_Name$

if right$(tFilePath$,1)<>"\"
tFilePath$=tFilePath$+"\"
endif

if right$(sFilePath$,1)<>"\"
sFilePath$=sFilePath$+"\"
endif

if right$(saveFilePath$,1)<>"\"
saveFilePath$=saveFilePath$+"\"
endif
saveFile$=saveFilePath$+saveFileName$+".csv"
filedelete 'saveFile$'
fileappend 'saveFile$' 文件路径,音节序号,音节,声母,韵母,声调,第一共振峰(Hz),第二共振峰(Hz),第三共振峰(Hz)'newline$'
#创建文件名列表,逐个分析

Create Strings as file list... fileList 'sFilePath$'*.wav
numOfFiles=Get number of strings
for iFile from 1 to numOfFiles
select Strings fileList
fileName$=Get string... 'iFile'
objectName$=fileName$-".wav"
sFileName$=sFilePath$+objectName$+".wav"
tFileName$=tFilePath$+objectName$+".TextGrid"

Read from file... 'sFileName$'
if type=1
topFre=5000
elsif type=2
topFre=5500
else
topFre=8000
endif
To Formant (burg)... 0 5 'topFre' 0.025 50
Read from file... 'tFileName$'
numOfSyl=Get number of intervals... 'pyTier'
seqOfSyl=0
for iSyl from 1 to numOfSyl
select TextGrid 'objectName$'
syl$=Get label of interval... 'pyTier' 'iSyl'
if syl$<>"silb" and syl$<>"sile"
seqOfSyl=seqOfSyl+1
sTOfSyl=Get starting point... 'pyTier' 'iSyl'
eTOfSyl=Get end point... 'pyTier' 'iSyl'
sTInIni=sTOfSyl+0.005
eTInRhy=eTOfSyl-0.01

seqOfIniInSy=Get interval at time... 'syTier' 'sTInIni'
seqOfFinInSy=Get interval at time... 'syTier' 'eTInRhy'
ini$=Get label of interval... 'syTier' 'seqOfIniInSy'
fin$=Get label of interval... 'syTier' 'seqOfFinInSy'
if ini$=fin$
ini$="Zero"
endif
tone$=right$(syl$,1)
fin$=left$(fin$,length(fin$)-1)
syl$=left$(syl$,length(syl$)-1)


sT=Get starting point... 'syTier' 'seqOfFinInSy'
eT=Get end point... 'syTier' 'seqOfFinInSy'
midT=(sT+eT)/2

#提取midT位置的共振峰数据
select Formant 'objectName$'
fOne=Get value at time... 1 'midT' Hertz Linear
fTwo=Get value at time... 2 'midT' Hertz Linear
fThr=Get value at time... 3 'midT' Hertz Linear


#输出文件
fileappend 'saveFile$' 'sFileName$','seqOfSyl','syl$','ini$','fin$','tone$','fOne','fTwo','fThr''newline$'
endif
endfor
select TextGrid 'objectName$'
Remove
select Formant 'objectName$'
Remove
select Sound 'objectName$'
Remove

endfor

select Strings fileList
Remove

相关文档
最新文档