Separare le tracce audio con l’IA su Home Server: Guida a Spleeter Web con Docker

Pubblicato da TheJoe il

Tempo di lettura stimato: 3 minuti

Chi lavora con l’audio, produce musica o gestisce un server casalingo conosce bene la soddisfazione di automatizzare processi complessi. Di recente ho deciso di affiancare al mio fidato setup per il mastering automatico (Matchering) un sistema per la separazione delle tracce audio (Stem Separation), con l’obiettivo di estrarre voci, batterie, bassi e strumenti da qualsiasi brano musicale direttamente dal mio home server.

La scelta è caduta su Spleeter Web, una splendida interfaccia grafica basata sul noto motore AI sviluppato da Deezer. L’installazione e la messa in produzione sul mio piccolo Lenovo ThinkCentre (spinto dalla CPU AMD M320t) hanno riservato qualche sfida tecnica interessante. Ecco com’è andata e quali lezioni ne ho tratto.

L’architettura: perché Spleeter Web è un gigante

A differenza di altri tool monolitici che si lanciano con un singolo comando Docker, Spleeter Web è una vera e propria applicazione web strutturata. Il suo ecosistema si compone di 5 container distinti che lavorano in sinergia:

  • Nginx: gestisce il frontend web e fa da reverse proxy.
  • API (Backend): il cuore in Python che riceve le istruzioni.
  • Celery (Fast & Slow): due worker separati per gestire le code di elaborazione dei file.
  • Redis: il database in-memory che coordina i messaggi tra backend e worker.

Questa struttura garantisce una gestione eccellente delle code, ma richiede risorse e qualche accortezza nella configurazione delle porte per evitare conflitti con altri servizi già presenti sul ThinkCentre.

Il primo scoglio: trasferire 9GB di immagini senza saturare la rete

Dopo aver testato lo stack in locale sul PC principale, l’idea di far scaricare nuovamente oltre 9GB di immagini Docker al ThinkCentre non mi allettava. La soluzione più efficiente è stata esportare l’intero stack dal PC locale in un unico archivio compresso e trasferirlo via SSH/SCP:

# Esportazione dal PC locale
docker save \
  jeffreyca/spleeter-web-nginx:latest \
  jeffreyca/spleeter-web-backend:latest \
  redis:6.0-buster | gzip > spleeter_full_stack.tar.gz

# Caricamento sul server via SSH
docker load < spleeter_full_stack.tar.gz

Con questo passaggio, l’avvio del file docker-compose.yml sul ThinkCentre è stato quasi istantaneo, senza scaricare un solo megabyte aggiuntivo da Internet.

Mi rendo conto che questa esigenza era solo mia, ma ho voluto includerla ugualmente. Per chi vuole fare una installazione tipica e lineare consiglio di seguire le note di installazione sul repo GitHub del progetto ufficiale.

La sfida hardware: spremere la CPU AMD M320t

I modelli di intelligenza artificiale per l’audio (come Spleeter o il più recente Demucs v4) sono estremamente famelici di risorse. Sul ThinkCentre, dove la CPU AMD M320t deve fare tutto il lavoro pesante di calcolo matematico senza l’ausilio di una GPU dedicata, la separazione richiede diversi minuti per traccia e mette a dura prova il processore.

Guarda qui:  Matchering: Il mastering audio diventa open source e "intelligente"

Nei PC compatti come i ThinkCentre (specie nei form factor Small Form Factor o Tiny), l’aggiunta di una GPU richiede molta attenzione:

  • Form Factor e Spazio: serve una scheda Low Profile (o addirittura ultra-compatta) che entri fisicamente nello slot PCIe.
  • Consumo energetico: l’alimentatore integrato impone di scegliere schede senza alimentazione ausiliaria (sotto i 50-75W), come le NVIDIA T400 o T1000.
  • VRAM per l’AI: i modelli di separazione necessitano di almeno 4GB di VRAM per evitare errori di memoria (Out of Memory).

YouTube e i “capricci” del download automatico

Spleeter Web permette teoricamente di incollare un link di YouTube per scaricare ed estrarre l’audio al volo. Nella pratica, ci si scontra a volte con errori del tipo This video is not available nei log del backend.

Questo accade perché YouTube aggiorna continuamente i propri meccanismi anti-bot, rendendo presto obsolete le librerie interne di estrazione (come yt-dlp) incluse nei container Docker.

Come risolvere? La via più stabile e priva di intoppi consiste nel gestire il download esternamente ed estrarre l’audio in locale prima del caricamento sul server. Con FFmpeg, ad esempio, è possibile estrarre una traccia audio in formato OGG Vorbis di alta qualità con un singolo comando:

ffmpeg -i video_scaricato.mp4 -vn -c:a libvorbis -q:a 6 audio_estratto.ogg

Considerazioni finali

Avere un’istanza di Spleeter Web sul proprio home server è una comodità impagabile per chiunque si occupi di produzione audio o desideri semplicemente analizzare le componenti di un brano. Sebbene la CPU M320t richieda il suo tempo per elaborare ogni traccia, l’accoppiata Docker + Home Server si conferma ancora una volta la soluzione definitiva per avere pieno controllo sui propri strumenti digitali.


TheJoe

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

0 commenti

Lascia un commento

Segnaposto per l'avatar

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.