使用tfio.audio.AudioIOTensor加载音频后Tensor维度错误,如何调整?
解决tfio加载音频张量维度不匹配问题
你的报错原因很明确:tf.squeeze只能移除维度大小为1的轴,而你的音频张量最后一维是2(对应双声道音频),所以无法通过squeeze去掉这个维度。根据后续处理的需求,可按以下方式调整张量形状:
方案1:转为单声道(最常见需求)
如果后续只需要单声道音频,有三种常用处理方式:
- 提取左声道:
tensor = audio[:, 0] # 形状变为 (2681856,)
- 提取右声道:
tensor = audio[:, 1] # 形状变为 (2681856,)
- 双声道取平均(混合为单声道):
tensor = tf.reduce_mean(audio, axis=-1) # 形状变为 (2681856,)
方案2:保留多声道但调整维度结构
如果后续处理需要保留双声道信息,只是需要调整维度顺序或形状:
比如将声道维度放在首位:
tensor = tf.transpose(audio, perm=[1, 0]) # 形状变为 (2, 2681856)
或者保持二维结构直接传入后续处理(如果流程支持二维输入)。
内容的提问来源于stack exchange,提问作者user16497397
相关产品推荐
相关产品推荐

