代码之家  ›  专栏  ›  技术社区  ›  Jane Wayne

如何在Jupyter笔记本中布局IPython.display.Audio对象列表?

  •  0
  • Jane Wayne  · 技术社区  · 7 年前

    我有一个音频数据列表,我想用 IPython.display.Audio 使这些控件从左到右依次流动。我试着用 ipywidgets.HBox 但是我犯了个错误 IPython.display.Audio播放 不是 Widget .

    我的音频数据列表如下所示,其中 y sr 是采样率。

    data = [(y1, sr1), (y2, sr2), ..., (yN, srN)]
    

    我想做的事情如下。

    audio_widgets = [display.Audio(audio[0], sr=audio[1]) for audio in data]
    audio_hbox = widgets.HBox(audio_widgets) # TraitError happens here
    

    TraitError: Element of the 'children' trait of a HBox instance must be a Widget, but a value of <IPython.lib.display.Audio object> <class 'IPython.lib.display.Audio'> was specified.
    

    让音频显示器显示的一种方法是简单地将它们一个显示在另一个上面(当有大量音频数据时,这会占用很多垂直空间)。

    for audio in data:
         audio_widget = display.Audio(audio[0], sr=audio[1])
         display(audio_widget)
    

    关于如何控制音频控件的布局显示有什么想法吗?

    0 回复  |  直到 7 年前
        1
  •  4
  •   gereleth    6 年前

    你可以展示 Audio 进入 output widgets

    from IPython.display import Audio, display
    from ipywidgets import widgets
    
    audio_widgets = []
    for (audio, sample_rate) in data:
        out = widgets.Output()
        with out:
            display(Audio(data=audio, rate=sample_rate))
        audio_widgets.append(out)
    widgets.HBox(audio_widgets)
    

    你也可以 print display -可能在每个音频片段旁边都有一个标签。

    这是一个很晚的答复,但无论如何)。