Praat编程基础王华朋中国刑警学院声像系Huapeng.wang@gmail.comPraatscripting•Praat是一个语音分析软件•可以在多个平台上运行(Windows,Macintosh,Unix,Linux)•可以在下面的网址免费下载•包含代码编写语言Praatscripts•可以完成手工可以完成的任何事–打开,保存,重命名文件,音频格式转换等.–测量共振峰,F0,etc.–合成时长,F0,etc.–绘图–标注–提供冲击并记录响应–频谱分析,语图分析为什么要在Praat中编程?•节约时间•防止出错(typos,datatransfererrors)•使错误快速的得到更改•允许你操作多个不同的参数详细Praat编程指南在下面网页(Praatwebpage):或者在Praat软件中寻找Help|PraatintroSearch:scriptingKeepinmind…•修改一个已经存在的脚本比自己重新编写一个简单.•网络上免费的网址:~welby/PAGES/praat.html(PaulineWelby,inFrenchandEnglish)–(CedricGendrot,inFrench)–~lennes/praat-scripts(MiettaLennes,inEnglish)–(HélèneLoevenbruck,inFrench)–(JohnTøndering,inEnglish)–~kyoon/scripts/praat(KyuchulYoon,inEnglish)Also,tryaGooglesearch.打开一个Praatscript•在Praat中打开一个已经存在的脚本:Praat|Openscript...•注意:与打开声音文件和标注文件(TextGridfiles)不同。(Read|Readfromfile…)Let’stryit…•打开一个目录里的所有声音文件•可以手工打开(缓慢且痛苦)•还可以用脚本打开:readin-files-simple.praat-Praat|Openscript...-选择合适目录,寻找下面的脚本readin-files-simple.praatScript中的元素备注–允许你描述每段脚本的功能–非常好,可以帮助自己和他人理解脚本•对测试和诊断程序也非常有用•Praat备注符号:#•Praat忽略每行之前有#的语句•下面这行读入一个声音文件:Readfromfile...finger.wav•下面这一行什么也不做!#Readfromfile...finger.wavScript中的元素•对象(可操作)–对象窗口里面的任何一个(左侧)–文件–数字–字符等…Script中的元素•变量(atypeofobject)–存储数值–Examples:•ifile•numberOfFiles•fileName$–Types:数字,字符(文本),逻辑数(yes/noor1/0)–命名规则:•以小写字符开始•不留空字符•字符变量必须以‘$’结尾Script中的元素•函数(existinPraatwindowmenus)–Readfromfile…–Writetofile…–Remove–Play一些函数只对在特定环境里的几种特定的对象有效(e.g.,Editwindow).命名规则:-经常以大写字符开头-可以包含空格-函数的参数放在三个点之后(…)Script中的元素•命令(specifictoPraatscriptinglanguage)–form,endform建立对话框–select选择–print打印–clearinfo–if,endif条件–for,endfor循环…命名规则:-以小写字符开头-一个单词创建一个新的脚本•Praat|Newscript历史记录•Praat监测操作者手动做了哪些内容•如果你想完成一些操作,但对语法不确定,按照以下来做:–在脚本窗口:Edit|Clearhistory–在对象窗口,选择要处理的对象,并进行需要的操作。(Query|Getduration)–在脚本窗口,复制历史记录(Edit|Pastehistory)Loops循环•运行命令和函数重复执行(比如文件列表)•下面为循环命令:for,endforrepeat,until(还有其他的命令)Bug跟踪•错误信息可以是非常明显的…•但经常不是这样的!•实际中经常需要修改:–丢掉$,错误拼写/错误大小写变量,hardreturninform,…•使用print命令打印错误信息在信息窗口,以寻找bug.E.g.:–printgothere'newline$’–print‘baseFile’'newline$’•修改和检测同时进行•备份可以使用的脚本注意!•不要删除或覆盖重要的文件!•脚本可以瞬间删除长期以来的工作积累•备份数据•当写或修改一个新脚本时,最好在一个临时的路径总