【问题标题】:Getting ushort format requires error in Tensorflow获取 ushort 格式需要 Tensorflow 中的错误
【发布时间】:2021-10-23 17:50:25
【问题描述】:

我是 Tensorflow 的新手,最近开始学习它。我在音频数据上练习 Tensorflow 并遇到了这个错误。我试图在 colab 笔记本中播放音频。有人可以帮我解决这个问题吗?

pip install tensorflow-io

import tensorflow as tf
import tensorflow_io as tfio

audio = tfio.audio.AudioIOTensor('/content/dataset/TrainAudioFiles/0.mp3')
print(audio)

audio_slice = audio[100:]
audio_tensor = tf.squeeze(audio_slice, axis=[])
print(audio_tensor)

from IPython.display import Audio
Audio(audio_tensor.numpy(), rate=audio.rate.numpy())

我在最后一个单元格中收到此错误:

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-9-051c3ef0a0d0> in <module>()
      1 from IPython.display import Audio
      2 
----> 3 Audio(audio_tensor.numpy(), rate=audio.rate.numpy())

/usr/lib/python3.7/wave.py in _write_header(self, initlength)
    483             self._nchannels * self._framerate * self._sampwidth,
    484             self._nchannels * self._sampwidth,
--> 485             self._sampwidth * 8, b'data'))
    486         if self._form_length_pos is not None:
    487             self._data_length_pos = self._file.tell()

error: ushort format requires 0 <= number <= (0x7fff * 2 + 1)

【问题讨论】:

    标签: python numpy tensorflow audio


    【解决方案1】:

    导致问题的原因可能是您的音频数据有多个通道。在这种情况下,Audio 类需要一个形状的输入(通道数、样本数)。但是也许您的数据具有形状(样本数,通道数)。可以在这里找到更好的解释:https://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html?highlight=display

    为了解决我们的问题,我们可以转置我们的numpy数组,如下图:

    Audio(audio_tensor.numpy().T, rate=audio.rate.numpy())
    

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 2015-02-23
      • 2013-01-28
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2018-04-21
      相关资源
      最近更新 更多