在ipython笔记本中播放声音

49

我想在ipython笔记本中播放声音文件。我希望能够直接从笔记本中听取应用于声音的不同处理结果。这可行吗?如果可以,最佳解决方案是什么?

5个回答

96

之前的回答比较老了。现在您可以使用IPython.display.Audio。像这样:

import IPython
IPython.display.Audio("my_audio_file.mp3")
请注意,您还可以处理任何类型的音频内容,并将其作为numpy数组传递给此函数。如果要显示多个音频文件,请使用以下内容:
IPython.display.display(IPython.display.Audio("my_audio_file.mp3"))
IPython.display.display(IPython.display.Audio("my_audio_file.mp3"))

13
值得注意的是,如果您希望声音实际上自动播放,则需要添加 autoplay=True 参数。像这样:IPython.display.Audio("my_audio_file.mp3", autoplay=True) - VSZM

14

感谢您的回答, 我无法使用外部文件。(尽管更改路径,我仍然收到警告:root:404 GET /files/440.wav (127.0.0.1))。我会看看如何避免使用外部文件。 - user1436340
嗯,奇怪,你改变了当前工作目录吗?当你运行笔记本时,是否创建了440.wav文件? - Matt
抱歉耽误了。我使用的是旧版本的ipython。 现在一切都很好。在笔记本中直接放置播放器非常方便,可以轻松玩耍声音。 - user1436340
1
顺便说一下,我在几个小时前更新了,以避免通过文件系统进行操作:http://nbviewer.ipython.org/urls/raw.github.com/Carreau/posts/master/07-the-sound-of-hydrogen.ipynb 真是个愉快的巧合 :-) - Matt
@Matt:为什么你需要重新实现_scipy.io.wavfile.write_?它已经接受字符串缓冲区了...例如:buffer = StringIO.StringIO();wavfile.write(buffer, sample_rate, samples) - kerim

4
代码:
import IPython

IPython.display.Audio("my_audio_file.mp3")

在IE11浏览器中可能会出现“无效来源”的错误,请尝试在其他浏览器中运行,应该可以正常工作。


2

如果您正在寻找的声音也可以是“文本转语音”,我想提醒一下,每当我在后台启动某个长时间进程时,我也会排队执行这样的单元格:

from IPython.display import clear_output, display, HTML, Javascript

display(Javascript("""
  var msg = new SpeechSynthesisUtterance();
  msg.text = "Process completed!";
  window.speechSynthesis.speak(msg);
"""))

您可以使用msg.text更改要听到的文本。


0
其他可用的答案添加了一个我不喜欢的 HTML 元素,因此我创建了 ringbell,可以让你播放自定义音效,如下所示:
from ringbell import RingBell
RingBell(
    sample = "path/to/sample.wav",
    minimum_execution_time = 0,
    verbose = True
)

而且它还可以让你在单元格执行超过1分钟(或自定义时间)或出现异常失败时播放一个铃声:

import ringbell.auto

您可以从PyPI安装此软件包

pip install ringbell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接