pre.js change test
This commit is contained in:
91
src/pre.js
91
src/pre.js
@@ -50,72 +50,77 @@ class Recognizer extends EventTarget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
class Model extends EventTarget {
|
class Model extends EventTarget {
|
||||||
constructor() {
|
constructor(url, storepath) {
|
||||||
super()
|
super()
|
||||||
}
|
|
||||||
_init(url, storepath) {
|
|
||||||
this.obj = new Module.model(url, storepath, objs.length)
|
this.obj = new Module.model(url, storepath, objs.length)
|
||||||
objs.push(this)
|
}
|
||||||
|
delete() {
|
||||||
|
this.obj.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class SpkModel extends EventTarget {
|
||||||
|
constructor(url, storepath) {
|
||||||
|
super()
|
||||||
|
this.obj = new Module.spkModel(url, storepath, objs.length)
|
||||||
|
}
|
||||||
|
delete() {
|
||||||
|
this.obj.delete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Module.deleteAll = () => {
|
Module.deleteAll = () => {
|
||||||
objs.forEach(obj => obj.delete())
|
objs.forEach(obj => obj.delete())
|
||||||
}
|
}
|
||||||
Module.makeModel = async (url, storepath, id) => {
|
Module.makeModel = async (url, storepath) => {
|
||||||
let mdl = new Model()
|
let mdl = new Model(url, storepath)
|
||||||
mdl.obj(new Module.model(url, storepath, objs.length))
|
return new Promise((resolve, reject) => {
|
||||||
objs.push(mdl)
|
|
||||||
let retval = new Promise((resolve, reject) => {
|
|
||||||
rec.addEventListener("_continue", (ev) => {
|
|
||||||
if(mdl.checkModel()) {
|
if(mdl.checkModel()) {
|
||||||
|
objs.push(mdl)
|
||||||
|
resolve(mdl)
|
||||||
}
|
}
|
||||||
|
(async () => {
|
||||||
|
let res = await fetch(url)
|
||||||
|
if(!res.ok) {
|
||||||
|
reject("Unable to download model")
|
||||||
|
}
|
||||||
|
let arr = await res.arrayBuffer()
|
||||||
|
let mdlMem = Module._malloc(arr.byteLength) // Will free in C++
|
||||||
|
Module.HEAP8.set(new Int8Array(arr), mdlMem)
|
||||||
|
mdl.addEventListener("_continue", (ev) => {
|
||||||
if(ev.details === ".") {
|
if(ev.details === ".") {
|
||||||
|
objs.push(mdl)
|
||||||
resolve(mdl)
|
resolve(mdl)
|
||||||
}
|
}
|
||||||
reject(ev.details)
|
reject(ev.details)
|
||||||
}, {once : true})
|
}, {once : true})
|
||||||
|
|
||||||
})
|
|
||||||
let mdlMem
|
|
||||||
try {
|
|
||||||
|
|
||||||
let res = await fetch(url)
|
|
||||||
if(!res.ok) throw res.statusText
|
|
||||||
let arr = await res.arrayBuffer()
|
|
||||||
mdlMem = Module._malloc(arr.byteLength) // Will free in C++
|
|
||||||
Module.HEAP8.set(new Int8Array(arr), mdlMem)
|
|
||||||
mdl.afterFetch(mdlMem, arr.byteLength)
|
mdl.afterFetch(mdlMem, arr.byteLength)
|
||||||
}
|
})()
|
||||||
catch(e) {
|
})
|
||||||
mdl.delete()
|
|
||||||
return Promise.reject(e.message || e)
|
|
||||||
}
|
|
||||||
objs.push(mdl)
|
|
||||||
return mdl
|
|
||||||
}
|
}
|
||||||
Module.makeSpkModel = async (url, storepath, id) => {
|
Module.makeSpkModel = async (url, storepath, id) => {
|
||||||
let mdl = new Module.SpkModel(storepath, id)
|
let mdl = new Model(url, storepath)
|
||||||
let mdlMem
|
return new Promise((resolve, reject) => {
|
||||||
try {
|
if(mdl.checkModel()) {
|
||||||
if(mdl.checkModelFiles() && mdl.checkModelId()) {
|
|
||||||
objs.push(mdl)
|
objs.push(mdl)
|
||||||
return mdl
|
resolve(mdl)
|
||||||
}
|
}
|
||||||
|
(async () => {
|
||||||
let res = await fetch(url)
|
let res = await fetch(url)
|
||||||
if(!res.ok) throw res.statusText
|
if(!res.ok) {
|
||||||
|
reject("Unable to download model")
|
||||||
|
}
|
||||||
let arr = await res.arrayBuffer()
|
let arr = await res.arrayBuffer()
|
||||||
mdlMem = Module._malloc(arr.byteLength)
|
let mdlMem = Module._malloc(arr.byteLength) // Will free in C++
|
||||||
Module.HEAP8.set(new Int8Array(arr), mdlMem)
|
Module.HEAP8.set(new Int8Array(arr), mdlMem)
|
||||||
if(!mdl.afterFetch(mdlMem, arr.byteLength)) throw "Unable to extract model and write ID"
|
mdl.addEventListener("_continue", (ev) => {
|
||||||
if(!mdl.checkModelFiles()) throw "Model contains invalid model files"
|
if(ev.details === ".") {
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
mdl.delete()
|
|
||||||
return Promise.reject(e.message || e)
|
|
||||||
}
|
|
||||||
objs.push(mdl)
|
objs.push(mdl)
|
||||||
return mdl
|
resolve(mdl)
|
||||||
|
}
|
||||||
|
reject(ev.details)
|
||||||
|
}, {once : true})
|
||||||
|
mdl.afterFetch(mdlMem, arr.byteLength)
|
||||||
|
})()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
Module.makeRecognizer = (model, sampleRate) => {
|
Module.makeRecognizer = (model, sampleRate) => {
|
||||||
let rec = new Recognizer()
|
let rec = new Recognizer()
|
||||||
|
|||||||
Reference in New Issue
Block a user