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

自定义音频数据集音频准备:Python代码列表生成问题修复请求

修复音频数据集整理代码的循环逻辑问题

问题根源

原代码核心错误在于循环内直接操作glob生成器,导致生成器被一次性耗尽,后续循环无法处理剩余文件;同时存在文件名提取、列表追加逻辑的不合理设计。

修复后的代码

import librosa
from pathlib import Path
import wave

# 初始化三个目标列表
wavnames = []
wavsamples = []
wavsamplerates = []

# 目标文件夹路径
audio_folder = '/Users/abc/Desktop/WAV_Folder'
# 获取所有WAV文件路径(生成器)
pathlist = Path(audio_folder).glob('**/*.wav')

def get_audio_samples(audio_path):
    # librosa加载音频,强制采样率44100,直接返回采样数组
    y, sr = librosa.load(audio_path, sr=44100)
    return y

# 遍历每个WAV文件
for audio_path in pathlist:
    # 提取纯文件名(不含路径)
    wavnames.append(audio_path.name)
    
    # 获取当前文件的采样数据并加入列表
    samples = get_audio_samples(str(audio_path))
    wavsamples.append(samples)
    
    # 获取当前文件的采样率并加入列表
    with wave.open(str(audio_path), "rb") as wave_file:
        wavsamplerates.append(wave_file.getframerate())

关键修复点说明

  1. 文件名处理

    • 原代码直接将生成器内容追加到wavnames,既耗尽生成器又存储了完整路径;现在用audio_path.name提取纯文件名,每次循环追加单个文件名。
  2. 采样数据列表修复

    • 原函数将采样数组嵌套在列表中返回,且用+=追加导致结构混乱;现在直接返回采样数组,用append加入wavsamples,保证每个元素对应一个文件的采样数据。
  3. 采样率列表修复

    • 原代码每次循环创建空列表再追加属于冗余操作;现在直接将采样率值用append加入列表,每个文件对应一个值。
  4. 循环逻辑修复

    • 原循环内wavnames += pathlist会一次性耗尽pathlist生成器,导致后续循环仅处理第一个文件;现在正常遍历生成器,每个循环处理一个文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:00:05