Jupyter (IPython) Notebook 单元格中有多个 Audio 对象

Posted

技术标签:

【中文标题】Jupyter (IPython) Notebook 单元格中有多个 Audio 对象【英文标题】:More than one Audio object in a Jupyter (IPython) Notebook cell 【发布时间】:2015-10-09 23:02:36 【问题描述】:

我试图在单个 Jupyter Notebook 单元格中嵌入多个 IPython.display.Audio 对象,但由于某种原因,只显示最后一个对象。

这里是一个简单的例子:

import IPython
IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/090412-Incendios.mp3")
IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/130224-Undertow.mp3")

这只会显示一个(第二个)音频对象。理想情况下,我想将它放在 for 循环中,并在单个单元格中显示多个音频对象。

有什么想法吗?

注意:我在 Python 2.7.10 上运行带有 IPython 4.0.0 的 Jupyter 4.0.6。

【问题讨论】:

重复使用IPython.display.display函数可以在单个单元格的显示区域显示多个“显示”对象。有关示例,请参见 this。 Taar,不幸的是,这在使用 Audio 对象时不起作用(或者至少我无法弄清楚)。不过,谢谢。 我这样做了:import IPython IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/090412-Incendios.mp3")) IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/130224-Undertow.mp3")) 它似乎正在工作(在 Windows 7 上使用 python 3.4 + IPython 3.2...) 太棒了,就是这样!您愿意将此作为答案发布吗?谢谢。 【参考方案1】:

IPython.display.Audio(...) 命令仅创建一个“显示”对象(在这种特殊情况下,是 DisplayObject 类的子类 Audio 的对象)。

之后,您可以对此类对象执行基本操作,该对象与DisplayObject 类相关联(以及与Audio 类相关联的特定内容)。其中一项操作包括使用IPython.display.display 函数显示它。

因此,您的特定目标将通过以下代码实现:

import IPython
IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/090412-Incendios.mp3"))
IPython.display.display(IPython.display.Audio(url="https://ccrma.stanford.edu/~urinieto/drop/130224-Undertow.mp3"))

同样的机制用于显示DisplayObject对象的其他类型(子类):htmlMarkdownMathSVGjavascriptVideoImage等. 详情请见this。

当你第一次尝试这样做时,三件事真的很令人困惑(我一开始也很困惑):

命令名称IPython.display.Audio,似乎暗示会显示一些东西;事实并非如此;

所有这些多媒体对象统称为“显示”对象,而其中一些从未真正“显示”过,只是嵌入在 DOM 树中(例如,Javascript 对象);

1234563 /em>;这是造成混淆的主要原因,因为它让人们认为您不需要使用任何特定函数来显示“显示对象”。

【讨论】:

真正有教育意义的答案。我希望有更多这样的。

以上是关于Jupyter (IPython) Notebook 单元格中有多个 Audio 对象的主要内容,如果未能解决你的问题,请参考以下文章

Debain install Jupyter

pyenv ipython jupyter

目前在 Jupyter/iPython 中动态更新绘图的正确方法是啥?

目前在 Jupyter/iPython 中动态更新绘图的正确方法是啥?

更改 IPython/Jupyter 笔记本工作目录

如何将 python3 内核添加到 jupyter (IPython)