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

使用TensorFlow填充音频时触发Dimension >=0 [Op:Fill]报错如何解决?

报错触发原因
  • 核心原因是计算填充长度时未做非负校验:当输入waveform的实际长度大于48000时,48000 - tf.shape(waveform)的计算结果为负数,而tf.zeros要求输入的维度参数必须≥0,因此触发维度合法性报错。
  • 额外逻辑问题:直接用Python列表[48000]和张量tf.shape(waveform)做减法,运算优先级和维度匹配逻辑不符合预期,也是计算结果异常的诱因。
修复方案

首先对填充长度做非负限制,同时补充超长音频的截断逻辑,完整处理代码如下:

# 取音频实际长度
wave_len = tf.shape(waveform)[0]
# 计算需要填充的长度,最小为0,避免出现负数
pad_len = tf.maximum(0, 48000 - wave_len)
# 生成对应长度的0填充张量
zero_padding = tf.zeros([pad_len], dtype=tf.float32)
# 拼接得到固定长度音频:原音频超过48000则截断,不足则补0
waveform_padded = tf.concat([waveform[:48000], zero_padding], axis=0)

上述处理后,最终输出的waveform_padded长度固定为48000,不会再出现维度负数报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 13:54:00