目录

  • 引题
  • 方案介绍
    • 第一种 存在标注
    • 第二种 没有标注
  • 补充说明
  • 获取脚本
  • 版权说明

引题

作者曾经分享过一个脚本,是可以处理一个音频中首尾的静音段,Praat脚本-013 | 无需标注自动切除音频首尾静音段。后来,在应用中,发现也会用到这样一个处理,就是希望能批量的对于句子中间可能存在的比较长的静音段进行处理,因为在录音的过程中,虽然希望在句中的静音段都比较适中,但是因为毕竟在录音的过程中很难控制的各种状态和因素,再者,如果手头上的语料是来自遥远的“年代”,或者来自网上的录播等途径,那就更有必要进行这样的操作,这样保证所有的音频无论是正常读音还是静音段都处在一个较为平衡的范围内,尤其对于那些想研究语句停顿或者统计静音段等目标的朋友们。

先来解释一下遇到这样的静音段,脚本是如何处理的。首先我们先确定一个要处理的时长,比如我们要将句子中所有的静音段超过(大于)0.6秒的静音段部分都裁剪掉。

操作完成之后,上图中标黄的静音段部分被切掉,两边的都补充保留,尽量没有破坏和语音比较接近的部分。如下图所示。

请注意,如果中间部分的静音段小于我们期望切割的0.6这个值,这部分是不会有任何操作的。同时,该脚本也会同样处理首、尾的静音段,但是处理方法同样是遵循尽量不去切割靠近语音的部分,即音频首,是切分从0开始的位置;音频尾,是切割从尾部开始算的部分;

方案介绍

第一种 存在标注

如果你这些对应的音频是有标注数据的,即是对于首、尾,或者句中的长停顿有标注的,这种情况下脚本在处理静音段的时候,在计算静音段时长是否进行切割的时候是严格按照标注的情况来的。但是处理的策略也是同上面描述的。我们来演示一下如何使用脚本。

首先说一下输入的数据,必须是有要处理的音频,和标注的TextGrid文件,为了演示,我们在一个input_wavs_textgrids目录里放置了两个文件,也请注意,这两个文件必须有相同的名字,只是扩展名不同,一个为音频wav,一个为标注TextGrid。

打开标注的文件,请注意标注停顿的位置的符号#,这是关键的,因为在脚本处理的时候要根据这个符号来知道这里是停顿位置,大家如果自己有标注的比如silence, sp, …都可以在脚本里设置。

这个脚本在git目录(具体地址见本文最后)里的第34个脚本34-normalize_silence\Cut_Wav_TextGrid_middle.Praat

Praat运行脚本,Praat->Open Script->Cut_Wav_TextGrid_middle.Praat

  1. 对应图上的1处,这里要填入音频所在的目录,这里采用相对路径的形式,因为脚本和数据在同个目录下,只需输入input_wavs_textgrids\即可;
  2. 这里需要输入的是TextGrid的目录,虽然本例中音频wav和TextGrid是在同目录下,但是也要输入一遍,脚本这样处理是为了后文第二种方案考虑,所以在本例中,这里的目录仍然和第1是一样的,大家可根据自己数据的情况自由处理;
  3. 这里需要选择has TextGrid这个选项,表示是有TextGrid的;
  4. 在这个文本框里要填的就是上文提到的你是如何标注停顿的,在本例中使用的是#,所以这里就填这个符号,其它使用者要根据自己标注文件填这个相应的符号;
  5. 这里设置要裁剪的停顿的时长值,写0.6的意思是超过0.6(大于0.6,不包括等于0.6)的停顿位置会被处理、裁剪;
  6. 这里设置你要输出的裁剪完的音频目录,这个目录是脚本自动创建的,请务必注意要和输入目录有所区分,否则数据最后会很乱;
  7. 同第6,是保存裁剪完的TextGrid的目录;
  8. 设置完毕,点击Run运行脚本。

    在此之后,你会看到两个对话框。第一个是一个运行信息显示窗口,这个和脚本处理操作没有关系,它只是显示在处理第几个文件,因为本例只有一个文件,所以只会显示一个文件名。如果你有1000个文件在这个目录中,这里将会依次显示这1000个文件名,这只是为了观察程序运行的情况。第二个框框是表示程序运行结束,直接关掉就可以了。

    最终我们在这个目录下发现了output_wavs_textgrids目录,打开里面的结果文件。可以看到在中间位置,经过裁剪,我们保留了这个位置只有0.6秒的停顿。

