Praat脚本-037 | 批量把标注TextGrid生成韵律文本

目录

  • 引题
  • 方案一
  • 方案二
  • 方案三
  • 获取脚本
  • 关注
  • 版权说明

引题

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

  1. 在第一个输入框内输入TextGrid所在的目录,本文脚本只是对TextGrid进行操作,目录里无需有对应的音频,由于目录是和脚本在同一个目录下,所以没有加任何的路径信息,其它同学在使用时也可以清空这个目录的数据,将你的TextGrid放到这个目录里进行操作;
  2. 第二个文本框内,是输出的韵律文本的保存路径,同上,因为在同一个目录下,只需要写一下文件名称就可以 了;
  3. 这里需要输入你的文字(英语是指词)的层的数字,如上图所示,我们这批中文标注,文字是在第2层;
  4. 这里需要输入你的音素的层的数字,如上图所示,我们这批中文标注,音素是在第1层;
  5. 在本方案中,最后一个输入保持是0不变,这里后面的其它方案会用到;
  6. 设置完毕,点击OK运行脚本。
    在这里插入图片描述
    最后,我们得到了如下的输出文件:
    在这里插入图片描述

方案二

我们考虑英语标注的情况,也是假设我们有两层最基本的标注,一层是读音音素信息,一层是英语单词层。具体标注形式为:

在这里插入图片描述

这里我们想提示一下有这几个信息需要关注,第一是这里采用的是LibriSpeech的开源数据,这些音频数据通过自动标注(做数据自动标注的,公众号后台咨询)生成以上信息;第二是在音素层是有词重音信息的;第三就是我们在生成音素这层信息的时候,是直接将音素用+号连接起来,后续我们也会推出脚本如何对英语音素划分音节。

现在打开Praat运行脚本,Praat->Open Script->TextGrid_to_Rhythm_TXT.Praat

  1. 在第一个输入框内输入TextGrid所在的目录,本文脚本只是对TextGrid进行操作,目录里无需有对应的音频,由于目录是和脚本在同一个目录下,所以没有加任何的路径信息,其它同学在使用时也可以清空这个目录的数据,将你的TextGrid放到这个目录里进行操作;
  2. 第二个文本框内,是输出的韵律文本的保存路径,也是同上,因为在同一个目录下,只需要写一下文件名称就可以 了;
  3. 这里需要输入你的词的层的数字,如上图所示,我们这批英语标注,词是在第1层;
  4. 这里需要输入你的音素的层的数字,如上图所示,我们这批英语标注,音素是在第2层;
  5. 在本方案中,最后一个输入保持是0不变,这里后面的其它方案会用到;
  6. 设置完毕,点击OK运行脚本。
    在这里插入图片描述

最后,我们得到了如下的输出文件:
在这里插入图片描述

方案三

这里我们增加一点小功能,有一些学者在标注的时候可能会用到一种叫做Point Tier的功能,比如以前面的中文标注为例:
在这里插入图片描述
这里的第三层,是一种Point Tier的形式,它跟我们常用的Interval Point形式不同,标注信息在一个边界条的中间。注意这里只是示例方便,将所有的Point Tier都标注在了一个前两层信息的最后一个边界上,有些人习惯于将这个Point Tier要标在一个字、或者音素的中间位置,这种情况其实在生成信息、提取信息时很不方便,在这里没有去探讨这样的做法。

现在打开Praat运行脚本,Praat->Open Script->TextGrid_to_Rhythm_TXT.Praat

  1. 在第一个输入框内输入TextGrid所在的目录,本文脚本只是对TextGrid进行操作,目录里无需有对应的音频,由于目录是和脚本在同一个目录下,所以没有加任何的路径信息,其它同学在使用时也可以清空这个目录的数据,将你的TextGrid放到这个目录里进行操作;
  2. 第二个文本框内,是输出的韵律文本的保存路径,也是同上,因为在同一个目录下,只需要写一下文件名称就可以 了;
  3. 这里需要输入你的文字(英语是指词)的层的数字,如上图所示,我们这批中文标注,文字是在第2层;
  4. 这里需要输入你的音素的层的数字,如上图所示,我们这批中文标注,音素是在第1层;
  5. 在本方案中,最后一个输入要改为3,代表这里有一个第3层的Point Tier信息要提取;
  6. 设置完毕,点击OK运行脚本。
    在这里插入图片描述

最后,我们得到了如下的输出文件,我们将Point Tier的信息放在了字这一层的相应的字后面加了括号:
在这里插入图片描述
总之,脚本想再全面也不可能覆盖所有的情况,如果确实有类似的需求,而你的标注是比较复杂的,可以加入QQ咨询群,或者在公众号后台发信息。

获取脚本

https://github.com/feelins/Praat_Scripts

本站所有Praat脚本都可以在上述github的项目目录里找到,如果日常对代码、脚本操作比较熟练的可通过下载、安装、配置github for windows在自己的电脑上通过git clone将代码下载到本机,这样的好处是可以跟主站及时更新代码。
不想费如此脑筋,可以通过点击如下图Code位置所示,下载整站的代码,可直接使用。
在这里插入图片描述

关注

公众号:极地语音工作室, QQ讨论群720939827

版权说明

1、版权归本博客作者所有;

2、未经本站或者作者允许, 不得任意转载本文内容,否则将视为侵权;

3、转载或者引用本文内容请注明来源及原作者;

4、对于不遵守此声明或者其他违法使用本站内容者,本人依法保留追究权等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/13090.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Harmony OS 开发指南——源码下载和编译

