python2.7的notebook_Jupyter Notebook内联HTML音频播放器/Python 2.7>Python 3.5

我有一个jupyter笔记本文件和一个.wav文件。您可以在这里找到:

我已经创建了python函数来加载.wav文件并使用jupyter笔记本中的HTML接口播放它。在

我会重新调整这篇文章的用途,因为我已经解决了加载函数。目前还没有解决的是另一个函数wavPlayer。它应该获取一个.wav文件的numpy表示并呈现它以便回放。不幸的是,它根本不起作用。尽管load_wav正确加载了所有文件,但都有错误:“此音频内容由不支持的格式编码。”并且无法播放。显然,在这个环节中,代码的原作者让它发挥了作用:

我猜这是版本兼容性问题。我用的是python3.5,这个教程应该是2.7版的。在

我只需要能够接受这个问题的答案,就是有人能得到一个.wav文件,由python3.5中的wavPlayer函数来播放(参见jupyter笔记本文件的链接),经过一周的反复使用,我猜是代码的StringIO和/或BytesIO部分。我不是那些特殊图书馆的专家,所以我希望有人能帮上忙。在

为了便于访问,我将在下面发布函数。在import sys

import StringIO

import base64

import struct

from IPython.display import display

from IPython.core.display import HTML

def wavPlayer(data, rate):

""" will display html 5 player for compatible browser

The browser need to know how to play wav through html5.

there is no autoplay to prevent file playing when the browser opens

Adapted from SciPy.io. and

github.com/Carreau/posts/blob/master/07-the-sound-of-hydrogen.ipynb

"""

buffer = StringIO.StringIO()

buffer.write(b'RIFF')

buffer.write(b'\x00\x00\x00\x00')

buffer.write(b'WAVE')

buffer.write(b'fmt ')

if data.ndim == 1:

noc = 1

else:

noc = data.shape[1]

bits = data.dtype.itemsize * 8

sbytes = rate*(bits // 8)*noc

ba = noc * (bits // 8)

buffer.write(struct.pack('

# data chunk

buffer.write(b'data')

buffer.write(struct.pack('

if data.dtype.byteorder == '>' or (data.dtype.byteorder == '=' and sys.byteorder == 'big'):

data = data.byteswap()

buffer.write(data.tostring())

# return buffer.getvalue()

# Determine file size and place it in correct

# position at start of the file.

size = buffer.tell()

buffer.seek(4)

buffer.write(struct.pack('

val = buffer.getvalue()

src = """

Simple Test

Your browser does not support the audio element.

""".format(base64=base64.encodestring(val))

display(HTML(src))

谢谢你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值