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

调用Wav2Vec2 PyTorch模型获取Emission时触发ValueError问题

解决Wav2Vec2获取发射概率时的维度不匹配ValueError

执行以下代码获取Wav2Vec2模型的发射概率时:

model = torchaudio.pipelines.WAV2VEC2_ASR_BASE_960H.get_model()
emission = model(data)

出现维度不匹配的ValueError,报错核心是:

ValueError: Expected the input Tensor to be 2D (batch, time), but received {list(x.shape)}

问题原因

Wav2Vec2的ASR模型强制要求输入张量为2D结构(batch_size, 采样点长度),但你的data张量维度不符合这个要求(比如是1D单音频、或带通道的3D张量)。

解决步骤

  1. 先检查当前输入维度
    执行print(data.shape)查看data的形状,常见错误维度包括:

    • 1D:(time,)(单条音频没有batch维度)
    • 3D:(batch, 1, time)(多了通道维度,比如 librosa 加载的音频带通道)
  2. 根据维度情况调整

    • 如果是1D单音频:添加batch维度,用data = data.unsqueeze(0),调整后形状为(1, time)
    • 如果是带通道的3D张量:移除通道维度,用data = data.squeeze(1),调整后形状为(batch, time)
  3. 修正后的完整代码示例

import torchaudio
import torch

# 加载预训练模型
model = torchaudio.pipelines.WAV2VEC2_ASR_BASE_960H.get_model()

# 示例:假设原data是1D单音频(1秒16kHz采样)
data = torch.randn(16000)
# 调整为模型要求的2D格式
data = data.unsqueeze(0)

# 成功获取发射概率
emission = model(data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:30:51