首页 > 解决方案 > 为什么 IPython.display.Audio() 在 for 循环中不起作用?

问题描述

我有一个我找不到解决方案的问题。我正在编写合成器。当我想使用dis.Audio()fromimport IPython.display as dis作为聆听我在数学上所做的事情的一种方式时,它不会输出应有的 .wav 文件。一段代码(用于当前测试)是:

FREQ_d = 523
SAMPLES_RATE = 40000
t_samples = np.linspace(0, 4, 4*SAMPLES_RATE)

for j in song.values():
    if j['note'] == 'd':
        dis.Audio(np.sin(2*np.pi*FREQ_d*t_samples), rate=SAMPLES_RATE)

if 没有问题。我已经确定了这一点。当我尝试写这样的东西时:

SAMPLES_RATE = 40000
t_samples = np.linspace(0, 4, 4*SAMPLES_RATE)
freq1 = 200
freq2 = 201
s1 = np.sin(2*np.pi*freq1*t_samples)
s2 = np.sin(2*np.pi*freq2*t_samples)
s = s1 + s2
dis.Audio(s, rate=SAMPLES_RATE)

没有问题,它输出音频。

我不知道第一块代码中问题的原因。对不起,如果很难理解我的意思。

标签: pythonipython

解决方案


当你想在循环中显示它时,你应该这样调用它:

...
for i in range(100):
    dis.display(dis.Audio(...))
...

推荐阅读