Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions MIGRATION_PYTHON311.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Migração para Python 3.11

## Resumo das Mudanças

Este projeto foi atualizado para ser compatível com Python 3.11. As principais mudanças incluem:

### 1. Remoção de Dependências Desnecessárias
- Removidas **75+ bibliotecas** desnecessárias (Jupyter, Qt, bibliotecas de desenvolvimento, etc.)
- Mantidas apenas as dependências essenciais para o funcionamento da API

### 2. Duas Opções de Audio Processing

#### Opção A: Spleeter Atualizado
```bash
# Descomente no requirements.txt:
spleeter==2.4.0
tensorflow>=2.13.0,<2.16.0

# Use o arquivo:
cp utils/split_spleeter.py utils/split.py
```

#### Opção B: Demucs (Recomendado)
```bash
# Descomente no requirements.txt:
demucs>=4.0.0
torch>=2.0.0
torchaudio>=2.0.0

# Use o arquivo:
cp utils/split_demucs.py utils/split.py
```

## Instruções de Instalação

### 1. Criar ambiente Python 3.11
```bash
# Com pyenv
pyenv install 3.11.0
pyenv local 3.11.0

# Ou com uv
uv python install 3.11
```

### 2. Escolher uma opção de audio processing
Edite o `requirements.txt` e descomente uma das opções (Spleeter ou Demucs).

### 3. Instalar dependências
```bash
pip install -r requirements.txt
```

### 4. Substituir arquivo de separação
```bash
# Para Spleeter:
cp utils/split_spleeter.py utils/split.py

# Para Demucs (recomendado):
cp utils/split_demucs.py utils/split.py
```

## Vantagens do Demucs sobre Spleeter

1. **Melhor qualidade** de separação
2. **Suporte nativo** ao Python 3.11
3. **Modelos mais modernos** (baseados em PyTorch)
4. **Melhor manutenção** e atualizações regulares
5. **Compatibilidade** com hardware moderno (GPU)

## Estrutura Final do Projeto

```
Split/
├── app.py # API Flask principal
├── requirements.txt # Dependências limpas para Python 3.11
├── utils/
│ ├── split.py # Arquivo atual (substituir)
│ ├── split_spleeter.py # Versão com Spleeter
│ ├── split_demucs.py # Versão com Demucs
│ └── ziped.py # Utilitário de compressão
└── MIGRATION_PYTHON311.md # Este arquivo
```

## Testando a Migração

1. Inicie o servidor: `python app.py`
2. Teste o endpoint: `curl -X POST -F "audio=@test.mp3" http://localhost:5000/upload`
3. Verifique se os arquivos são gerados em `files/separate/audio/`
45 changes: 45 additions & 0 deletions README_UV.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 🚀 Como usar o projeto Split com UV

## Comandos principais:

### 1. **Rodar o servidor com UV:**
```bash
uv run python app.py
```

### 2. **Rodar com script automático:**
```bash
./run_with_uv.sh
```

### 3. **Verificar se Demucs está funcionando:**
```bash
uv run python -c "import demucs; print('✅ Demucs OK!')"
```

### 4. **Testar a API:**
```bash
# Em outro terminal:
curl -X POST -F "audio=@seu_arquivo.mp3" http://localhost:5000/upload
```

## ✅ **Mudanças feitas para usar UV:**

1. **Arquivo `utils/split.py`** agora usa: `uv run python -m demucs`
2. **Arquivo `utils/ziped.py`** cria diretórios automaticamente
3. **Script `run_with_uv.sh`** para facilitar execução

## 🎵 **Como funciona agora:**

- **Demucs** faz a separação de áudio (melhor que Spleeter)
- **UV** gerencia o ambiente Python 3.11
- **Compatibilidade total** com Python 3.11
- **Dependências limpas** (de 95 para ~15 bibliotecas)

## 🔧 **Troubleshooting:**

