Python脚本处理标注文件和音频匹配个数问题

本文介绍了一个Python脚本,用于检查两个目录中不同类型的文件(如.TextGrid和.wav)是否匹配。脚本适用于初学者,能找出共同文件、仅存在于某一目录的文件,并创建相应目录保存结果。同时,它能忽略指定扩展名的干扰项。通过修改脚本,可以适应其他文件类型的检查需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引题

在语音标注过程中,涉及大量的语音标注,尤其是有多人分工进行时,难免会出现很多不匹配的文件,标注类的文件(通常为*.TextGrid),和音频类(通常为*.wav),当两者出现个数不匹配的时候,无论是后期使用脚本提取参数,和运行某些工程类的模型,都会引起报错。

本文针对Python初学者,提供一个简单的脚本,检查两类文件(不限于上述两类,脚本可用于其它的扩展名的两类文件)的不匹配状况。主要目的还是学习一下基本的检查目录里的文件的操作,适用于Python学习者熟悉该方法。

数据说明

首先,我们有两个目录,分别放了两类文件,当然这两类文件也可以在一个目录里。一类是TextGrid,一类是wav,

\sample_TextGrid
000001.TextGrid
000002.TextGrid
000004.TextGrid
000005.TextGrid
000006.TextGrid
\sample_wav
000001.wav
000002.TextGrid
000002.wav
000003.wav

我们设置了两个目录,一个目录里是5个TextGrid文件,一个目录里是3个wav文件和一个TextGrid文件,要完成的任务是:

  1. 找出两个目录里共同的文件,比如000001.TextGrid和000001.wav;
  2. 找出第一个目录里有,第二个目录里没有的文件;
  3. 找出第二个目录里有,第一个目录里没有的文件;
  4. 以上三种类型可以分别保存在一个结果目录里吗?
  5. 注意第二个目录有一个干扰项,000002.TextGrid,是否能避开?

代码说明

无论这两类文件是在一个文件夹里,还是在两个文件夹里,我们都是先获得这两类的文件列表,注意我们设置了文件扩展名的变量,如果你是想检查比如.txt和.mp3的对应关系,可相应的修改check_dir1_ext和check_dir2_ext两个位置,这样也避开了第二个目录里的干扰项。

input_check_dir1 = r'sample_textgrid'
check_dir1_ext = '.TextGrid'
input_check_dir2 = r'sample_wav'
check_dir2_ext = '.wav'
check_list1 = [ls[:ls.find('.')] for ls in os.listdir(input_check_dir1) if ls[ls.find('.'):] == check_dir1_ext]
check_list2 = [ls[:ls.find('.')] for ls in os.listdir(input_check_dir2) if ls[ls.find('.'):] == check_dir2_ext]

代码里也增加了详细的说明,可查看代码。最后运行之后,我们得到了几个目录和一个log文件:

sample_textgrid_only  这个目录是第一个目录里有,第二个目录里没有的文件
sample_textgrid_save_all  这个目录是两个目录里共同的文件
sample_wav_only  这个目录是第二个目录里有,第一个目录里没有的文件
sample_textgrid_checked_result.txt 这个文件里记录了以上三类文件的个数

有兴趣的学习者也可以将所有要处理的文件放在一个目录里,只通过扩展名区别两类,运行程序试一下。

获取脚本

https://github.com/feelins/Python-linguistics

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

关注

在这里插入图片描述

版权说明

1、版权归本公众号“极地语音工作室”,原名“语音处理小站”所有;

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极地语音工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值