在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.display
和 Audio
对象,如下所示:
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 中播放音频在函数内使用时不起作用