如何在IPython笔记本上自动播放声音?

  • 回答 (2)
  • 关注 (0)
  • 查看 (196)

我经常在IPython笔记本中运行长时间运行的单元。当单元格完成执行时,笔记本电脑会自动发出哔声或发出声音。有什么方法可以在iPython笔记本中执行此操作,或者可以在可以自动播放声音的单元末尾放置一些命令?

如果这有什么不同,我使用Chrome。

事情来得太突然事情来得太突然提问于
啊偶我去Skype刚毕业的前端菜鸟回答于
已采纳

你可以用python使用外部模块。尝试s.play()从单元格末尾的Snack Sound Toolkit 添加此调用。

Snack Sound工具包可以播放wav,au和mp3文件。

s = Sound() 
s.read('sound.wav') 
s.play()
ikdoy野生小猴子回答于

在你笔记本的顶端

from IPython.display import Audio
sound_file = './sound/beep.wav'

sound_file 应该指向服务器上的文件,或者可以在互联网上访问。

然后,在长时间运行的单元结束时

<code that takes a long time>

Audio(url=sound_file, autoplay=True)

此方法使用新版iPython / Jupyter内置的Audio标签。

旧版本的注意事项

没有音频标签的旧版本可以使用以下方法。

将它放在一个单元格中,然后在想要播放声音之前先运行它:

from IPython.display import HTML
from base64 import b64encode

path_to_audio = "/path/to/snd/my-sound.mp3"
audio_type = "mp3"

sound = open(path_to_audio, "rb").read()
sound_encoded = b64encode(sound)
sound_tag = """
    <audio id="beep" controls src="data:audio/{1};base64,{0}">
    </audio>""".format(sound_encoded, audio_type)

play_beep = """
<script type="text/javascript">
    var audio = document.getElementById("beep");
    audio.play();
</script>
"""

HTML(sound_tag)

在你想完成噪声的单元的末尾放置这个:

HTML(play_beep)

怎么运行的:

它使用iPython的内置方法openread方法从文件系统中读取文件。然后将其编码为base64。然后它创建一个带有ID的音频标签beep并将base64数据注入到它。最后一段设置会创建一个播放声音的小脚本标记。

这种方法应该可以在任何支持HTML5音频标签的浏览器中使用。

注意:如果不想在笔记本中显示音频控件,只需controls从名为的变量中删除该属性即可sound_tag

扫码关注云+社区

领取腾讯云代金券