本文的脚本还是关于统计,上一次提供了针对某一层的统计信息(Praat脚本 | 基本的信息统计),可以帮助我们了解自己标注的具体情况,可以检查标注的信息是否有错误。本次提供一个Python
脚本还是关于统计的,除了单独了解每一层的标注信息,我们有时候还想了解某个字或者词,在我们的音库里标注了几种情况的发音。比如print
这个词或者“卡”
这个字,我们想了解总共有几种发音形式?
有人可能会好奇这么做的意义,因为几乎每个词每个字基本都有固定的发音?!但很多语言的字词都会有复杂的发音体系,也就是发音并不唯一;再者说,你所面对的音库,就每个发音人来说,他/她也总会在语流中,表现出很多不符合标准发音的样本。这次的脚本就是可以做到统计以字或者词为单位的发音情况。
笔者尝试使用Praat
脚本来实现,但是未能达到目的,Praat
在处理这类问题时显示比较无力。或许有人会有更好的方法也可以提出来讨论。所以本文使用的是Python
脚本来实现,这个脚本程序用到了前面介绍的使用Python
读取TextGrid
的一个开源包,如果不清楚的请查阅一下(Python | 如何优雅的使用Python读取TextGrid文件)。
使用这个脚本可以先使用这两套开源数据试一下,下载地址在https://github.com/feelins/Praat_Scripts/tree/master/data
, 关于这两套数据的详细说明可通过关注微信公众号“语音处理小站“,查找一篇”推荐|中文普通话和英语开源数据“
的文章。
代码段:
首先建立一个常规的Python文件
。比如示例中使用的a02_stats_complex_infos.py
,第一句命令,如下将这个textgrid包
读进来命名为tg。
import textgrid as tg
紧接着,要确定你所用的TextGrid
包括两层
,一层是字或者词信息,一层是它的发音音素,如下图。
这里要确定你的标注文件两层的名称,即图上右侧的Phon
和Word
,这个要设置一下程序里的这个位置,这里是区分大小写的。
ph_tiers = tg.read_textgrid(input_textgrid_file, 'Phon')
wd_tiers = tg.read_textgrid(input_textgrid_file, 'Word')
然后打开Python
程序,设置输入的TextGrid
目录,以及要保存的结果路径。
input_textgrid_dir = r'E:\006_TTS\biaobei\CMU_Demo'
save_result_file = r'E:\006_TTS\biaobei\CMU_Demo_complex.txt'
然后使用你熟悉的方式运行Python
代码,打开结果文件,将会看到统计结果。可见,有的字是明确一个读音的,而有的字,可能是多音字,也有可能是发音人读的两种读音,比如这里的切
字。
item | Value |
---|---|
与 | [‘v3’, ‘v2’] |
撒 | [‘sa4’] |
切 | [‘qie4’, ‘qie1’] |
尔 | [‘er3’] |
会 | [‘huei4’] |
… | … |
来看一下英语数据,
要注意这里的层级名称,一个是phones
,一个是words
,所以在代码里要同样设置:
ph_tiers = tg.read_textgrid(input_textgrid_file, 'phones')
wd_tiers = tg.read_textgrid(input_textgrid_file, 'words')
运行之后,我们得到以下结果,同样会发现一些词出现了多种读音,如them, on, and
…
item | Value |
---|---|
them | [‘DH AH0 M’, ‘DH EH1 M’] |
i | [‘AY1’] |
hope | [‘HH OW1 P’] |
i’ll | [‘AY1 L’] |
go | [‘G OW1’] |
on | [‘AO1 N’, ‘AA1 N’] |
seeing | [‘S IY1 IH0 NG’] |
forever | [‘F ER0 EH1 V ER0’] |
and | [‘AE1 N D’, ‘AH0 N D’] |
… | … |
如何获取脚本 https://github.com/feelins/Praat_Scripts
本站所有Praat脚本
都可以在上述github的项目目录
里找到,如果日常对代码、脚本操作比较熟练的可通过下载、安装、配置github for windows
在自己的电脑上通过git clone
将代码下载到本机,这样的好处是可以跟主站及时更新代码。
不想费如此脑筋,可以通过点击如下图1位置所示,下载整站的代码,也可直接使用。
本文的代码是00-Python/a02_stats_complex_infos.py
,点进去之后,还有附带的示例文件,同学可练习使用。脚本里有我的邮箱,有任何问题都可以来信咨询。
关注
关于对本站脚本的使用咨询,以及功能修改,增加等,都可以扫QQ咨询群,私信群主。
版权说明
1、版权归本公众号“极地语音工作室”,原名“语音处理小站”所有;
2、未经本站或者作者允许, 不得任意转载本文内容,否则将视为侵权;
3、转载或者引用本文内容请注明来源及原作者;
4、对于不遵守此声明或者其他违法使用本站内容者,本人依法保留追究权等。