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

如何统一用于说话人二分类的.wav音频数据集的shape

音频shape统一的解决方案

一、长度统一实现方法

  • 第一步:统一所有音频的采样率
    你当前代码没有校验采样率一致性,如果不同wav的采样率不同(比如有的是44100Hz、有的是48000Hz),相同时长的音频采样点数量自然不一样。建议先固定统一采样率(比如16000Hz),用scipy.signal.resample对采样率不符的音频做重采样。
  • 第二步:固定音频采样点长度
    提前定好目标音频时长,比如统一取2秒,对应的采样点数量就是目标采样率*2,再对所有音频做对齐处理:
    • 采样点超过目标长度:直接截取前N个采样点,也可以随机截取某一段做数据增强
    • 采样点不足目标长度:在末尾补0(零填充)到目标长度
  • 统一处理的参考代码:
import scipy.signal
# 定义全局统一配置
TARGET_SR = 16000
TARGET_SAMPLES = TARGET_SR * 2 # 固定2秒时长对应采样点数量

def load_and_align_wav(file_path):
    sr, raw_data = wavfile.read(file_path)
    # 重采样到统一采样率
    if sr != TARGET_SR:
        raw_data = scipy.signal.resample(raw_data, int(len(raw_data) * TARGET_SR / sr))
    raw_data = raw_data.flatten()
    # 对齐长度
    if len(raw_data) > TARGET_SAMPLES:
        raw_data = raw_data[:TARGET_SAMPLES]
    else:
        raw_data = np.pad(raw_data, (0, TARGET_SAMPLES - len(raw_data)), mode='constant')
    return raw_data

二、你当前代码的其他逻辑错误

你现在的代码完全不符合二分类任务的要求,需要同步调整:

  1. 数据集读取逻辑错误:循环里每次都覆盖data和data2变量,最终你拿到的X和y只是最后一个本人音频、最后一个他人音频的采样点,完全没用到18个文件的完整数据集
  2. 标签逻辑错误:二分类任务的y是类别标签,本人对应标签1、他人对应标签0,不是把他人的音频采样点当y
  3. 输出层配置错误:二分类任务输出层应该是units=1,而不是6
  • 修正后的数据集构造参考代码:
X = []
labels = []
# 读取本人音频,标签设为1
for path in Path(os.path.abspath('Voiceclassification/Data/me/')).rglob('*.wav'):
    audio = load_and_align_wav(str(path))
    X.append(audio)
    labels.append(1)
# 读取他人音频,标签设为0
for path in Path(os.path.abspath('Voiceclassification/Data/other/')).rglob('*.wav'):
    audio = load_and_align_wav(str(path))
    X.append(audio)
    labels.append(0)
# 转为numpy数组后再做划分
X = np.array(X)
y = np.array(labels)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=0)

三、效果优化建议

直接用原始音频采样点做ANN输入维度太高、冗余信息多,模型效果会很差。建议先提取MFCC、梅尔频谱等音频特征,再送入模型训练,收敛速度和准确率都会有明显提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:07