目录
- 引题
- 方案一
- 方案二
- 方案三
- 获取脚本
- 关注
- 版权说明
引题
Praat
是一种非常出色、轻便、开源免费的标注工具,它的最主要用途是标注,即对语音信号中的一些特征、信息进行标注,保存为TextGrid
文件,这个TextGrid
文件实质 上就是一种文本文件。
这个标注的使用者也主要是有经验的语言学专家,或者一些研究者等,在实际的工程利用中,工程师通常要处理的是直接的文本或者转化成某种格式的文件,因为TextGrid
里有很多冗余的行、标记、符号等,通常不会直接拿TextGrid
文件去直接训练模型或者做大数据的处理,这就涉及到如何将TextGrid
信息提取出来,比如我们保存成一个整体的文本,或者象在前面的文章中提到 可以保存为Json文件
。
Praat脚本-032 | Praat脚本批量转化TextGrid格式为json格式
今天我们学习另外一种保存方案,即将它保存为一种信息文本,可以根据一些公司使用的习惯称为韵律文本。
000001.TextGrid
卡 尔 普2 陪 外 孙1 玩 滑 梯4。
sil k+a2 er2 p+u3 p+ei2 uai4 s+uen1 uan2 h+ua2 t+i1 sil
000002.TextGrid
假 语 村 言2 别 再1 拥 抱 我4。
sil j+ia2 v3 c+uen1 ian2 b+ie2 z+ai4 iong1 b+ao4 uo3 sil
000003.TextGrid
宝 马1 配 挂1 跛 骡 鞍3, 貂 蝉1 怨 枕2 董 翁 榻4。
sil b+ao2 m+a3 p+ei4 g+ua4 b+o3 l+uo2 an1+sp1 d+iao1 ch+an2 van4 zh+en3 d+ong3 ueng1 t+a4 sil
000004.TextGrid
邓 小 平2 与1 撒 切 尔2 会 晤4。
sil d+eng4 x+iao3 p+ing2 v3 s+a4 q+ie4 er3 h+uei4 u4 sil
000005.TextGrid
老 虎1 幼 崽2 与1 宠 物 犬1 玩 耍4。
sil l+ao2 h+u3 iou4 z+ai3+sp1 v2 ch+ong3 u4 q+van3 uan2 sh+ua3 sil
000006.TextGrid
身 长2 约1 五 尺1 二 寸1 五 分2 或1 以 上4。
sil sh+en1 ch+ang2 ve1 u2 ch+iii3 er4 c+uen4 u3 f+en1 h+uo4 i3 sh+ang4 sil
这样处理有一个什么好处呢?我们标注的信息,大部分信息(除了时间点信息,后续会提供脚本涉及到)都会保存在一个文件里,便于传输、转换、检索、演示、统计等,举例:
- 我们想搜索某一个读音;
- 我们想搜索某个读音都是与哪些词有对应关系的;
- 我们想让对方了解自己标注的所有文件的整体概况;
接下来我们演示如何将我们标注的TextGrid
,转化为这样的文本,笔者考虑了三种情况。这个脚本在git
目录(具体地址见本文最后)里的第37个脚本
。37-textgrid_to_rhythm_txt\TextGrid_to_Rhythm_TXT.Praat
。
方案一
我们先考虑中文标注的情况,假设我们有两层最基本的标注,一层是读音音素信息,一层是汉字层。具体标注形式为:
这里我们想提示一下有这几个信息需要关注,第一是因为这里采用的是标贝公司的开源标注数据,这些数据的汉字层是有停顿边界的,即那些1,2,3,4等;第二是在拼音层声调是以数字的形式标注的;第三就是我们在生成拼音这层信息的时候,期望能够保存声母+韵母的结构,便于我们后续使用。
现在打开Praat
运行脚本,Praat->Open Script->TextGrid_to_Rhythm_TXT.Praat
- 在第一个输入框内输入
TextGrid
所在的目录,本文脚本只是对TextGrid
进行操作,目录里无需有对应的音频,由于目录是和脚本在同一个目录下,所以没有加任何的路径信息,其它同学在使用时也可以清空这个目录的数据,将你的TextGrid
放到这个目录里进行操作; - 第二个文本框内,是输出的韵律文本的保存路径,同上,因为在同一个目录下,只需要写一下文件名称就可以 了;
- 这里需要输入你的文字(英语是指词)的层的数字,如上图所示,我们这批中文标注,文字是在第
2
层; - 这里需要输入你的音素的层的数字,如上图所示,我们这批中文标注,音素是在第
1
层; - 在本方案中,最后一个输入保持是
0
不变,这里后面的其它方案会用到; - 设置完毕,点击
OK
运行脚本。
最后,我们得到了如下的输出文件:
方案二
我们考虑英语标注的情况,也是假设我们有两层最基本的标注,一层是读音音素信息,一层是英语单词层。具体标注形式为:
这里我们想提示一下有这几个信息需要关注,第一是这里采用的是LibriSpeech
的开源数据,这些音频数据通过自动标注(做数据自动标注的,公众号后台咨询)生成以上信息;第二是在音素层是有词重音信息的;第三就是我们在生成音素这层信息的时候,是直接将音素用+号连接起来,后续我们也会推出脚本如何对英语音素划分音节。
现在打开Praat
运行脚本,Praat->Open Script->TextGrid_to_Rhythm_TXT.Praat
- 在第一个输入框内输入
TextGrid
所在的目录,本文脚本只是对TextGrid
进行操作,目录里无需有对应的音频,由于目录是和脚本在同一个目录下,所以没有加任何的路径信息,其它同学在使用时也可以清空这个目录的数据,将你的TextGrid
放到这个目录里进行操作; - 第二个文本框内,是输出的韵律文本的保存路径,也是同上,因为在同一个目录下,只需要写一下文件名称就可以 了;
- 这里需要输入你的词的层的数字,如上图所示,我们这批英语标注,词是在第
1
层; - 这里需要输入你的音素的层的数字,如上图所示,我们这批英语标注,音素是在第
2
层; - 在本方案中,最后一个输入保持是
0
不变,这里后面的其它方案会用到; - 设置完毕,点击
OK
运行脚本。
最后,我们得到了如下的输出文件:
方案三
这里我们增加一点小功能,有一些学者在标注的时候可能会用到一种叫做Point Tier
的功能,比如以前面的中文标注为例:
这里的第三层,是一种Point Tier
的形式,它跟我们常用的Interval Point
形式不同,标注信息在一个边界条的中间。注意这里只是示例方便,将所有的Point Tier
都标注在了一个前两层信息的最后一个边界上,有些人习惯于将这个Point Tier
要标在一个字、或者音素的中间位置,这种情况其实在生成信息、提取信息时很不方便,在这里没有去探讨这样的做法。
现在打开Praat
运行脚本,Praat->Open Script->TextGrid_to_Rhythm_TXT.Praat
- 在第一个输入框内输入
TextGrid
所在的目录,本文脚本只是对TextGrid
进行操作,目录里无需有对应的音频,由于目录是和脚本在同一个目录下,所以没有加任何的路径信息,其它同学在使用时也可以清空这个目录的数据,将你的TextGrid
放到这个目录里进行操作; - 第二个文本框内,是输出的韵律文本的保存路径,也是同上,因为在同一个目录下,只需要写一下文件名称就可以 了;
- 这里需要输入你的文字(英语是指词)的层的数字,如上图所示,我们这批中文标注,文字是在第
2
层; - 这里需要输入你的音素的层的数字,如上图所示,我们这批中文标注,音素是在第
1
层; - 在本方案中,最后一个输入要改为
3
,代表这里有一个第3
层的Point Tier
信息要提取; - 设置完毕,点击
OK
运行脚本。
最后,我们得到了如下的输出文件,我们将Point Tier
的信息放在了字这一层的相应的字后面加了括号:
总之,脚本想再全面也不可能覆盖所有的情况,如果确实有类似的需求,而你的标注是比较复杂的,可以加入QQ咨询群,或者在公众号后台发信息。
获取脚本
https://github.com/feelins/Praat_Scripts
本站所有Praat脚本
都可以在上述github的项目目录
里找到,如果日常对代码、脚本操作比较熟练的可通过下载、安装、配置github for windows
在自己的电脑上通过git clone
将代码下载到本机,这样的好处是可以跟主站及时更新代码。
不想费如此脑筋,可以通过点击如下图Code位置所示,下载整站的代码,可直接使用。
关注
版权说明
1、版权归本博客作者所有;
2、未经本站或者作者允许, 不得任意转载本文内容,否则将视为侵权;
3、转载或者引用本文内容请注明来源及原作者;
4、对于不遵守此声明或者其他违法使用本站内容者,本人依法保留追究权等。