ipyaudio 0.1.27__py3-none-any.whl → 0.1.29__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ipyaudio/_frontend.py +1 -1
- ipyaudio/_version.py +1 -1
- ipyaudio/labextension/package.json +3 -3
- ipyaudio/labextension/static/270.2a0af8170fcaa201cbcf.js +1 -0
- ipyaudio/nbextension/index.js +1 -1
- ipyaudio/nbextension/index.js.map +1 -1
- ipyaudio/player.py +1 -1
- ipyaudio/recorder.py +5 -1
- ipyaudio/widget.py +1 -5
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/package.json +3 -3
- ipyaudio-0.1.29.data/data/share/jupyter/labextensions/ipyaudio/static/270.2a0af8170fcaa201cbcf.js +1 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/nbextensions/ipyaudio/index.js +1 -1
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/nbextensions/ipyaudio/index.js.map +1 -1
- {ipyaudio-0.1.27.dist-info → ipyaudio-0.1.29.dist-info}/METADATA +1 -1
- {ipyaudio-0.1.27.dist-info → ipyaudio-0.1.29.dist-info}/RECORD +29 -31
- ipyaudio/labextension/static/270.1242662ac5e30befc99b.js +0 -1
- ipyaudio/labextension/static/remoteEntry.0e77551bed18929a1a30.js +0 -1
- ipyaudio-0.1.27.data/data/share/jupyter/labextensions/ipyaudio/static/270.1242662ac5e30befc99b.js +0 -1
- ipyaudio-0.1.27.data/data/share/jupyter/labextensions/ipyaudio/static/remoteEntry.0e77551bed18929a1a30.js +0 -1
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/etc/jupyter/nbconfig/notebook.d/ipyaudio.json +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/install.json +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/122.3700f0454aee82938e32.js +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/509.a9d6860fe38ae60aa71f.js +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/570.97f2a8196b7f1703e636.js +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/570.97f2a8196b7f1703e636.js.LICENSE.txt +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/627.315cb148cc156382df50.js +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/627.315cb148cc156382df50.js.LICENSE.txt +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/style.js +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/static/third-party-licenses.json +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/nbextensions/ipyaudio/extension.js +0 -0
- {ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/nbextensions/ipyaudio/index.js.LICENSE.txt +0 -0
- {ipyaudio-0.1.27.dist-info → ipyaudio-0.1.29.dist-info}/WHEEL +0 -0
- {ipyaudio-0.1.27.dist-info → ipyaudio-0.1.29.dist-info}/licenses/LICENSE.txt +0 -0
ipyaudio/player.py
CHANGED
@@ -92,7 +92,7 @@ class Player(DOMWidget, ValueWidget):
|
|
92
92
|
self._audio = audio
|
93
93
|
if rate is not None:
|
94
94
|
self.rate = rate
|
95
|
-
self.send({"msg_type": "
|
95
|
+
self.send({"msg_type": "reset", "is_streaming": isinstance(audio, (AsyncGeneratorType, GeneratorType))})
|
96
96
|
|
97
97
|
timer = Timer(language=self.language)
|
98
98
|
if isinstance(self._audio, (str, Path, np.ndarray, torch.Tensor, Cut, Recording)):
|
ipyaudio/recorder.py
CHANGED
@@ -72,10 +72,12 @@ class Recorder(DOMWidget, ValueWidget):
|
|
72
72
|
|
73
73
|
self.audio = np.zeros((1, 0), dtype=np.float32)
|
74
74
|
self.stream_reader = StreamReader(dtype=np.float32, rate=self.rate, to_mono=True, frame_size=1024)
|
75
|
+
self.filename = None
|
75
76
|
self.writer = None
|
76
77
|
if filename is not None:
|
77
78
|
self.sync = True
|
78
|
-
self.
|
79
|
+
self.filename = filename
|
80
|
+
self.writer = Writer(self.filename, self.rate, layout="mono")
|
79
81
|
self.observe(self._on_chunk_change, names="chunk")
|
80
82
|
self.observe(self._on_completed_change, names="completed")
|
81
83
|
self.observe(self._on_rate_change, names="rate")
|
@@ -127,6 +129,8 @@ class Recorder(DOMWidget, ValueWidget):
|
|
127
129
|
self.timer = Timer(language=self.language)
|
128
130
|
self.audio = np.zeros((1, 0), dtype=np.float32)
|
129
131
|
self.stream_reader.reset()
|
132
|
+
if self.filename is not None:
|
133
|
+
self.writer = Writer(self.filename, self.rate, layout="mono")
|
130
134
|
else:
|
131
135
|
if self.sync:
|
132
136
|
if self.verbose:
|
ipyaudio/widget.py
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
# Copyright (c) Zhendong Peng.
|
5
5
|
# Distributed under the terms of the Modified BSD License.
|
6
6
|
|
7
|
-
import time
|
8
7
|
from pathlib import Path
|
9
8
|
from types import AsyncGeneratorType, GeneratorType
|
10
9
|
from typing import Optional, Union
|
@@ -25,10 +24,7 @@ def play(
|
|
25
24
|
language: str = "en",
|
26
25
|
verbose: bool = False,
|
27
26
|
):
|
28
|
-
|
29
|
-
# Wait for the player to be initialized
|
30
|
-
time.sleep(0.1)
|
31
|
-
player.load(audio, rate)
|
27
|
+
Player(config, language, verbose).load(audio, rate)
|
32
28
|
|
33
29
|
|
34
30
|
def record(
|
{ipyaudio-0.1.27.data → ipyaudio-0.1.29.data}/data/share/jupyter/labextensions/ipyaudio/package.json
RENAMED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "ipyaudio",
|
3
|
-
"version": "0.1.
|
4
|
-
"description": "A
|
3
|
+
"version": "0.1.29",
|
4
|
+
"description": "A Jupyter Widget for Web Audio Playing and Recording.",
|
5
5
|
"keywords": [
|
6
6
|
"jupyter",
|
7
7
|
"jupyterlab",
|
@@ -101,7 +101,7 @@
|
|
101
101
|
}
|
102
102
|
},
|
103
103
|
"_build": {
|
104
|
-
"load": "static
|
104
|
+
"load": "static",
|
105
105
|
"extension": "./extension"
|
106
106
|
}
|
107
107
|
}
|
ipyaudio-0.1.29.data/data/share/jupyter/labextensions/ipyaudio/static/270.2a0af8170fcaa201cbcf.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunkipyaudio=self.webpackChunkipyaudio||[]).push([[270],{311:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27none%27 stroke=%27%23212529%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3e%3cpath d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},319:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(s,a){function r(e){try{l(n.next(e))}catch(e){a(e)}}function o(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,o)}l((n=n.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RecorderView=t.RecorderModel=void 0;const a=s(i(5364)),r=i(3459),o=i(3983),l=i(1797),c=s(i(1136)),d=s(i(8020));i(6378),i(1463);class u extends o.DOMWidgetModel{defaults(){return Object.assign(Object.assign({},super.defaults()),{_model_name:u.model_name,_model_module:u.model_module,_model_module_version:u.model_module_version,_view_name:u.view_name,_view_module:u.view_module,_view_module_version:u.view_module_version,chunk:new Uint8Array(0),rate:16e3,end:!1})}}t.RecorderModel=u,u.serializers=Object.assign(Object.assign({},o.DOMWidgetModel.serializers),{chunk:r.simplearray_serialization}),u.model_name="RecorderModel",u.model_module=l.MODULE_NAME,u.model_module_version=l.MODULE_VERSION,u.view_name="RecorderView",u.view_module=l.MODULE_NAME,u.view_module_version=l.MODULE_VERSION;class h extends o.DOMWidgetView{constructor(){super(...arguments),this._chunks=new c.default,this._isFirstChunk=!0,this._isCompleted=!1}_sendChunk(){var e;return n(this,void 0,void 0,(function*(){const t=yield this._chunks.dequeue(1e3+(null!==(e=this._recorder.timeSlice)&&void 0!==e?e:20));t.length>0&&(this.model.set("chunk",{array:t,shape:[t.length]}),this.model.save_changes()),this._isCompleted&&(this.model.set("completed",!0),this.model.save_changes())}))}render(){super.render(),this.displayed.then((()=>n(this,void 0,void 0,(function*(){const e=this.model.get("language");this._recorder=d.default.create((0,a.default)({},this.model.get("config"),{language:e}),(0,a.default)({},this.model.get("player_config"),{language:e})),this.el.appendChild(this._recorder.el),this.model.on("msg:custom",(e=>n(this,void 0,void 0,(function*(){"chunk_received"===e.msg_type&&this._sendChunk()})))),this._recorder.onRecordStart((()=>{this._isCompleted=!1,this._isFirstChunk=!0,this.model.set("completed",!1),this.model.set("rate",this._recorder.sampleRate),this.model.save_changes()})),this._recorder.onRecordChunk((e=>n(this,void 0,void 0,(function*(){this._chunks.enqueue(new Uint8Array(yield e.arrayBuffer())),this.model.get("sync")&&this._isFirstChunk&&(this._isFirstChunk=!1,this._sendChunk())})))),this._recorder.onRecordEnd((e=>n(this,void 0,void 0,(function*(){this._isCompleted=!0,this.model.get("sync")||(this.model.set("completed",!0),this.model.save_changes())}))))}))))}}t.RecorderView=h},644:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0%27/%3e%3c/svg%3e"},1136:function(e,t){var i=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(s,a){function r(e){try{l(n.next(e))}catch(e){a(e)}}function o(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,o)}l((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(){this.queue=[],this.resolveDequeue=null,this.waitingDequeue=null}mergeAllChunks(){if(0===this.queue.length)return new Uint8Array(0);let e=0;for(const t of this.queue)e+=t.length;const t=new Uint8Array(e);let i=0;for(const e of this.queue)t.set(e,i),i+=e.length;return t}enqueue(e){if(this.queue.push(e),this.resolveDequeue){const e=this.mergeAllChunks();this.resolveDequeue(e),this.queue.length=0,this.resolveDequeue=null,this.waitingDequeue=null}}dequeue(e=0){return i(this,void 0,void 0,(function*(){if(this.queue.length>0){const e=this.mergeAllChunks();return this.queue.length=0,e}if(!this.waitingDequeue&&(this.waitingDequeue=new Promise((e=>{this.resolveDequeue=e})),e>0)){const t=setTimeout((()=>{this.resolveDequeue&&(this.resolveDequeue(new Uint8Array(0)),this.resolveDequeue=null,this.waitingDequeue=null)}),e);this.waitingDequeue.then((()=>{t&&clearTimeout(t)})).catch((()=>{t&&clearTimeout(t)}))}return this.waitingDequeue}))}get length(){return this.queue.length}}},1368:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23fff%27%3e%3cpath d=%27M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708%27/%3e%3c/svg%3e"},1451:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27none%27 stroke=%27%23052c65%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3e%3cpath d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},1463:(e,t,i)=>{i.r(t),i.d(t,{default:()=>f});var n=i(5072),s=i.n(n),a=i(7825),r=i.n(a),o=i(7659),l=i.n(o),c=i(5056),d=i.n(c),u=i(540),h=i.n(u),p=i(1113),m=i.n(p),_=i(4930),g={};g.styleTagTransform=m(),g.setAttributes=d(),g.insert=l().bind(null,"head"),g.domAPI=r(),g.insertStyleElement=h(),s()(_.A,g);const f=_.A&&_.A.locals?_.A.locals:void 0},1797:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MODULE_NAME=t.MODULE_VERSION=void 0;const n=i(8330);t.MODULE_VERSION=n.version,t.MODULE_NAME=n.name},2247:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%2833, 37, 41, 0.75%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e"},2465:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createRewardDropdown=void 0,i(8736);const n=i(7997);t.createRewardDropdown=function(e){const t=(0,n.createElement)("div","dropup my-3 float-end text-end"),i=(0,n.createElement)("button","btn btn-warning dropdown-toggle");i.setAttribute("data-bs-toggle","dropdown"),i.innerHTML="zh"===e?'<i class="fa fa-thumbs-o-up"></i> 赞赏':'<i class="fa fa-coffee"></i> Buy me a coffee';const s=(0,n.createElement)("ul","dropdown-menu p-2");s.style.width="250px";const a="https://modelscope.cn/models/pengzhendong/pengzhendong/resolve/master/images",r=[{imgSrc:`${a}/wechat-reward.jpg`,name:"zh"===e?"微信":"WeChat"},{imgSrc:`${a}/alipay-reward.jpg`,name:"zh"===e?"支付宝":"AliPay"}],o=(0,n.createElement)("table","table table-bordered mb-0"),l=(0,n.createElement)("tbody"),c=(0,n.createElement)("tr");r.forEach((e=>{const t=(0,n.createElement)("td","text-center p-2");t.style.width=100/r.length+"%";const i=(0,n.createElement)("img","img-fluid d-block mx-auto");i.src=e.imgSrc,t.appendChild(i);const s=(0,n.createElement)("div","text-center mt-2 fw-bold");s.textContent=e.name,t.appendChild(s),c.appendChild(t)})),l.appendChild(c),o.appendChild(l),s.appendChild(o);const d=(0,n.createElement)("a");d.href="https://github.com/pengzhendong/ipyaudio",d.target="_blank";const u=(0,n.createElement)("img","img-fluid me-3");return u.src="https://img.shields.io/github/stars/pengzhendong/ipyaudio.svg",d.appendChild(u),t.appendChild(d),t.appendChild(i),t.appendChild(s),t}},3385:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e"},4274:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e"},4364:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(s,a){function r(e){try{l(n.next(e))}catch(e){a(e)}}function o(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,o)}l((n=n.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PlayerView=t.PlayerModel=void 0;const a=s(i(5364)),r=i(3983),o=i(1797),l=s(i(9155));i(6378),i(1463);class c extends r.DOMWidgetModel{defaults(){return Object.assign(Object.assign({},super.defaults()),{_model_name:c.model_name,_model_module:c.model_module,_model_module_version:c.model_module_version,_view_name:c.view_name,_view_module:c.view_module,_view_module_version:c.view_module_version})}}t.PlayerModel=c,c.serializers=Object.assign({},r.DOMWidgetModel.serializers),c.model_name="PlayerModel",c.model_module=o.MODULE_NAME,c.model_module_version=o.MODULE_VERSION,c.view_name="PlayerView",c.view_module=o.MODULE_NAME,c.view_module_version=o.MODULE_VERSION;class d extends r.DOMWidgetView{render(){super.render(),this.displayed.then((()=>n(this,void 0,void 0,(function*(){const e={language:this.model.get("language")};this._player=l.default.create((0,a.default)({},this.model.get("config"),e)),this.el.appendChild(this._player.el),this.model.on("msg:custom",(e=>n(this,void 0,void 0,(function*(){"reset"===e.msg_type?this._player.reset(e.is_streaming):"set_done"===e.msg_type?this._player.setDone():"play"===e.msg_type?this._player.play():"pause"===e.msg_type&&this._player.pause()})))),this.model.on("change:audio",(()=>{this._player.sampleRate=this.model.get("rate"),this._player.load(this.model.get("audio"))}))}))))}}t.PlayerView=d},4718:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e"},4914:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%236ea8fe%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708%27/%3e%3c/svg%3e"},4930:(e,t,i)=>{i.d(t,{A:()=>o});var n=i(1601),s=i.n(n),a=i(6314),r=i.n(a)()(s());r.push([e.id,".waveform {\n background-color: black;\n cursor: pointer;\n position: relative;\n width: 100%;\n}\n\n.duration, .time {\n background: rgba(0, 0, 0, 0.75);\n color: #DDDD;\n font-size: 11px;\n position: absolute;\n bottom: 0;\n z-index: 11;\n}\n\n.duration { right: 0 }\n\n.time { left: 0 }\n",""]);const o=r},5372:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23dc3545%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23dc3545%27 stroke=%27none%27/%3e%3c/svg%3e"},5419:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27m6 10 3 3 6-6%27/%3e%3c/svg%3e"},5531:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23343a40%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},5782:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%2386b7fe%27/%3e%3c/svg%3e"},5967:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27%23000%27%3e%3cpath d=%27M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414%27/%3e%3c/svg%3e"},6366:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27rgba%28255, 255, 255, 0.55%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e"},7115:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3e%3cpath fill=%27none%27 stroke=%27%23dee2e6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%272%27 d=%27m2 5 6 6 6-6%27/%3e%3c/svg%3e"},7154:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280, 0, 0, 0.25%29%27/%3e%3c/svg%3e"},7997:(e,t)=>{function i(e){const t=e.numFrames,i=e.numChannels||2,n=e.sampleRate||44100,s=e.isFloat?4:2,a=e.isFloat?3:1,r=i*s,o=n*r,l=t*r,c=new ArrayBuffer(44),d=new DataView(c);let u=0;function h(e){for(let t=0;t<e.length;t++)d.setUint8(u+t,e.charCodeAt(t));u+=e.length}function p(e){d.setUint32(u,e,!0),u+=4}function m(e){d.setUint16(u,e,!0),u+=2}return h("RIFF"),p(l+36),h("WAVE"),h("fmt "),p(16),m(a),m(i),p(n),p(o),m(r),m(8*s),h("data"),p(l),new Uint8Array(c)}function n(e,t){if(!e)return new Uint8Array;let n,s;e instanceof ArrayBuffer?(n=i({isFloat:!1,numChannels:t.numChannels,sampleRate:t.sampleRate,numFrames:e.byteLength/Int16Array.BYTES_PER_ELEMENT}),s=new Uint8Array(e)):(n=i({isFloat:!1,numChannels:e.numberOfChannels,sampleRate:e.sampleRate,numFrames:e.length}),s=new Uint8Array(function(e){const{numberOfChannels:t,length:i}=e,n=new Int16Array(i*t);for(let s=0;s<t;s++){const a=e.getChannelData(s),r=a instanceof Float32Array;for(let e=0;e<i;e++)n[e*t+s]=r?32767*a[e]:a[e]}return n}(e).buffer));const a=new Uint8Array(n.length+s.length);return a.set(n,0),a.set(s,n.length),a}Object.defineProperty(t,"__esModule",{value:!0}),t.createObjectURL=t.formatTime=t.createElement=void 0,t.createElement=(e,t="",i="")=>{const n=document.createElement(e);return""!==t&&(n.className=t),""!==i&&(n.innerHTML=i),n},t.formatTime=e=>`${Math.floor(e/60)}:${("0"+Math.round(e)%60).slice(-2)}`,t.createObjectURL=(e,t={numChannels:1,sampleRate:44100})=>{let i;return i=e instanceof AudioBuffer?n(e,{numChannels:e.numberOfChannels,sampleRate:e.sampleRate}):n(e,t),URL.createObjectURL(new Blob([i],{type:"audio/wav"}))}},8020:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(s,a){function r(e){try{l(n.next(e))}catch(e){a(e)}}function o(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,o)}l((n=n.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=s(i(423)),r=s(i(8429)),o=s(i(9155)),l=i(7997);class c{constructor(e,t){this.el=(0,l.createElement)("div","lm-Widget"),this._container=(0,l.createElement)("div","waveform"),this._currentTime=(0,l.createElement)("div","time","0:00"),this._container.append(this._currentTime),this._config=e,this._player=o.default.create(t)}get sampleRate(){return this._wavesurfer.options.sampleRate}get timeSlice(){var e;return null===(e=this._config.recordOptions)||void 0===e?void 0:e.mediaRecorderTimeslice}set sampleRate(e){this._wavesurfer.options.sampleRate=e,this._player.sampleRate=e}createWaveSurfer(){this._wavesurfer=a.default.create(Object.assign(Object.assign({},this._config.options),{container:this._container}))}createRateSelect(){this._rateSelect=(0,l.createElement)("select","form-select-sm d-inline-block me-3 my-3 w-25"),[8e3,16e3,22050,24e3,44100,48e3].forEach((e=>{const t=document.createElement("option");t.value=e.toString(),t.text=`${e} Hz`,16e3===e&&(t.selected=!0),this._rateSelect.appendChild(t)}))}createMicSelect(){this._micSelect=(0,l.createElement)("select","form-select-sm d-inline-block me-3 my-3 w-50"),navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then((e=>{r.default.getAvailableAudioDevices().then((e=>{e.forEach((e=>{const t=document.createElement("option");t.value=e.deviceId,t.text=e.label||e.deviceId,this._micSelect.appendChild(t)}))}))})).catch((e=>{const t="zh"===this._config.language?"访问麦克风失败":"Error accessing the microphone: ";throw new Error(t+e.message)}))}createPauseButton(){this._pauseButton=(0,l.createElement)("button","btn btn-outline-danger me-3 my-3",'<i class="fa fa-pause"></i>'),this._pauseButton.disabled=!0,this._pauseButton.onclick=()=>{this._recorder.isRecording()?(this._recorder.pauseRecording(),this._pauseButton.innerHTML='<i class="fa fa-play"></i>',this._container.style.display="none",this._player.el.style.display="block"):(this._recorder.resumeRecording(),this._pauseButton.innerHTML='<i class="fa fa-pause"></i>',this._container.style.display="block",this._player.el.style.display="none")}}createRecordButton(){this._recordButton=(0,l.createElement)("button","btn btn-danger me-3 my-3",'<i class="fa fa-microphone"></i>'),this._recordButton.onclick=()=>{this._recorder.isRecording()||this._recorder.isPaused()?(this._recorder.stopRecording(),this._container.style.display="none",this._player.el.style.display="block"):(this._wavesurfer.options.normalize=!1,this.sampleRate=parseInt(this._rateSelect.value),this._recorder.startRecording({deviceId:this._micSelect.value}).then((()=>{this._pauseButton.disabled=!1,this._rateSelect.disabled=!0,this._micSelect.disabled=!0,this._pauseButton.innerHTML='<i class="fa fa-pause"></i>',this._recordButton.innerHTML='<i class="fa fa-stop"></i>',this._container.style.display="block",this._player.el.style.display="none"})))}}onRecordStart(e){this._recorder.on("record-start",(()=>{e()}))}onRecordChunk(e){this._recorder.on("record-data-available",(t=>{e(t)}))}onRecordEnd(e){this._recorder.on("record-end",(t=>n(this,void 0,void 0,(function*(){this._player.load(URL.createObjectURL(t)),this._recordButton.disabled=!0,this._pauseButton.disabled=!0,yield e(t),this._recordButton.disabled=!1,this._pauseButton.disabled=!0,this._rateSelect.disabled=!1,this._micSelect.disabled=!1,this._pauseButton.innerHTML='<i class="fa fa-play"></i>',this._recordButton.innerHTML='<i class="fa fa-microphone"></i>'}))))}createRecorder(){this._wavesurfer.toggleInteraction(!1),this._recorder=this._wavesurfer.registerPlugin(r.default.create(this._config.recordOptions)),this.createRateSelect(),this.createMicSelect(),this.createPauseButton(),this.createRecordButton(),this._container.style.display="none",this._player.el.style.display="none",this.el.append(this._recordButton,this._pauseButton,this._rateSelect,this._micSelect,this._container,this._player.el),this._recorder.on("record-pause",(e=>{this._player.load(URL.createObjectURL(e))})),this._recorder.on("record-progress",(e=>{this._currentTime.textContent=(0,l.formatTime)(e/1e3)}))}static create(e,t){const i=new c(e,t);return i.createWaveSurfer(),i.createRecorder(),i}}t.default=c},8078:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(s,a){function r(e){try{l(n.next(e))}catch(e){a(e)}}function o(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,o)}l((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PCMPlayer=void 0;const s=i(7997);class a{constructor(e){this._isDone=!1,this._isPlaying=!0,this._samples=new Int16Array(0),this._allSamples=new Int16Array(0),this._options=Object.assign({channels:1,sampleRate:16e3,flushTime:100,language:"en"},e),this.playButton=(0,s.createElement)("button","btn btn-danger me-3 my-3",'<i class="fa fa-pause"></i>'),this.playButton.onclick=()=>{this._isPlaying?this.pause():this.play()},this._interval=window.setInterval(this.flush.bind(this),this._options.flushTime),this._audioCtx=new(window.AudioContext||window.webkitAudioContext),this._gainNode=this._audioCtx.createGain(),this._gainNode.gain.value=1,this._gainNode.connect(this._audioCtx.destination),this._startTime=this._audioCtx.currentTime}set sampleRate(e){this._options.sampleRate=e}setDone(){this._isDone=!0}feed(e){const t=atob(e),i=new ArrayBuffer(t.length),n=new Uint8Array(i);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);const s=new Int16Array(i);this._samples=new Int16Array([...this._samples,...s]),this._allSamples=new Int16Array([...this._allSamples,...s])}get url(){return(0,s.createObjectURL)(this._allSamples.buffer,{numChannels:this._options.channels,sampleRate:this._options.sampleRate})}flush(){if(!this._samples.length)return;const e=this._audioCtx.createBufferSource(),t=this._samples.length/this._options.channels,i=this._audioCtx.createBuffer(this._options.channels,t,this._options.sampleRate);for(let e=0;e<this._options.channels;e++){const n=i.getChannelData(e);let s=e;for(let e=0;e<t;e++)n[e]=this._samples[s]/32768,s+=this._options.channels}this._startTime=Math.max(this._startTime,this._audioCtx.currentTime),e.buffer=i,e.connect(this._gainNode),e.start(this._startTime),e.onended=()=>{this._isDone&&0===this._samples.length&&this._startTime<=this._audioCtx.currentTime&&(this.playButton.disabled=!0)},this._startTime+=i.duration,this._samples=new Int16Array(0)}play(){return n(this,void 0,void 0,(function*(){yield this._audioCtx.resume(),this.playButton.innerHTML='<i class="fa fa-pause"></i>',this._isPlaying=!0}))}pause(){return n(this,void 0,void 0,(function*(){yield this._audioCtx.suspend(),this.playButton.innerHTML='<i class="fa fa-play"></i>',this._isPlaying=!1}))}volume(e){this._gainNode.gain.value=e}reset(){this._samples=new Int16Array(0),this._allSamples=new Int16Array(0),this.playButton.disabled=!1,this._isDone=!1,this.play()}destroy(){this._interval&&clearInterval(this._interval),this._samples=new Int16Array(0),this._allSamples=new Int16Array(0),this._audioCtx.close()}}t.PCMPlayer=a,t.default=a},8330:e=>{e.exports=JSON.parse('{"name":"ipyaudio","version":"0.1.29","description":"A Jupyter Widget for Web Audio Playing and Recording.","keywords":["jupyter","jupyterlab","jupyterlab-extension","widgets"],"files":["lib/**/*.js","dist/*.js","css/*.css"],"homepage":"https://github.com/pengzhendong/ipyaudio","bugs":{"url":"https://github.com/pengzhendong/ipyaudio/issues"},"license":"BSD-3-Clause","author":{"name":"Zhendong Peng","email":"pzd17@tsinghua.org.cn"},"main":"lib/index.js","types":"./lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pengzhendong/ipyaudio.git"},"scripts":{"build":"jlpm run build:lib && jlpm run build:nbextension && jlpm run build:labextension:dev","build:prod":"jlpm run build:lib && jlpm run build:nbextension && jlpm run build:labextension","build:labextension":"jupyter labextension build .","build:labextension:dev":"jupyter labextension build --development True .","build:lib":"tsc","build:nbextension":"webpack","clean":"jlpm run clean:lib && jlpm run clean:nbextension && jlpm run clean:labextension","clean:lib":"rimraf lib","clean:labextension":"rimraf ipyaudio/labextension","clean:nbextension":"rimraf ipyaudio/nbextension/static/index.js","lint":"eslint . --ext .ts,.tsx --fix","lint:check":"eslint . --ext .ts,.tsx","prepack":"jlpm run build:lib","test":"jest","watch":"npm-run-all -p \\"watch:*\\"","watch:lib":"tsc -w","watch:nbextension":"webpack --watch --mode=development","watch:labextension":"jupyter labextension watch ."},"dependencies":{"@jupyter-widgets/base":"^1.1.10 || ^2 || ^3 || ^4 || ^5 || ^6","bootstrap":"^5.3.5","jupyter-dataserializers":"^3.0.1","lodash.merge":"^4.6.2"},"devDependencies":{"@babel/core":"^7.23.7","@babel/preset-env":"^7.23.8","@jupyter-widgets/base-manager":"^1.0.7","@jupyterlab/builder":"^4.0.11","@lumino/application":"^2.3.0","@lumino/widgets":"^2.3.1","@types/jest":"^29.5.11","@types/webpack-env":"^1.18.4","@typescript-eslint/eslint-plugin":"^6.19.1","@typescript-eslint/parser":"^6.19.1","acorn":"^8.11.3","css-loader":"^6.9.1","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","fs-extra":"^11.2.0","identity-obj-proxy":"^3.0.0","jest":"^29.7.0","mkdirp":"^3.0.1","npm-run-all":"^4.1.5","prettier":"^3.2.4","rimraf":"^5.0.5","source-map-loader":"^5.0.0","style-loader":"^3.3.4","ts-jest":"^29.1.2","ts-loader":"^9.5.1","typescript":"~5.3.3","wavesurfer.js":"^7.9.1","webpack":"^5.90.0","webpack-cli":"^5.1.4"},"devDependenciesComments":{"@jupyterlab/builder":"pinned to the latest JupyterLab 3.x release","@lumino/application":"pinned to the latest Lumino 1.x release","@lumino/widgets":"pinned to the latest Lumino 1.x release"},"jupyterlab":{"extension":"lib/plugin","outputDir":"ipyaudio/labextension/","sharedPackages":{"@jupyter-widgets/base":{"bundled":false,"singleton":true}}}}')},8661:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%23198754%27 d=%27M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1%27/%3e%3c/svg%3e"},8734:e=>{e.exports="data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%28255, 255, 255, 0.25%29%27/%3e%3c/svg%3e"},9155:function(e,t,i){var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(s,a){function r(e){try{l(n.next(e))}catch(e){a(e)}}function o(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,o)}l((n=n.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=s(i(423)),r=s(i(980)),o=s(i(8659)),l=s(i(8541)),c=s(i(1427)),d=s(i(3875)),u=s(i(8078)),h=i(2465),p=i(7997);class m{constructor(e){this._isInitialized=!1,this._isReady=!1,this._isStreaming=!1,this.el=(0,p.createElement)("div","lm-Widget"),this._container=(0,p.createElement)("div","waveform"),this._duration=(0,p.createElement)("div","duration","0:00"),this._currentTime=(0,p.createElement)("div","time","0:00"),this._container.append(this._duration,this._currentTime),this.el.append(this._container),this._config=e}get url(){return this._isStreaming?this._pcmPlayer.url:(0,p.createObjectURL)(this._wavesurfer.getDecodedData())}set sampleRate(e){this._isStreaming&&(this._pcmPlayer.sampleRate=e),this._wavesurfer.options.sampleRate=e}reset(e){this._isStreaming=e,e?(this._pcmPlayer.reset(),this._pcmPlayer.playButton.hidden=!1):this._pcmPlayer.playButton.hidden=!0,this._wavesurfer.setTime(0)}load(e){return n(this,void 0,void 0,(function*(){this._isStreaming&&(this._pcmPlayer.feed(e),e=this.url),this._isInitialized||(yield this._initPromise),this._wavesurfer.load(e)}))}play(){return n(this,void 0,void 0,(function*(){this._isStreaming&&!this._pcmPlayer.playButton.disabled?this._pcmPlayer.play():(this._isReady||(yield this._readyPromise),this._wavesurfer.play())}))}pause(){this._isStreaming&&!this._pcmPlayer.playButton.disabled?this._pcmPlayer.pause():this._wavesurfer.pause()}setDone(){this._pcmPlayer.setDone()}createPCMPlayer(){this._pcmPlayer=new u.default({channels:1,sampleRate:this._config.options.sampleRate}),this._pcmPlayer.playButton.hidden=!0,this.el.append(this._pcmPlayer.playButton)}createDownloadButton(){const e=(0,p.createElement)("button","btn btn-success my-3"),t="zh"===this._config.language?"下载":"Download";e.innerHTML=`${t} <i class="fa fa-download"></i>`,e.onclick=()=>{const e=document.createElement("a");e.href=this.url,e.download="audio.wav",e.click()},this.el.append(e)}static createPlugins(e){var t;const i={hover:()=>{var t;return r.default.create(null===(t=e.pluginOptions)||void 0===t?void 0:t.hover)},minimap:()=>{var t,i;return o.default.create(Object.assign(Object.assign({},null===(t=e.pluginOptions)||void 0===t?void 0:t.minimap),{plugins:[r.default.create(Object.assign(Object.assign({},null===(i=e.pluginOptions)||void 0===i?void 0:i.hover),{lineWidth:1}))]}))},spectrogram:()=>{var t;return l.default.create(null===(t=e.pluginOptions)||void 0===t?void 0:t.spectrogram)},timeline:()=>{var t;return c.default.create(null===(t=e.pluginOptions)||void 0===t?void 0:t.timeline)},zoom:()=>{var t;return d.default.create(null===(t=e.pluginOptions)||void 0===t?void 0:t.zoom)}};return Array.from(null!==(t=e.plugins)&&void 0!==t?t:[]).map((e=>{var t;return null===(t=i[e])||void 0===t?void 0:t.call(i)})).filter(Boolean)}createWaveSurfer(){this._wavesurfer=a.default.create(Object.assign(Object.assign({},this._config.options),{container:this._container,plugins:m.createPlugins(this._config)})),this._initPromise=new Promise(((e,t)=>{this._wavesurfer.on("init",(()=>{this._isInitialized=!0,e()})),this._wavesurfer.on("error",(e=>t(e)))})),this._readyPromise=new Promise(((e,t)=>{this._wavesurfer.on("ready",(()=>{this._isReady=!0,e()})),this._wavesurfer.on("error",(e=>t(e)))})),this._wavesurfer.on("interaction",(()=>this._wavesurfer.playPause())),this._wavesurfer.on("decode",(e=>this._duration.textContent=(0,p.formatTime)(e))),this._wavesurfer.on("timeupdate",(e=>this._currentTime.textContent=(0,p.formatTime)(e)))}static create(e){const t=new m(e);return t.createWaveSurfer(),t.createPCMPlayer(),t.createDownloadButton(),t.el.appendChild((0,h.createRewardDropdown)(e.language||"en")),t}}t.default=m}}]);
|