在jupyter中播放音频,在for循环中

Posted

技术标签:

【中文标题】在jupyter中播放音频,在for循环中【英文标题】:Playing audio in jupyter, in a for loop 【发布时间】:2019-01-29 09:21:52 【问题描述】:

我有大量需要注释的训练数据,为此我需要通过一堆声音 sn-ps 来聆听并记下我听到的内容。我在笔记本上为此写了一个小脚本。

我的主要问题是 IPython 在循环中显示剂量显示。举个例子:

import numpy
import IPython.display as ipd

sr = 22050# sample rate
T = 2.0# seconds
t = numpy.linspace(0, T, int(T*sr), endpoint=False)# time variable
x = 0.5*numpy.sin(2*numpy.pi*440*t)
ipd.Audio(x, rate=sr)

将显示一个音频框,我将能够播放正弦波。

但是尝试在 for 循环中播放任何东西都不会产生任何结果(例如:)

for i in range(10000000):
    x = 0.5*numpy.sin(i*numpy.pi*440*t)
    ipd.Audio(x, rate=sr)

如果有人有一个很好的解决方案来循环播放(和收听)一堆音频文件(一次一个,因为我可能需要循环播放数十万个声音 sn-ps),我将非常感激!

【问题讨论】:

试试IPython.display(ipd.Audio(x, rate=sr)) 而不是ipd.Audio(x, rate=sr) More than one Audio object in a Jupyter (IPython) Notebook cell的可能重复 这会引发类型错误:TypeError: 'module' object is not callable 不完全重复,我不希望一次弹出一个以上的框,我将循环播放可能数十万个音频 sn-ps。一次一盒…… 对不起!!!使用IPython.display.display(ipd.Audio(x, rate=sr)) 【参考方案1】:

要在 for 循环中显示音频文件,您需要使用 IPython.display.displayAudio 对象,如下所示:

import numpy
import IPython.display as ipd


for i in range(10000000):
    x = 0.5*numpy.sin(i*numpy.pi*440*t)
    ipd.display(ipd.Audio(x, rate=sr))

【讨论】:

您知道在使用后销毁显示器的方法吗(文档中没有任何内容,ipython.org/ipython-doc/3/api/generated/IPython.display.html)?这将打印大量显示并破坏我的 RAM...:D ipd.display()之后尝试ipd.set_matplotlib_close(close=True) 奇怪的是,我的 jupyter 中显示了 10000000 个玩家 你在ipd.display()之后试过ipd.set_matplotlib_close(close=True)吗?

以上是关于在jupyter中播放音频,在for循环中的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助修复我的javascript“for循环”以播放音频播放列表[重复]

Java 脚本 - 当尝试按顺序一个接一个地播放音频时(通过 for 循环),一次播放所有音频

使用 IPython.display.audio 在 jupyter notebook 中播放音频在函数内使用时不起作用

在 midijs 中循环播放音频?

如何在合并音频和视频时循环播放音频

哪些音频类型可以在 iOS 中无间隙地循环播放?