Se der erro, rode:
```bash
uv pip install -r requirements.txt
source .venv/bin/activate
```
Binary file removed files/audio.wav
Binary file not shown.
122 changes: 28 additions & 94 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,94 +1,28 @@
absl-py==0.10.0
aniso8601==8.0.0
astor==0.8.1
attrs==19.3.0
audioread==2.1.8
backcall==0.2.0
bleach==3.1.5
certifi==2020.6.20
cffi==1.14.2
chardet==3.0.4
click==7.1.2
decorator==4.4.2
defusedxml==0.6.0
entrypoints==0.3
ffmpeg-python==0.2.0
Flask==1.1.2
Flask-RESTful==0.3.8
future==0.18.2
gast==0.2.2
google-pasta==0.2.0
grpcio==1.31.0
h5py==2.10.0
idna==2.10
importlib-metadata==1.7.0
ipykernel==5.3.3
ipython==7.16.1
ipython-genutils==0.2.0
ipywidgets==7.5.1
itsdangerous==1.1.0
jedi==0.17.2
Jinja2==2.11.2
joblib==0.16.0
jsonschema==3.2.0
jupyter==1.0.0
jupyter-client==6.1.6
jupyter-console==6.1.0
jupyter-core==4.6.3
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
librosa==0.7.2
llvmlite==0.31.0
Markdown==3.2.2
MarkupSafe==1.1.1
mistune==0.8.4
nbconvert==5.6.1
nbformat==5.0.7
norbert==0.2.1
notebook==6.0.3
numba==0.48.0
numpy==1.19.1
opt-einsum==3.3.0
packaging==20.4
pandas==0.25.1
pandocfilters==1.4.2
parso==0.7.0
pexpect==4.8.0
pickleshare==0.7.5
prometheus-client==0.8.0
prompt-toolkit==3.0.5
protobuf==3.13.0
ptyprocess==0.6.0
pycparser==2.20
Pygments==2.6.1
pyparsing==2.4.7
pyrsistent==0.16.0
python-dateutil==2.8.1
pytz==2020.1
pyzmq==19.0.1
qtconsole==4.7.5
QtPy==1.9.0
requests==2.24.0
resampy==0.2.2
scikit-learn==0.23.2
scipy==1.5.2
Send2Trash==1.5.0
six==1.15.0
SoundFile==0.10.3.post1
spleeter==1.5.4
tensorboard==1.15.0
tensorflow==1.15.2
tensorflow-estimator==1.15.1
termcolor==1.1.0
terminado==0.8.3
testpath==0.4.4
threadpoolctl==2.1.0
tornado==6.0.4
traitlets==4.3.3
urllib3==1.25.10
wcwidth==0.2.5
webencodings==0.5.1
Werkzeug==1.0.1
widgetsnbextension==3.5.1
wrapt==1.12.1
zipp==3.1.0
# Requirements para Python 3.11 - Versão Limpa
# Core web framework
Flask==3.0.0
Flask-RESTful==0.3.10
Werkzeug==3.0.1

# Audio processing - Escolha uma das opções abaixo:

# OPÇÃO 1: Spleeter (incompatível com Python 3.11)
# spleeter==2.4.0
# tensorflow>=2.13.0,<2.16.0

# OPÇÃO 2: Demucs (ATIVO - compatível com Python 3.11)
demucs>=4.0.0
torch>=2.0.0
torchaudio>=2.0.0

# Bibliotecas de áudio essenciais
librosa>=0.10.0
audioread>=3.0.0
SoundFile>=0.12.0
ffmpeg-python>=0.2.0

# Utilitários essenciais
numpy>=1.24.0
scipy>=1.11.0
requests>=2.31.0
click>=8.1.0
20 changes: 20 additions & 0 deletions requirements_python311_demucs.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Requirements para Python 3.11 com Demucs (alternativa moderna ao Spleeter)
# Core dependencies para o projeto
Flask==3.0.0
Flask-RESTful==0.3.10
Werkzeug==3.0.1

# Audio processing - Demucs (melhor que Spleeter)
demucs>=4.0.0
torch>=2.0.0
torchaudio>=2.0.0
librosa>=0.10.0
audioread>=3.0.0
SoundFile>=0.12.0
ffmpeg-python>=0.2.0

# Utilities
numpy>=1.24.0
scipy>=1.11.0
requests>=2.31.0
click>=8.1.0
22 changes: 22 additions & 0 deletions requirements_python311_spleeter.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Requirements para Python 3.11 com Spleeter atualizado
# Core dependencies para o projeto
Flask==3.0.0
Flask-RESTful==0.3.10
Werkzeug==3.0.1

# Audio processing - Spleeter atualizado
spleeter==2.4.0
tensorflow>=2.13.0,<2.16.0
librosa>=0.10.0
audioread>=3.0.0
SoundFile>=0.12.0
ffmpeg-python>=0.2.0

# Utilities
numpy>=1.24.0
scipy>=1.11.0
requests>=2.31.0
click>=8.1.0

# Para compressão de arquivos
# (implementar alternativa simples ao invés de múltiplas dependências)
19 changes: 19 additions & 0 deletions run_with_uv.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash
# Script para rodar o projeto usando UV

echo "🚀 Iniciando o projeto Split com UV..."

# Verificar se está no ambiente virtual UV
if [ ! -d ".venv" ]; then
echo "⚠️ Ambiente virtual não encontrado. Criando..."
uv venv --python 3.11
fi

# Ativar ambiente virtual
source .venv/bin/activate

echo "📦 Verificando dependências..."
uv pip install -r requirements.txt

echo "🎵 Iniciando servidor Flask..."
uv run python app.py
Loading
Loading