You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python基于WAV文件名筛选生成对应文本文件

嘿,这个需求在语音数据集预处理里太常见了!我来给你一套清晰的Python实现方案,分步骤来看:

实现方案

1. 核心逻辑梳理

我们要完成三件关键事情:

  • 扫描目标目录,收集所有WAV文件的文件名(注意要去掉.wav后缀,因为你的文本文件里存的是不带后缀的文件名格式)
  • 读取原始文本文件,逐行检查文件名是否存在于WAV文件集合中
  • 将匹配成功的行写入新的文本文件

2. 完整代码实现

import os

# 配置路径(根据你的实际情况修改)
wav_dir = "/path/to/your/wav/files"  # 替换成你的WAV文件目录
original_txt = "/path/to/original/text/file.txt"  # 替换成原始文本文件路径
output_txt = "/path/to/output/new_file.txt"  # 替换成输出文件路径

# 步骤1:收集所有WAV文件名(去掉后缀)
wav_filenames = set()
for filename in os.listdir(wav_dir):
    if filename.endswith(".wav"):
        # 去掉.wav后缀,得到和文本里一致的文件名格式
        wav_filenames.add(filename[:-4])

# 步骤2:读取原始文本,筛选匹配行
matched_lines = []
with open(original_txt, "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()  # 去掉换行符和首尾空格
        if not line:
            continue  # 跳过空行
        # 按|分割,注意处理可能的空格(如果有的话)
        parts = line.split("|")
        if len(parts) != 2:
            print(f"警告:无效行格式,跳过:{line}")
            continue
        txt_filename = parts[0].strip()
        # 判断这个文件名是否在WAV集合中
        if txt_filename in wav_filenames:
            matched_lines.append(line)

# 步骤3:写入新文件
with open(output_txt, "w", encoding="utf-8") as f:
    f.write("\n".join(matched_lines))

print(f"处理完成!已生成新文件:{output_txt}")

3. 优化与注意事项

  • 用集合存储WAV文件名:集合的成员查询速度是O(1),如果你的WAV文件数量很多(比如上万级),比用列表查询快太多
  • 编码适配:如果你的文本文件不是UTF-8编码,记得把encoding="utf-8"改成对应的编码(比如gbk)
  • 异常行处理:代码里自动跳过空行和格式不正确的行,避免程序报错中断
  • 安全路径处理:如果路径包含特殊字符或空格,建议用os.path.join()拼接路径,比如os.path.join(wav_dir, filename),兼容性更好

如果你需要更精准匹配WAV文件(比如避免目录里其他带.wav的非目标文件),可以用glob模块替换步骤1的代码:

from glob import glob

wav_filenames = set()
# 匹配目录下所有.wav文件,要包含子目录的话用**/*.wav
for wav_path in glob(os.path.join(wav_dir, "*.wav")):
    # 提取纯文件名(不带路径和后缀)
    filename = os.path.basename(wav_path)[:-4]
    wav_filenames.add(filename)

这样处理起来会更灵活!

内容的提问来源于stack exchange,提问作者David Aksnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:29:54