本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个目标平台的二进制文件。 坑点总结: 下载源码基本上没有太多坑&#xf…

Web前端-Vue2.0框架学习

Web前端-Vue框架学习 1. 前端工程化与Webpack1.1 隔行变色的demo实现1.2 webpack的基本使用1.3 webpac插件1.3.1 webpack-dev-server插件1.3.2 html-webpack-plugin 1.4 webpack中的loader(加载器)1.4.1 css-loader1.4.2 less-loader1.4.3 url-loader &a…

Node【Global全局对象】之【URL】

文章目录 🌟前言🌟URL🌟URL组成部分🌟URL 类🌟url.href🌟url.pathname🌟url.port🌟url.protocol🌟url.search🌟url.searchParams🌟url.hash&#…

C语言模拟银行排队叫号(链队)

一.队列 队列是一种具有先进先出(FIFO)特性的线性数据结构,它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾(rear),另一端称为队头(front)。新元素总是插入在队列的队…

C++进阶——二叉搜索树BST

C进阶——二叉搜索树BST 其实应该是二叉树内容的进阶版本: 二叉树在前面C数据结构阶段已经讲过,本节取名二叉树进阶是因为: map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构二叉搜索树的特性了解,有…

【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

自然语言处理:词嵌入简介

动动发财的小手,点个赞吧! Word Embeddings 机器学习模型“查看”数据的方式与我们(人类)的方式不同。例如,我们可以轻松理解“我看到一只猫”这一文本,但我们的模型却不能——它们需要特征向量。此类向量或…

C/C++每日一练(20230417)

目录 1. 字母异位词分组 🌟🌟 2. 计算右侧小于当前元素的个数 🌟🌟🌟 3. 加一 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 J…

通过简单demo让你秒懂Python的编译和执行全过程

基本说明 python 是一种解释型的编程语言,所以不像编译型语言那样需要显式的编译过程。然而,在 Python 代码执行之前,它需要被解释器转换成字节码,这个过程就是 Python 的编译过程。 DEMO演示讲解 假设我们有以下 Python 代码&…

Session使用和原理分析图与实现原理-- 代码演示说明 Session 的生命周期和读取的机制代码分析

目录 Web 开发会话技术 -Session —session 技术 session 基本原理 Session 可以做什么 如何理解 Session Session 的基本使用 session 底层实现机制 原理分析图 代码演示 CreateSession.java 测试 Session 创的机制, 注意抓包分析​编辑 ReadSession.j…

python+vue 基于推荐算法的在线电影视播放网站

以广大影视剧迷们为研究对象,深入了解影视剧迷对在线视频观看视频的需求进行分析,形成系统需求分析设计一个符合影视剧迷们需求的在线视频网站。设计网站的前期工作包括对系统的各个功能进行详细分析,对数据库设计进行详细的描述,…

【C++】STL理解【容器】

【C】STL理解【容器】 1. STL概念引入 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,从函数(functions),类别(classes),函数库(function libraries),类别库(class libraries…

nssctf web 入门(6)

这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。 想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。 目录 [SWPUCTF 2021 新生赛]caidao [SWPUCTF 2021 新…

GitLab与jekins结合构建持续集成(cl)环境(2)

目录 GItlab配置邮箱 绑定邮箱 创建群组 添加人员 创建一个项目 添加文件 新建分支 如何拉取代码 Git bash 演示 Git GUI演示 安装jenkins 更改插件镜像源 配置jenkins使用gitlab更新代码 安装jekins插件 配置jenkins免密拉取gatlab代码 jenkins创建项目 将代码…

VUE基本使用详解

目录 一、VUE框架原理 1. 了解VUE框架 2. VUE框架原理 3. MVC设计模式 4. MVVM设计模式 二、引入VUE框架 1. 本地引入 2. 网络引入 三、安装Vue插件 一、VUE框架原理 1. 了解VUE框架 vue 框架 是基于MVVM设计模式的前端框架,其中的Vue对象是MVVM设计模式中的VM视图…

Zebec Protocol 出席香港 Web3 峰会,带来了哪些信息?

梳理香港加密新政的细节,一个明确的脉络是,香港加密新政的整体目的是令虚拟资产交易明确化和合法化,通过不断完善的监管框架,促进香港虚拟资产行业的可持续和负责任地发展。 在加强合规和持牌经营的监管思路下,长期审慎…

TensorFlow 和 Keras 应用开发入门:1~4 全

原文:Beginning Application Development with TensorFlow and Keras 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形…

《简化iOS APP上架流程,App Uploader助你搞定!》

转载:Appuploader常见问题 Appuploader 常见错误及解决方法 问题解决秘籍 遇到问题,第一个请登录苹果开发者官网 检查一遍账号是否有权限,是否被停用,是否过期,是否有协议需要同意,并且在右上角切换账号后…

页表结构详细说明

一、页表 1. 内存地址的分解 我们知道linux采用了分页机制,通常采用四级页表,页全局目录(PGD),页上级目录(PUD),页中间目录(PMD),页表(PTE)。如下: 其含义定义在arch/arm64/include/asm/pgtable-hwdef.…

HCIP-6.9BGP路由反射器原理与配置

路由反射器原理与配置 1、路由反射器概念1.1、路由反射器原理:1.2、多集群路由反射器1.3、备份路由反射器2、路由反射器配置3、路由反射器防环机制 1、路由反射器概念 IBGP的水平分割,IBGP 1只能update一跳,就是说在IBGP 2 设备收到IBGP 1设…
最新文章