自定义panel.pane.Audio元素

是否可以自定义panel.pane.Audio元素? 我试图传递诸如width或height之类的参数:

pn_audio  = pn.pane.Audio(audio_data,sample_rate=sps,width=800)

但作为bokeh应用程序启动后无效。

以下是一些可用的代码:

import numpy as np
import holoviews as hv
import holoviews.plotting.bokeh
from holoviews import opts
import panel as pn

from bokeh.application import Application
from bokeh.application.handlers.function import FunctionHandler
from bokeh.server.server import Server


import socket
hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)

def generate_audio():
    sps = 25600 # Samples per second
    duration = 10 # Duration in seconds

    modulator_frequency = 2.0
    carrier_frequency = 120.0
    modulation_index = 2.0

    time = np.arange(sps*duration) / sps
    modulator = np.sin(2.0 * np.pi * modulator_frequency * time) * modulation_index
    carrier = np.sin(2.0 * np.pi * carrier_frequency * time)
    waveform = np.sin(2. * np.pi * (carrier_frequency * time + modulator))

    waveform_quiet = waveform * 0.3
    waveform_int = np.int16(waveform_quiet * 32767)

    return waveform_int,sps

def modify_doc(doc):
    audio_data,sps = generate_audio()

    hv_curve = hv.Curve( audio_data).opts(width=800)

    pn_curve  = pn.panel(hv_curve)
    pn_audio  = pn.pane.Audio(audio_data,sample_rate=sps)
    # pn_txt = pn.widgets.TextInput(name='A widget',value='A string')

    plot = pn.Column(*[pn_curve,pn_audio])

    doc.add_root(plot.get_root())
    return doc

app = Application(FunctionHandler(modify_doc))
server = Server(app,address=IPAddr,allow_websocket_origin=['{}:5006'.format(IPAddr)],port=5006)



server.start()
print('Opening Bokeh application on {}'.format(IPAddr))
server.io_loop.add_callback(server.show,"/")
server.io_loop.start()

我从命令行开始应用程序

python start_bokeh_server.py

目标是使音频元素与上图一样宽。 现在看来bokeh app

关于如何完成此工作的任何想法,而无需深入探讨面板的javascript部分? 预先感谢。

qinggeyuan 回答:自定义panel.pane.Audio元素

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2886263.html

大家都在问