{"id":886,"date":"2026-03-18T10:56:06","date_gmt":"2026-03-18T09:56:06","guid":{"rendered":"https:\/\/haizytiles.reinerstilesets.de\/?page_id=886"},"modified":"2026-03-21T09:33:15","modified_gmt":"2026-03-21T08:33:15","slug":"sgd-portable","status":"publish","type":"page","link":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/sgd-portable\/","title":{"rendered":"SGD Portable"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"886\" class=\"elementor elementor-886\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ed4b92 e-flex e-con-boxed e-con e-parent\" data-id=\"5ed4b92\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-ebde481 e-con-full e-flex e-con e-child\" data-id=\"ebde481\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22effd1 elementor-widget elementor-widget-image\" data-id=\"22effd1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/haizytiles.reinerstilesets.de\/wp-content\/uploads\/2026\/03\/analyzed.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"sgd portable\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6ODkwLCJ1cmwiOiJodHRwczpcL1wvaGFpenl0aWxlcy5yZWluZXJzdGlsZXNldHMuZGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzAzXC9hbmFseXplZC5qcGcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1353\" height=\"1231\" src=\"https:\/\/haizytiles.reinerstilesets.de\/wp-content\/uploads\/2026\/03\/analyzed.jpg\" class=\"attachment-full size-full wp-image-890\" alt=\"\" srcset=\"https:\/\/haizytiles.reinerstilesets.de\/wp-content\/uploads\/2026\/03\/analyzed.jpg 1353w, https:\/\/haizytiles.reinerstilesets.de\/wp-content\/uploads\/2026\/03\/analyzed-300x273.jpg 300w, https:\/\/haizytiles.reinerstilesets.de\/wp-content\/uploads\/2026\/03\/analyzed-1024x932.jpg 1024w, https:\/\/haizytiles.reinerstilesets.de\/wp-content\/uploads\/2026\/03\/analyzed-768x699.jpg 768w\" sizes=\"(max-width: 1353px) 100vw, 1353px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-22fef61 e-con-full e-flex e-con e-child\" data-id=\"22fef61\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0096ea0 elementor-widget elementor-widget-text-editor\" data-id=\"0096ea0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>SGD Portable is a self-contained, portable web interface that lets you classify music genres using the powerful MAEST model. And displays some tags fitting to the detected music styles.<br \/><br \/>It is portable, and easy to remove. Everything installs and runs in a virtual environment. Download the zip file, click at the bat file to start the install process. And when done it opens in a browser windows where you can then drop audio files to analyze them.<\/p>\n<p>The project is open source under MIT license, and can be found at Github too: <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/github.com\/ReinerBforartists\/sgd-portable\">https:\/\/github.com\/ReinerBforartists\/sgd-portable<\/a><\/span><\/p>\n<p>Release video at Youtube: <br \/><span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.youtube.com\/watch?v=Vvq__rRjRs4\">https:\/\/www.youtube.com\/watch?v=Vvq__rRjRs4<\/a><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4576b37a e-con-full e-flex e-con e-parent\" data-id=\"4576b37a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16065778 elementor-widget elementor-widget-text-editor\" data-id=\"16065778\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t\n<h3><b><code>\u00a0\u21e9 <\/code><\/b>Downloads<\/h3>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ccb19c4 e-con-full e-flex e-con e-child\" data-id=\"ccb19c4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-397b999 e-con-full e-flex e-con e-child\" data-id=\"397b999\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f5bf83f elementor-widget elementor-widget-text-editor\" data-id=\"f5bf83f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>20.03.2026 &#8211; Version 1.0.2<br \/>CPU version requires 2 gb of free disk space. The Cuda version needs 6Gb of free disk space &#8211; 32kb<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-641a1e7 e-con-full e-flex e-con e-child\" data-id=\"641a1e7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5eb9a30 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"5eb9a30\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/haizytiles.reinerstilesets.de\/apps\/SGD_Portable_CPU_v102.zip\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download CPU version<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-250cfa2 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"250cfa2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/haizytiles.reinerstilesets.de\/apps\/SGD_Portable_CUDA_v102.zip\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download CUDA version<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2196064 e-flex e-con-boxed e-con e-parent\" data-id=\"2196064\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8dec5a7 elementor-widget elementor-widget-text-editor\" data-id=\"8dec5a7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3>\u2728 What It Does<\/h3>\n<p>Simply drag &amp; drop any audio file (MP3, WAV, etc.) into the browser interface, and SGD Portable will analyze it and show you:<\/p>\n<ul>\n<li>\ud83c\udfb8 Main genre predictions<\/li>\n<li>\ud83d\udd0d Detailed subgenre classification (MAEST contains over 400 styles!)<\/li>\n<li>\u2601\ufe0f Interactive tag cloud visualization<\/li>\n<li>\ud83d\udcca Beautiful charts showing confidence scores<\/li>\n<\/ul>\n<hr \/>\n<h3>\ud83c\udfaf Key Features<\/h3>\n<p><strong>\ud83d\udce6 Truly Portable &#8211; <\/strong>Everything in one folder \u2013 embedded Python, all dependencies included<\/p>\n<p><strong>\u26a1 Two Versions &#8211;<\/strong> CUDA (GPU accelerated) or CPU \u2013 you choose what fits your hardware<\/p>\n<p><strong>\ud83d\udda5\ufe0f No Setup<\/strong> &#8211; Double-click\u00a0<code>start_cpu.bat<\/code>\u00a0or\u00a0<code>start_CUDA.bat<\/code>, wait for the download to finish, and the web UI opens automatically<\/p>\n<p><strong>\ud83c\udf9a\ufe0f Beautiful UI<\/strong> &#8211; Gradio-based with dark\/light theme, file upload, charts, and tag cloud<\/p>\n<p><strong>\ud83e\udde0 Smart Model<\/strong> &#8211; Uses MAEST \u2013 trained on millions of tracks, knows over 400 genres<\/p>\n<hr \/>\n<h3>\ud83d\ude80 Get Started in 3 Steps<\/h3>\n<ol>\n<li><strong>Download<\/strong>\u00a0the right ZIP for your system (CUDA or CPU)<\/li>\n<li><strong>Extract<\/strong>\u00a0the folder anywhere \u2013 USB stick, desktop, whatever<\/li>\n<li><strong>Double-click<\/strong>\u00a0<code>start_cpu.bat<\/code>\u00a0or\u00a0<code>start_CUDA.bat<\/code>\u00a0and wait for your browser to open<\/li>\n<\/ol>\n<p>That&#8217;s it! The first run downloads Python, Pytorch etc, the AI model (~350 MB), and then you&#8217;re ready to analyze.<\/p>\n<p>Note that it takes a few moments until everything is downloaded and installed. The CPU version has 2 Gb in size after everything is installed, the CUDA version 6 Gb.<\/p>\n<hr \/>\n<h3>\u26a0\ufe0f\u00a0A Quick Note<\/h3>\n<p>The MAEST model itself is CC BY-NC 4.0 \u2013 so\u00a0<strong>non-commercial use only<\/strong>. But the tag cloud and tooling are MIT licensed, so feel free to build on them!<\/p>\n<p>Also \u2013 AI makes mistakes! Always trust your ears first \ud83d\ude09<\/p>\n<hr \/>\n<h3>\ud83d\ude4f Credits &amp; Thanks<\/h3>\n<ul>\n<li>MAEST model by\u00a0<a href=\"https:\/\/mtg.upf.edu\/\" rel=\"nofollow\">MTG-UPF<\/a>\u00a0(Universitat Pompeu Fabra)<\/li>\n<li>Built with Gradio, PyTorch, and lots of \u2615<\/li>\n<\/ul>\n<p>Made with \u2764\ufe0f by Reiner Prokein<\/p>\n<hr \/>\n<h3>History<\/h3>\n<p>20.03.2026 &#8211; release version 1.0.2<br \/>Made the Cuda version quit installation when there is no Cuda compatible device found. And fixed a bug in the charts. Sometimes a genre had two bars.<\/p>\n<p>19.03.2026 &#8211; release version 1.0.1<br \/>There was a cosmetic problem with the download values displayed at install. Now the values are more realistic.<\/p>\n<p>18.03.2026 &#8211; release version 1.0.0<\/p>\n<p>This tool is one of those crazy ideas that I had for a while. Why not develop a tool that gives you back the genre of a song and gives you some tags to it too? That was always the part that I was in trouble with when releasing my own songs: The genre, and the tags.<\/p>\n<p>So I fired up ChatGPT in early February and started just for fun to ask, &#8220;Hey, how can this be done?&#8221; Before I counted to three, I was deep in the matter and started to develop this tool with Gradio. LLMs were a big help here. But it needed more than one correcting hand. Always amazing how ChatGPT and friends does everything to prevent giving the correct result even with the most detailed inquiry. But at the same time there are these rare moments where AI really does what you ask it for.<\/p>\n<p>The base code itself, up to the point to add a model and click the analyze button, was surprisingly quickly developed within two days. The time-consuming part was then the model, and as usual the finishing touches.<\/p>\n<p>One of the biggest trouble points was the AI model itself. When I started my research I only got pointed at a model from 2016 with 16 genres. Well, it worked, but it was too limited for my needs. I haven&#8217;t found anything better at that point. And so I started some experiments to train my own model. Better than these sixteen genres should always be possible, I thought. And there are enough free audio resources available to train your model.<\/p>\n<p>Well, I have then set up a virtual training environment on my Linux installation, and tried nearly every available method to reach the goal. Starting with the weakest one, MFCC, going through the advanced possible solutions like CNN and PANNs. Always in hope that now it should finally give a good result. I started with the smallest FMA set first, which had seven gigabytes. In the end I must have had around 400 GB material from FMA (Free Music Archive) and Jamendo. And the result was still simply arbitrary.<\/p>\n<p>Here&#8217;s a list of the training methods I tried along the way. Don&#8217;t worry, before the research I didn&#8217;t know them either:<\/p>\n<p><strong>MFCC-based classification<\/strong> \u2014 simple audio features (mel-frequency cepstral coefficients) directly into a classifier without a pre-trained model. Unusable. The model was basically throwing dice.<br \/><strong>CNN + custom Mel spectrograms<\/strong> \u2014 self-trained from scratch, 10-25% confidence. A bit better than throwing dice. But still unusable.<br \/><strong>OpenL3 + MLP<\/strong> \u2014 trained on music, theoretically the best choice, but incompatible with my chosen Linux environment. So I was not able to try it out.<br \/><strong>PANNs CNN14 + MLP (frozen)<\/strong> \u2014 PyTorch, GPU runs, but t-SNE shows complete chaos \u2014 embeddings don&#8217;t differentiate genres at all, 19% accuracy.<br \/><strong>MusicNN<\/strong> \u2014 requires NumPy &lt; 1.17 and TensorFlow,\u00a0 again incompatible with Python 3.12. So I didn&#8217;t try this method neither.<br \/><strong>MERT<\/strong> \u2014 PyTorch, Python 3.12 compatible, specifically trained on music. The results were completely random.<br \/><strong>PANNs Fine-Tuning<\/strong> \u2014 Training CNN14 end-to-end instead of using a frozen embedder. Another possible solution. But I did not try out this last method anymore. I realized that a self-trained model will not lead me to my goal. Not enough clean training data.<\/p>\n<p>So that was quite an odyssey training my own model. I learned a lot on my way, but in the end I had to give up this approach.<\/p>\n<p>I was still not willing to easily give up this project though. So I did research again. And this time I got a useful answer. First I tried Essentia from Onyx. But again I got no really useful result. The last model I tried, Maest, then finally gave a useful result. And it is trained on millions of correct labeled songs instead of a few tens of thousands from my approach. The caveat is that Maest has a non-commercial license. So you are not allowed to use its result commercially. But you can use the tag cloud. This is my work and not derived from Maest. And non commercial is nowadays more than enough for my needs.<\/p>\n<p>All in all, this project was a bit more than four weeks of fun. I know now how i can train my own AI model. And I finally know what genres my own songs are!<\/p>\n<p>Enjoy<\/p>\n<p>&#8211; Reiner<\/p>\n<p><br \/><br \/><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>SGD Portable is a self-contained, portable web interface that lets you classify music genres using the powerful MAEST model. And displays some tags fitting to the detected music styles. It is portable, and easy to remove. Everything installs and runs in a virtual environment. Download the zip file, click at the bat file to start [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-886","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/pages\/886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/comments?post=886"}],"version-history":[{"count":34,"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/pages\/886\/revisions"}],"predecessor-version":[{"id":933,"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/pages\/886\/revisions\/933"}],"wp:attachment":[{"href":"https:\/\/haizytiles.reinerstilesets.de\/index.php\/wp-json\/wp\/v2\/media?parent=886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}