#作者: #目的:提取带有标注的语音文件各音节的共振峰数据,从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