sigsep / open-unmix-js Goto Github PK
View Code? Open in Web Editor NEWweb based audio unmixing
Home Page: https://sigsep.github.io/js
License: MIT License
web based audio unmixing
Home Page: https://sigsep.github.io/js
License: MIT License
while waiting users should be able to know the current wait status (aka. current block out of maximum number of blocks)
Long tracks take forever currently and also might crash the browser. Can we trigger a warning when the track is longer than 30s to allow user to abort the separation?
The original open-unmix model is quite slow and currently only runs on CPU.
e.g. this affects the package.json files
Instead of providing an upload we should also provide a url option. This should especially be used to so that we can provide a demo track.
a callback function should be supported so that the UI would be able to get the current progress in percent.
e.g. remove
currently the model is expected to be running stereo. However, I also uploaded a mono model for speech enhancement where nb_channels = 1
.
This can be implemented in the following way:
model(input)
the output mask would need to be duplicated again.recent chrome versions are fine using webworkers + gpu. See this article: https://medium.com/@wl1508/webworker-in-tensorflowjs-49a306ed60aa
In this task you get familiar with the most relevant signal processing that we need to perform separation with open-unmix or spleeter.
Pre-processing should be entirely in javascript but tested against python code:
When #8 is addressed the next step is to split the processing code.
Currently we have lot of duplicated code in demo/src/lib/umx.js
and src/open-unmix.js
.
We also have two npm packages: umx_js_demo
(demo app) and open-unmix-js
(the one that should live on npm)
src/open-unmix.js
. This should basically export two functions. One that loads a model given a url (not there yet, since its hardcoded) and another one that actually process buffers (modelProcess
).src/open-unmix.js
.That means src/open-unmix.js
should work in node as well as browser. We can maybe re-add specific node function to load audio from cli, but I don't think this is high priority right now.
@deltonvaz @ClaraJacintho Do you like this?
One thing I don't know how to do: how can we add the open-unmix-js
dev dependencies from umx_js_demo
until the package is not registered on npm?
Currently the model parameters set globally when loading the lib. This makes changing the parameters when loading a new model a little bit cumbersome.
Therefore we should allow to load a model and also pass its parameters. The following ones are necessary:
// Fourier Params
const FRAME_LENGTH = config.fourierParams.frameLength
const HOP_LENGTH = config.fourierParams.hopLength
const FFT_SIZE = config.fourierParams.fftSize
// MODEL input dimensions
const N_FREQUENCIES = config.modelInput.N_FREQUENCIES
const N_FRAMES = config.modelInput.N_FRAMES
const N_CHANNELS = config.modelInput.N_CHANNELS
const N_BATCHES = config.modelInput.N_BATCHES
lets make the root folder the main folder for the npm package. The code for the vue-demo should be put in a subfolder like demo
. The final (servable) demo should make available only in the gh-pages branch
spleeter_js implements a fully working example of a similar project that includes STFT and tensorflowjs model inference to do source separation.
The source code can be inspected in the web page.
First steps include:
write a python script that lives in a subfolder called "models"
do not forget to add (conda) environment files.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.