我经常在IPython笔记本中运行长时间运行的单元。当单元格完成执行时,笔记本电脑会自动发出哔声或发出声音。有什么方法可以在iPython笔记本中执行此操作,或者可以在可以自动播放声音的单元末尾放置一些命令?
如果这有什么不同,我使用Chrome。
你可以用python使用外部模块。尝试s.play()
从单元格末尾的Snack Sound Toolkit 添加此调用。
Snack Sound工具包可以播放wav,au和mp3文件。
s = Sound()
s.read('sound.wav')
s.play()
在你笔记本的顶端
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的内置方法open
和read
方法从文件系统中读取文件。然后将其编码为base64。然后它创建一个带有ID的音频标签beep
并将base64数据注入到它。最后一段设置会创建一个播放声音的小脚本标记。
这种方法应该可以在任何支持HTML5音频标签的浏览器中使用。
注意:如果不想在笔记本中显示音频控件,只需controls
从名为的变量中删除该属性即可sound_tag