O Produce.it é uma ferramenta de software assistida por IA focada em análise comparativa de áudio. O sistema diagnostica problemas de mixagem comparando produções do usuário com referências comerciais, fornecendo insights técnicos e sugestões de melhoria.
- Análise LUFS: Normalização de loudness para comparação justa
- Campo Estéreo: Avaliação de largura, correlação de fase e compatibilidade mono
- Análise Espectral: Detecção de desequilíbrios de frequência por bandas
- IA Interpretativa: Modelo neural para scoring de similaridade
- Relatórios Automatizados: Geração de CSV e métricas estruturadas
- Produtores musicais e engenheiros de mixagem
- Músicos de home-studio
- Profissionais de áudio que necessitam análise comparativa objetiva
Interface simplificada que abstrai complexidade técnica, permitindo que músicos obtenham feedback profissional sem dominar processamento de sinais.
Input: Faixa do usuário + Referência comercial
Output: Métricas técnicas, diagnósticos e sugestões de correção
- Python 3.8 ou superior
- uv (gerenciador de pacotes Python)
# Instalar uv (se não estiver instalado)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clonar o repositório
git clone <repository-url>
cd Produce.it
# Instalar dependências
uv sync# Criar ambiente virtual
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# Instalar dependências
pip install -r requirements.txt# Ubuntu/Debian
sudo apt-get install ffmpeg libsndfile1
# macOS
brew install ffmpeg libsndfileAnálise de um par de arquivos (usuário + referência):
# Usando uv
uv run main.py "minha_mixagem.wav" "referencia_comercial.wav"
# Usando Python diretamente
python main.py "minha_mixagem.wav" "referencia_comercial.wav"
# Com diretório de saída customizado
uv run main.py "user_track.wav" "ref_track.wav" --out "resultados"Processamento automático de múltiplos arquivos:
# Colocar arquivos em data/input/ seguindo convenção:
# user_song.wav + ref_song.wav
# track_user.wav + track_ref.wav
# music.wav + music_ref.wav
# Executar processamento batch
uv run batch_main.py
# Listar arquivos sem processar
uv run batch_main.py --list
# Diretórios customizados
uv run batch_main.py --input "meus_audios" --output "resultados"- Recomendado: WAV, FLAC (sem compressão)
- Suportado: MP3, M4A, OGG
- Canais: Mono ou Estéreo
- Sample Rate: Qualquer (conversão automática)
O sistema opera através de uma pipeline sequencial de 3 etapas:
Áudio Bruto → [1] Pré-Masterização → [2] Campo Estéreo → [3] Análise Espectral → Relatório
- Função: Normalização de loudness para comparação justa
- Entrada: Faixa usuário + referência (volumes diferentes)
- Saída: Faixa usuário normalizada + métricas LUFS
- Documentação: Módulo de Pré-Masterização
- Função: Análise espacial e correlação de fase
- Entrada: Faixa normalizada + referência
- Saída: Métricas de largura, correlação e score IA
- Documentação: Módulo de Campo Estéreo
- Função: Detecção de problemas de frequência
- Entrada: Faixa normalizada + referência
- Saída: Análise por bandas, problemas detectados e sugestões
- Documentação: Módulo de Processamento de Espectrogramas
# main.py
parser = ArgumentParser()
args = parser.parse_args()
pipeline = AnalysisPipeline(output_dir=args.out)
results = pipeline.run(args.user_track, args.ref_track)
# pipeline.py
class AnalysisPipeline:
def run(self, user_track, ref_track):
# Etapa 1: LUFS
mastered_path = self.lufs_analyzer.master_to_reference(user_track, ref_track)
# Etapa 2: Estéreo
stereo_results = self.stereo_analyzer.compare_stereo_fields(mastered_path, ref_track)
# Etapa 3: Espectral
spectral_results = self.spectrogram_processor.detect_spectral_issues(mastered_path, ref_track)
return consolidated_results{
'lufs': {
'original': -18.5,
'target': -8.2,
'mastered': -8.18,
'difference_before': 10.3,
'csv_path': 'data/output/annotations/track_lufs.csv'
},
'stereo': {
'user': {'correlation': 0.85, 'width': 0.45},
'reference': {'correlation': 0.78, 'width': 0.62},
'similarity_score': 78.5,
'ai_score': 72.3
},
'spectral': {
'similarity_score': 65.2,
'issues_detected': ['Baixa energia em bass', 'Excesso em highs'],
'suggestions': ['Aumentar bass frequencies', 'Reduzir highs frequencies'],
'overall_balance': False
}
}data/output/
├── batch_analysis_results.json # Resultados consolidados (modo batch)
├── annotations/
│ └── track_name_lufs.csv # Dados LUFS tabulares
└── tmpXXX.wav # Arquivo masterizado temporário
- 0-100: Índice de similaridade técnica com a referência
- 100: Proporcionalmente semelhante (não cópia idêntica)
- Componentes: LUFS + Estéreo + Espectral + IA
- Pré-Masterização - Normalização LUFS e preparação de áudio
- Campo Estéreo - Análise espacial, correlação de fase e largura
- Processamento de Espectrogramas - Análise de frequências e detecção de problemas espectrais
- Pipeline Principal - Orquestração das etapas de análise
- Batch Pipeline - Processamento automático de múltiplos arquivos
- Modelo IA - Rede neural para scoring de similaridade
Produce.it/
├── src/
│ ├── pre_mastering/ # Módulo LUFS
│ ├── stereo_field/ # Módulo campo estéreo
│ ├── process_spectrograms/ # Módulo espectral
│ ├── crnn/ # Modelos IA
│ ├── pipeline.py # Pipeline principal
│ └── batch_pipeline.py # Pipeline batch
├── data/
│ ├── input/ # Arquivos de entrada (batch)
│ └── output/ # Resultados gerados
├── main.py # Interface individual
├── batch_main.py # Interface batch
└── requirements.txt # Dependências Python
# Testar pipeline completa
uv run test_pipeline.py
# Testar com arquivos sintéticos
uv run create_test_files.py
uv run main.py user_track.wav ref_track.wav# Exemplo básico
uv run main.py "minha_mixagem.wav" "referencia_comercial.wav"
# Com saída customizada
uv run main.py "track.wav" "ref.wav" --out "analise_projeto"from src.pipeline import AnalysisPipeline
# Inicializar pipeline
pipeline = AnalysisPipeline(output_dir="resultados")
# Executar análise
results = pipeline.run("user_track.wav", "reference_track.wav")
# Acessar resultados
print(f"Score LUFS: {results['lufs']['difference_before']:.2f}")
print(f"Score Estéreo: {results['stereo']['similarity_score']:.1f}/100")
print(f"Problemas Espectrais: {len(results['spectral']['issues_detected'])}")# Preparar arquivos
cp user1.wav data/input/
cp ref1.wav data/input/
cp user2.wav data/input/
cp ref2.wav data/input/
# Executar batch
uv run batch_main.py
# Verificar resultados
cat data/output/batch_analysis_results.jsonErro: "No module named 'numpy'"
# Verificar ambiente virtual
source .venv/bin/activate
uv syncErro: "Could not read audio file"
# Instalar dependências do sistema
sudo apt-get install ffmpeg libsndfile1 # Ubuntu
brew install ffmpeg libsndfile # macOSErro: "Stereo model not found"
- O modelo IA é opcional, o sistema funciona sem ele
- Score IA será 0.0 mas outras análises continuam funcionando
- Use arquivos WAV/FLAC para melhor qualidade
- Arquivos longos (>5min) podem demorar mais para processar
- Modo batch é mais eficiente para múltiplos arquivos
Este projeto utiliza apenas dados de treinamento com licenças CC0 e domínio público para garantir conformidade legal.
Para contribuir com o projeto:
- Fork o repositório
- Crie branch para feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para branch (
git push origin feature/nova-funcionalidade) - Abra Pull Request