stemrollerapp / stemroller Goto Github PK
View Code? Open in Web Editor NEWIsolate vocals, drums, bass, and other instrumental stems from any song
Home Page: https://www.stemroller.com
License: Other
Isolate vocals, drums, bass, and other instrumental stems from any song
Home Page: https://www.stemroller.com
License: Other
Hey,
I've tried it few time and I understood that same file which I successfully extracted vocals from in windows with Intel CPU,
Same thing is not working with M1 CPU and neither any other thing that I search and I try.
it will be in process like 20 hours something and nothing happens.
Using apple M1 chip.
hello - just throwing this in here. I expected to be able to load some of my own music into the app to be split
Diarization techniques (I guess) to identify and separate multiple vocals. A use-case: extracting multiple speakers or characters from a movie (audio track) which was my motivation for this request as a feature.
Many users seem to want to run StemRoller on macOS versions as old as Sierra (10.12), but splitting consistently fails on that platform. Not sure if it's possible to fix, but hopefully repacking demucs-cxfreeze
should fix the issue.
This project would have a significant speed boost on mac if the demucs model were to use mps instead of cpu in a similar way that the windows binary uses the cuda backend.
Thanks for sharing this amazing project, only for curiosity
Is it possible that we can get the isolation of guitars, synths and pianos individually instead of get mixed in a single audio file?
Thank you in advanced
Is it possible to modify the app so that it can become a web based front end? I've noticed that the app is based on electron. If that's really the case, I can easily deploy it onto a powerful remote home server. That will increase freedom of deployment.
As the title, I want to change output path, but I don't find any option to set that, are there any ways to change it?
It's give me error:
[electron] BEGIN processing video "NZp1ZSxgi4U" - "2017"
[electron] Downloading YouTube video "NZp1ZSxgi4U"; storing in "/tmp/StemRoller-pybH23/yt-audio"
[electron] Splitting video "NZp1ZSxgi4U"; 2 jobs using model "mdx_extra_q"...
[electron] treeKill process undefined
[electron] Trace: treeKill failed: Error: pid must be a number
[electron] at killCurChildProcess (/home/hoopengo/code/git/stemroller/main-src/processQueue.cjs:60:15)
[electron] at ChildProcess.<anonymous> (/home/hoopengo/code/git/stemroller/main-src/processQueue.cjs:77:7)
[electron] at ChildProcess.emit (node:events:527:28)
[electron] at ChildProcess._handle.onexit (node:internal/child_process:289:12)
[electron] at onErrorNT (node:internal/child_process:478:16)
[electron] at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
[electron] Trace: Error: spawn demucs-cxfreeze ENOENT
[electron] at ChildProcess._handle.onexit (node:internal/child_process:283:19)
[electron] at onErrorNT (node:internal/child_process:478:16)
[electron] at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {
[electron] errno: -2,
[electron] code: 'ENOENT',
[electron] syscall: 'spawn demucs-cxfreeze',
[electron] path: 'demucs-cxfreeze',
[electron] spawnargs: [
[electron] '/tmp/StemRoller-pybH23/yt-audio',
[electron] '-n',
[electron] 'mdx_extra_q',
[electron] '--repo',
[electron] '/home/hoopengo/code/git/stemroller/anyos-extra-files/Models',
[electron] '-j',
[electron] 2
[electron] ]
[electron] }
[electron] at processVideo (/home/hoopengo/code/git/stemroller/main-src/processQueue.cjs:217:13)
[electron] at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
Hi, awesome project, I've played it with countless hours (more than I'd like to admit)
I was trying to make installation of StemRoller easier on Mac using brew
. However, homebrew/homebrew-cask has stopped taking MRs for projects that don't have a signed app:
$ brew audit --new-cask stemroller
:
audit for stemroller: failed
- Signature verification failed:
/private/tmp/d20220916-62803-f13aen/StemRoller.app: code object is not signed at all
In architecture: x86_64
macOS on ARM requires applications to be signed. Please contact the upstream developer to let them know they should sign their app.
Error: 1 problem in 1 cask detected
Example: Homebrew/homebrew-cask#131229 (comment) (read that and the next comment)
I don't have an ARM Mac but the downside seems quite significant:
Please contact the upstream developer and ask them to codesign their application. Otherwise this will prevent the application from running on Apple Silicon machines without disabling Gatekeeper (which is not ideal).
Is this something that will take a non-significant amount of work? I think the returns on getting this done (Just a brew install --cask stemroller
as opposed to the current method) will help a lot.
If I try to load a local file, which has the character ű
anywhere in its path, then the splitting process fails.
It seems like characters starting from U+0100 (character code 256) are causing the problem: Ā
(U+0100), ā
(U+0101), etc. doesn't work, but ÿ
(U+00FF) and þ
(U+00FE) works.
Tested on windows, with the following paths: X:\ű\test.mp3
, and X:\ű.mp3
Console output:
[electron] BEGIN downloading/processing video "a327034531660779" - "test"
[electron] Splitting video "a327034531660779"; 4 jobs using model "htdemucs_ft"...
[electron] Running with "-d cpu" to force CPU instead of CUDA
[electron] child stderr:
[electron] C:\Development\demucs-cxfreeze-2\venv\lib\site-packages\torch\_jit_internal.py:839: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample at 0x000001877F20E9D0>.
...
many more warnings
...
[electron]
[electron] child stderr:
[electron] C:\Development\demucs-cxfreeze-2\venv\lib\site-packages\torch\_jit_internal.py:839: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function norm at 0x000001877F401310>.
[electron]
[electron] child stderr:
[electron] Traceback (most recent call last):
[electron] File "C:\Development\demucs-cxfreeze-2\venv\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 138, in run
[electron]
[electron] child stderr:
[electron] File "C:\Development\demucs-cxfreeze-2\venv\Lib\site-packages\cx_Freeze\initscripts\console.py", line 16, in run
[electron]
[electron] child stderr:
[electron] File "main.py", line 4, in <module>
[electron]
[electron] child stderr:
[electron] File "C:\Development\demucs-cxfreeze-2\venv\lib\site-packages\demucs\separate.py", line 158, in main
[electron]
[electron] child stderr:
[electron] File "C:\Users\Nunya\AppData\Local\Programs\Python\Python39\lib\encodings\cp1252.py", line 19, in encode
[electron]
[electron] child stderr:
[electron] UnicodeEncodeError: 'charmap' codec can't encode character '\u0171' in position 20: character maps to <undefined>
[electron]
[electron] child stdout:
[electron] Selected model is a bag of 4 models. You will see that many progress bars per track.
[electron] Separated tracks will be stored in X:\temp\StemRoller-ukGKgl\separated\htdemucs_ft
[electron]
[electron] Trace: Error: Unable to find Demucs output directory
[electron] at findDemucsOutputDir (X:\stemroller\main-src\processQueue.cjs:156:9)
[electron] at async _processVideo (X:\stemroller\main-src\processQueue.cjs:212:26)
[electron] at async processVideo (X:\stemroller\main-src\processQueue.cjs:286:5)
[electron] at processVideo (X:\stemroller\main-src\processQueue.cjs:288:13)
The relevant part is probably this line:
UnicodeEncodeError: 'charmap' codec can't encode character '\u0171' in position 20: character maps to <undefined>
https://github.com/stemrollerapp/stemroller/assets/34815371/691dfd10-acf4-4977-b27f-d7bcac7169ed
Ive noticed this very minor issue on generated audio files where background noise or other effects will be brought up very rapidly.
There are multiple little lines of audio (in the image) that make a sort of rattling sound in your headphones when you listen to the track.
As you can see in the image they occur very frequently in this one audio track.
This issue is almost never seen on the "vocal" separation but very prominent on the "other" separation with less prominence but very mildly noticeable on the drums and bass too.
It makes a sort of tv static or clicking sound. Not sure if this is fixable or not but thought id make an issue for it to point it out.
Ive loved using Stemroller after switching from iZotope RX because it has so much more cleaner cuts and handles the audio easier. This however is the only drawback Ive come across and would like to make note of it, not sure if others have had this issue too.
It was very obvious on this one specific audio track that I got back.
Ive attacked a very short .mp4 containing only an short clip from the audio track of the issue.
Unfortunately, I need to announce to everyone that realistically I will not be able to support StemRoller at all on Linux myself. I'd really like to get it working, but the huge variety of distros and possible system configurations (a good thing! Just inconvenient for packaging...) makes the situation significantly more complicated than on Windows or macOS. With the various responsibilities I have currently outside of StemRoller, I can't commit to support this - it's already been difficult re-bundling the latest Demucs release for Win/Mac platforms. The bottom line is, I really appreciate all the issues and pull requests I've received concerning Linux support, but I can't manage them myself right now.
I've never managed a large open-source project before, so am very open to feedback, but it seems to me that it may be best for anyone who is interested in packaging StemRoller for a certain distro to fork this repository, make the necessary changes to get it working on their distro, and then submit their forked version for inclusion via the distro's package manager. Once the changes are verified to work for many users of that distro, I'll consider merging your changes back into this repository, so hopefully it improves things for everyone. That might take a while though, as I'll need to test those changes on Windows/macOS too to make sure they don't break on those systems.
Thank you everyone for your patience and support so far, and I'm sorry I haven't really responded to the several open PR's/issues for Linux support. Just wanted to be transparent about what's going on, and hopefully create a thread here for anyone who's serious about getting this included in their distro's package manager. Feel free to drop information here on what was needed to fix it for you personally too, even if you don't plan to contribute back to packaging for your distro, as that may help others.
Hi! Great project :)
As far as I know, demucs supports GPU acceleration. I've noticed StemRoller only uses my CPU. I have an nvidia RTX 2070. Would it be possible to have at least a switch within the app to enable GPU acceleration?
Thank you!
Please add support/docs for Linux (from what I can gather it is just some additional steps that need to be performed): https://news.ycombinator.com/item?id=32360616
Two suggestion
Needs to support multiple files like a max of 18 to 25 files in one go from local stored files
Needs support for AMD GPUs AMD GPUs are 20% to 45% cheaper than same NVidia GPU that = to a AMD more people will be switching to AMD GPUs in the next few years.
This is such a fantastic tool, thank you so much for making it!
I mostly use it to separate the bass stem and use that to practice bass guitar (I hope to see guitar and piano stems coming with later version of Demucs!)
In my opinion, a great feature enhancement would be if there was a stem player built in, an instant way to listen to the separated tracks.
If this then had mute and solo buttons for all tracks this would make StemRoller a fantastic music practice tool. You'd be able to solo your instrument, to closely hear what the artist played, and then mute it and play along without the original stem.
Currently, the app simply displays a dialog box with the text "There was an error." This should be changed to something more descriptive, such as:
"Unable to process this file. Please ensure that you dropped an audio file, not a folder or other item."
TL;DR:
It's probably nothing but I figured it worthwhile to raise this based on increased activity around NPM packages (typo-naming packages, takeovers, etc).
Release:
Apple Release 2.0.3
StemRoller.App > Contents > MacOS
StemRoller - ec13e1d9a6af478e4fdad876f08f53acf31bd136fac0be3c2698a460eda054a3
(Haven't checked any others)
Issue:
The binary at StemRoller.App > Contents > MacOS > StemRoller
(within the app package itself) is hash matching Maestro Telegram Scraper.
It is not flagged as malicious likely due to legitimate utility in it's domain of use (scraping > communications) however in the context of an audio-splitting utility, is worthy further scrutiny unless the result of a niche runtime, hash collision, VirusTotal issue such as an index key:value / UX mismatch, or other reasonable explanation ( user error? : -) )
Decided to separate this from #1, since it should be trivial to make StemRoller run on Linux, but may be quite difficult to package it in a format that is compatible with many distros. Some questions to think about here:
ffmpeg
and demucs
, or rely on those provided by the distroSometimes I want to make sure I have selected the right Youtube video. Could you add a "View in Web Browser" button for each search result similar to the "View in File Browser" button that is displayed for completed separations?
Will there be an option to drag in our own files in the future versus internet search?
I really love the app and am blown away how much better it is than spleeter based apps. The quality is remarkable.
It's found anything I searched in seconds.
Thanks
Rob
First I want to say that this is a wonderful tool and does a great job separating tracks.
I'd like to know if a plugin for DAW integration would be in the works? Looking forward to contributing to this project when I have some free time.
Thanks in advance!
[ develop | ✚ 1 ]
✘ 11:09 daryl@nifflheim ~/src/stemroller $ npm run dev
> [email protected] dev
> cross-env NODE_ENV=dev STEMROLLER_RUN_FROM_SOURCE=true npm run dev:all
> [email protected] dev:all
> concurrently -k -n=svelte,electron -c='#ff3e00',blue "npm run dev:svelte" "npm run dev:electron"
[electron]
[electron] > [email protected] dev:electron
[electron] > electron .
[electron]
[svelte]
[svelte] > [email protected] dev:svelte
[svelte] > vite dev
[svelte]
[svelte]
[svelte] VITE v3.0.7 ready in 345 ms
[svelte]
[svelte] ➜ Local: http://localhost:5173/
[svelte] ➜ Network: use --host to expose
[svelte] files in the public directory are served at the root path.
[svelte] Instead of /static/fonts/Mukta/Mukta-Bold.ttf, use /fonts/Mukta/Mukta-Bold.ttf.
[svelte] files in the public directory are served at the root path.
[svelte] Instead of /static/fonts/Mukta/Mukta-Regular.ttf, use /fonts/Mukta/Mukta-Regular.ttf.
[electron] BEGIN processing video "39acedf8e552cea8" - "ID"
[electron] Splitting video "39acedf8e552cea8"; 4 jobs using model "mdx_extra_q"...
[electron] Trace: Error: Unable to find Demucs output directory
[electron] at findDemucsOutputDir (/home/daryl/src/stemroller/main-src/processQueue.cjs:148:9)
[electron] at async _processVideo (/home/daryl/src/stemroller/main-src/processQueue.cjs:205:26)
[electron] at async processVideo (/home/daryl/src/stemroller/main-src/processQueue.cjs:267:5)
[electron] at processVideo (/home/daryl/src/stemroller/main-src/processQueue.cjs:269:13)
I even created ~/Music/StemRoller
but I think it's complaining about /tmp
directories. Not really sure what could be causing this issue.
tmpfs /tmp tmpfs defaults,noatime,nosuid,mode=1777 0 0
I tried looking but ran out of time. entries
on processQueue.cjs
:140 is an empty list, thus no entries are evaluated.
Steps to reproduce:
What happens?
Nothing notable
What is expected?
The whole search bar text is highlited and selected.
Environment
Because of access only to macOS at the moment I was able to reproduce this only on the macOS build, in macOS Monterey (12.4). Version of the app is 1.0.0
I cannot reproduce this in the development version - current main branch commit
Very cool project! Just a heads-up that I added StemRoller to https://awesome-sveltekit.netlify.app/stemroller in janosh/awesome-sveltekit@942e227.
Let me know if any of the metadata needs to change. If not, feel free to close this issue.
Would like to look into using GitHub Actions or similar platform to automate builds for all three platforms (Windows, macOS, Linux). Will do some research at a later date, but if anyone has input/advice then please share it in this thread.
Would it be more performant to be able to choose a specific stem to isolate, and get two tracks (stem + remaining sounds) instead?
The abillity to pause and cancel processing, and the abillity remove queued songs
Since this is a long-running process, it would be really helpful to print some sort of progress/stdout/etc. to the user. I'd be happy to make a PR for this if I have time, but am leaving this here just in case.
See title.
See https://github.com/stemrollerapp/stemroller/blob/main/.github/workflows/build-windows.yml#L27 - StemRoller folder needs to be moved up one level from dist and placed adjacent to the SFX maker.
A lot of the work that I do that would be aided by StemRoller benefits from strict file organization, so it's a little annoying for me to have to move the output files around every single time I use it. Would it be possible to add a toggle to use the input file's directory instead of making a new folder in a designated output path?
This program is great, but is it possible to separate guitar and piano?
Since demucs in some cases, especially for vowel separation is a bit deficient, it would be nice to be able to select between different models, even to be able to combine them.
For example to extract and download with demucs and then clean with some echo model.
I love using StemRoller for its ease of use, keep up the good work <3
https://github.com/karaokenerds/python-audio-separator
https://github.com/Anjok07/ultimatevocalremovergui
Once a file is processed, are there parameters generated that could be saved for future use, or do I always have to re-process the file from scratch?
An example use case might be if I lost the output wav files, could I load a template saved by a previous run on the same file to more quickly extract the result?
User should be able to set the following preferences:
instrumental
and vocals
, and remove drums
, bass
, and other
)ffmpeg
after stems are finished processingOne of my audio files is 1 hour long. I don’t know if this software supports it. I tried it but it failed.
Is there any way to use it in swift
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.