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

TensorFlow使用tfio播放音频触发ushort format requires错误如何解决

问题原因
  1. tf.squeeze 参数设置错误:你传入了axis=[],相当于没有删除任何长度为1的维度,加载的单声道音频张量形状为(采样点数, 1),多出来的最后一维会导致音频处理时采样位深计算异常。
  2. 张量数值范围不匹配:tfio.audio.AudioIOTensor加载MP3返回的张量默认是tf.int32类型,取值范围远超IPython.display.Audio对整数输入要求的16位整型范围[-32768, 32767],导致wave模块计算采样位宽时超出ushort类型的数值上限。
修复后的代码
# 安装依赖(首次运行执行即可)
!pip install tensorflow-io

import tensorflow as tf
import tensorflow_io as tfio
from IPython.display import Audio

# 加载音频
audio = tfio.audio.AudioIOTensor('/content/dataset/TrainAudioFiles/0.mp3')
print(audio)

# 裁剪音频
audio_slice = audio[100:]
# 修复1:删除多余的通道维度(单声道场景下)
audio_tensor = tf.squeeze(audio_slice)
print(audio_tensor)

# 修复2:将int32张量归一化到[-1, 1]的浮点范围,适配Audio组件要求
audio_numpy = audio_tensor.numpy() / 32768.0

# 播放音频
Audio(audio_numpy, rate=audio.rate.numpy())
可选方案

如果要保留整数输入,也可以直接将张量强制转换为16位整型,同样可以解决位宽超出问题:

audio_tensor = tf.cast(tf.squeeze(audio_slice), tf.int16)
Audio(audio_tensor.numpy(), rate=audio.rate.numpy())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:21:02