第二种 没有标注

如果你这些对应的音频是没有标注数据的,这种情况下,我们是使用了praat的一个对于静音段的自动判断功能,所以这个“自动”是有一定的误差的,尤其对于录音噪音比较大的音频,请使用者注意这一点。这个功能如下图所示。


脚本在处理静音段的时候,在计算静音段时长是否进行切割的时候是严格按照标注的情况来的。但是处理的策略也是同上面描述的。我们来演示一下如何使用脚本。

首先说一下输入的数据,只需要有要处理的音频,本文在一个input_wavs目录里放置了一个音频文件。我们来演示一下这种情况下,如何执行脚本。

这个脚本在git目录(具体地址见本文最后)里的第34个脚本34-normalize_silence\Cut_Wav_TextGrid_middle.Praat

Praat运行脚本,Praat->Open Script->Cut_Wav_TextGrid_middle.Praat

  1. 对应图上的1处,这里要填入音频所在的目录,这里采用相对路径的形式,因为脚本和数据在同个目录下,只需输入input_wavs\即可;
  2. 这里保持默认-就可以了;
  3. 这里不需要选择has TextGrid这个选项;
  4. 在这个文本框里要填的是你可以自己定义一个自己想用的静音段的标记,本例使用sp,这个完全是自定义的;
  5. 这里设置要裁剪的停顿的时长值,写0.6的意思是超过0.6(大于0.6,不包括等于0.6)的停顿位置会被处理、裁剪;
  6. 这里设置你要输出的裁剪完的音频目录,这个目录是脚本自动创建的,请务必注意要和输入目录有所区分,否则数据最后会很乱;
  7. 同第6,是保存裁剪完的TextGrid的目录,这里也会保留自动生成的TextGrid,所以这个目录也要设置;
  8. 设置完毕,点击Run运行脚本。


同样,在此之后,你也会会看到两个对话框。详细的说明,请参考上面第一种方案里,在此不再重复。

最终我们在这个目录下发现了new_textgrids和new_wavs两个目录,打开里面的结果文件。可以看到在中间位置,经过了裁剪,我们保留了这个位置只有0.6秒的停顿。

但是如果完全依赖自动,也会带来一定的不确定性,比如自动判断的静音段出错,将会裁剪到实际的语音,更为完善的做法是在自动的基础上加一些人工对静音段的检查再做处理。

补充说明

本站之前发布的大多数脚本都是采用的相对路径,即input_wav/这样,没有将哪个盘,哪个目录都列出来,这是因为这些目录本身就在和脚本同样的目录下,这是完全没有问题的,经常在咨询群里看到有一些同学自己并不熟悉路径,总是弄错路径,其实我提到过多次了,你就不要动我现在设置的路径,将你的数据放在我的目录里运行就可以了。

获取脚本

https://github.com/feelins/Praat_Scripts

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

版权说明

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

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

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

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

