2019-10-04 10:55:18 +00:00
|
|
|
// @flow
|
|
|
|
|
|
|
|
// Script expects to find rnnoise webassembly binary in the same public path root, otherwise it won't load
|
|
|
|
// During the build phase this needs to be taken care of manually
|
|
|
|
import rnnoiseWasmInit from 'rnnoise-wasm';
|
2020-05-20 10:57:03 +00:00
|
|
|
|
2019-10-04 10:55:18 +00:00
|
|
|
import RnnoiseProcessor from './RnnoiseProcessor';
|
|
|
|
|
|
|
|
export { RNNOISE_SAMPLE_LENGTH } from './RnnoiseProcessor';
|
|
|
|
export type { RnnoiseProcessor };
|
|
|
|
|
|
|
|
let rnnoiseWasmInterface;
|
|
|
|
let initializePromise;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a new instance of RnnoiseProcessor.
|
|
|
|
*
|
|
|
|
* @returns {Promise<RnnoiseProcessor>}
|
|
|
|
*/
|
|
|
|
export function createRnnoiseProcessor() {
|
|
|
|
if (!initializePromise) {
|
|
|
|
initializePromise = new Promise((resolve, reject) => {
|
|
|
|
rnnoiseWasmInterface = rnnoiseWasmInit({
|
|
|
|
onRuntimeInitialized() {
|
|
|
|
resolve();
|
|
|
|
},
|
|
|
|
onAbort(reason) {
|
|
|
|
reject(reason);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return initializePromise.then(
|
|
|
|
() => new RnnoiseProcessor(rnnoiseWasmInterface)
|
|
|
|
);
|
|
|
|
}
|