Praat脚本-033 | Praat脚本裁剪归整句中停顿相关推荐

  1. Praat脚本-033 | Praat脚本批量提取MFCC参数

    MFCC(Mel-frequency cepstral coefficients):梅尔频率倒谱系数.梅尔频率是基于人耳听觉特性提出来的, 它与Hz频率成非线性对应关系.梅尔频率倒谱系数(MFCC)则 ...

  2. Praat脚本-018 | Praat批量调整音量

    目录 引题 操作介绍 运行脚本 获取脚本 关注 版权说明 引题 要进行语音实验,录音的环节其实是成功的第一步,录音质量.发音人表现.录音内容的设计都是必须要认真对待的,否则最后花了很多精力和财力,最后 ...

  3. Praat脚本-019 | Praat批量修改音频通道数

    目录 引题 运行脚本 获取脚本 关注 版权说明 引题 今天为大家推荐一个脚本,是批量修改音频的通道数量的,有时候由于一些专业录音设备在录音的时候,可能是用的双通道录音的,也称为stereo,当用Pra ...

  4. python文件都是脚本吗_脚本语言系列之Python | Python文件IO

    Python是做自动化工作首选的一门语言,与更复杂的语言相比,Python 非常便于快速学习.语法很少,具有良好的 可读性,即使测试工程师们没有丰富的编码经验,也能快速学会:Python 的极简风格对 ...

  5. visionpro的无脚本和高级脚本(你要偷偷的卷,然后惊艳所有人)

    目录 推荐B站视频: visionpro的工具测量无脚本显示: visionpro的工具测量高级脚本显示: 首先说明高级脚本高级在哪里: 引言:多多学习,卷死别人 推荐B站视频: 工业机器视觉 大家别 ...

  6. 大数据常用shell脚本之fl脚本

    一.前置准备 CentOS7.jdk1.8.zookeeper-3.5.7.kafka-2.4.1.flume-1.9.0 想要完成本期视频中所有操作,需要以下准备: Flume安装及基本使用-视频教 ...

  7. 大数据常用shell脚本之zk脚本

    一.前置准备 CentOS7.jdk1.8.zookeeper-3.5.7 想要完成本期视频中所有操作,需要以下准备: Zookeeper单机环境和集群环境搭建视频+图文教程 Hadoop完全分布式集 ...

  8. 大数据常用shell脚本之kf脚本

    一.前置准备 CentOS7.jdk1.8.zookeeper-3.5.7.kafka-2.4.1 想要完成本期视频中所有操作,需要以下准备: Kafka集群环境搭建-视频教程 大数据常用shell脚 ...

  9. linux 99乘法表脚本.md(含脚本注释,查看更直观)

    linux 99乘法表脚本.md(含脚本注释,查看更直观) 最终效果: 题目:编写脚本,实现打印 99乘法表 路径:(仅作者) PDF:D:\Download_SD-Date and Bak(D盘 下 ...

最新文章

  1. MPB:军科院杨瑞馥、毕玉晶等-​​培养组学方法优化(视频)
  2. Oracle Listener 动态注册 与 静态注册
  3. Oracle 共享磁盘阵列 双机热备 实战 配置教程 配置手册
  4. 主动模式FTP与被动模式FTP该如何选择
  5. 4.HTTPS与HTTP的区别
  6. python中的构造函数和构造函数和析构函数的作用
  7. iOS iCloud云存储数据
  8. jzoj3798-[NOIP2014模拟8.22]临洮巨人【前缀和】
  9. MySQL 中的重做日志,回滚日志以及二进制日志的简单总结
  10. 在JBoss的服务器端正确解码URL参数
  11. Oracle数据库表中字段顺序的修改方法
  12. Flex Module优化
  13. php中访问控制_PHP之Trait详解
  14. 移动硬盘提示由于IO设备错误,无法运行此项请求要怎么办啊
  15. 贪心算法c语言部分背包,c语言背包问题_背包问题贪心算法_背包问题 贪心算法(13)...
  16. SnakeGame(贪吃蛇游戏)
  17. BEEF的搭建与使用
  18. 桌面上计算机程序包能删吗,桌面上的软件怎么删除教程【图文】
  19. linux sudoers文件损坏修复
  20. 定义一个int型变量

热门文章

  1. 服务器常清理空间用命令
  2. 基于ssm的儿童二手闲置物品交易平台
  3. 输入正整数n<=20,输出一个n层的倒三角形。
  4. js刷新当前页面的方法
  5. 使用混合云和私有云所具备的优势有哪些
  6. 听遍邓丽君的歌曲,那么就下载她的全部! 我给出的方法
  7. 发布一个图片下载软件
  8. 2022-1-29倒霉日(连锁反应->倒霉不断)
  9. c语言入门:对数组内部数值进行冒泡排序
  10. HTML5 canvas制作简单的黑板特效