Spaces:
Running
Running
metadata
title: RVC Voice Conversion
emoji: 🏃
colorFrom: purple
colorTo: indigo
sdk: gradio
app_file: app.py
pinned: false
license: mit
🎙️ RVC Voice Conversion - Ultimate Real
Conversão de voz REAL com RVC (Retrieval-Based Voice Conversion)
- Upload de vídeo com preview 🎬
- 5 formatos de saída em fundo preto 🎤
- Processamento DEMORADO (minutos) - RVC real!
- Suporte a modelos customizados via ZIP 📦
📋 Índice
🚀 Pré-requisitos
Local
- Python 3.10+
- FFmpeg (para processamento de vídeo)
- 4GB+ RAM recomendado
Docker
- Docker Engine 20.10+
- Docker Compose 2.0+
📦 Instalação Local
1. Clone o repositório
git clone https://github.com/yourusername/rvc-voice-conversion.git
cd rvc-voice-conversion
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
pip install -r requirements.txt
sudo apt-get update
sudo apt-get install ffmpeg
brew install ffmpeg
Windows: Baixe do ffmpeg.org
bash
python app.py
Acesse: http://localhost:7860
docker build -t rvc-voice-conversion .
docker run -d \
--name rvc-app \
-p 7860:7860 \
-v $(pwd)/jobs:/app/jobs \
-v $(pwd)/models:/app/models \
-v $(pwd)/uploads:/app/uploads \
-v $(pwd)/temp:/app/temp \
-v $(pwd)/video_previews:/app/video_previews \
rvc-voice-conversion
# Iniciar
docker-compose up -d
# Ver logs
docker-compose logs -f
# Parar
docker-compose down
# Parar e remover volumes
docker-compose down -v
# Ver logs do container
docker logs -f rvc-app
# Parar o container
docker stop rvc-app
# Remover o container
docker rm rvc-app
# Acessar shell dentro do container
docker exec -it rvc-app /bin/bash
# Limpar containers e imagens não utilizados
docker container prune
docker image prune
docker volume prune
docker system prune -a
rvc-voice-conversion/
├── .gitignore # Arquivos ignorados pelo Git
├── .dockerignore # Arquivos ignorados pelo Docker
├── Dockerfile # Configuração da imagem Docker
├── docker-compose.yml # Orquestração Docker
├── docker-entrypoint.sh # Script de inicialização
├── requirements.txt # Dependências Python
├── README.md # Este arquivo
├── app.py # Aplicação principal
├── lib/ # Biblioteca interna
│ ├── __init__.py
│ ├── config.py # Configurações
│ ├── jobs.py # Gerenciamento de jobs
│ ├── models.py # Gerenciamento de modelos
│ └── ui.py # Helpers da interface
├── jobs/ # Jobs de conversão (persistente)
├── models/ # Modelos RVC customizados
├── uploads/ # Uploads temporários
├── temp/ # Arquivos temporários
└── video_previews/ # Thumbnails de vídeo
# Executar em modo debug
gradio app.py
# Verificar código com linter
ruff check .
# Formatar código
black .
# Listar modelos disponíveis
ls -la models/
# Remover modelo
rm -rf models/nome_do_modelo/
# Backup de modelos
tar -czf models_backup.tar.gz models/
# Limpar jobs antigos (mais de 7 dias)
find jobs/ -type d -mtime +7 -exec rm -rf {} \;
# Limpar arquivos temporários
rm -rf temp/* uploads/*
# Limpar logs
rm -f *.log
# Ubuntu/Debian
sudo apt-get install ffmpeg
# MacOS
brew install ffmpeg
# Windows: Adicione ffmpeg ao PATH
# Mudar a porta
PORT=7861 python app.py
# Ou matar o processo na porta 7860
lsof -ti:7860 | xargs kill -9
# Corrigir permissões dos volumes
sudo chown -R 1000:1000 jobs/ models/ uploads/
# Ou executar com sudo
sudo docker run ...
# Limitar memória no Docker
docker run -m 4g ...
# Ou no docker-compose.yml
services:
rvc-voice-conversion:
deploy:
resources:
limits:
memory: 4G
# Local
python app.py --debug
# Docker
docker logs -f rvc-app --tail 100
# Adicionar como submodule
git submodule add https://huggingface.co/spaces/seu-usuario/rvc-space space
# Copiar arquivos
cp -r * space/
cd space
# Commit e push
git add .
git commit -m "Deploy RVC Voice Conversion"
git push
# Build e push para Docker Hub
docker build -t seu-usuario/rvc-voice:latest .
docker push seu-usuario/rvc-voice:latest
# No Hugging Face, use Dockerfile:
FROM seu-usuario/rvc-voice:latest
Você deve criar um arquivo chamado README.md na raiz do projeto com todas essas instruções. Aqui está o README completo:
README.md
markdown
# 🎙️ RVC Voice Conversion - Ultimate Real
[](https://huggingface.co/spaces)
[](https://docker.com)
[](https://gradio.app)
**Conversão de voz REAL com RVC (Retrieval-Based Voice Conversion)**
- Upload de vídeo com preview 🎬
- 5 formatos de saída em fundo preto 🎤
- Processamento DEMORADO (minutos) - RVC real!
- Suporte a modelos customizados via ZIP 📦
---
## 📋 Índice
- [Pré-requisitos](#pré-requisitos)
- [Instalação Local](#instalação-local)
- [Docker](#docker)
- [Estrutura do Projeto](#estrutura-do-projeto)
- [Comandos Úteis](#comandos-úteis)
- [Solução de Problemas](#solução-de-problemas)
---
## 🚀 Pré-requisitos
### Local
- Python 3.10+
- FFmpeg (para processamento de vídeo)
- 4GB+ RAM recomendado
### Docker
- Docker Engine 20.10+
- Docker Compose 2.0+
---
## 📦 Instalação Local
### 1. Clone o repositório
```bash
git clone https://github.com/yourusername/rvc-voice-conversion.git
cd rvc-voice-conversion
2. Criar ambiente virtual
bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
3. Instalar dependências
bash
pip install -r requirements.txt
4. Instalar FFmpeg
Ubuntu/Debian:
bash
sudo apt-get update
sudo apt-get install ffmpeg
MacOS:
bash
brew install ffmpeg
Windows: Baixe do ffmpeg.org
5. Executar
bash
python app.py
Acesse: http://localhost:7860
🐳 Docker
Build da imagem
bash
docker build -t rvc-voice-conversion .
Executar com Docker Run
bash
docker run -d \
--name rvc-app \
-p 7860:7860 \
-v $(pwd)/jobs:/app/jobs \
-v $(pwd)/models:/app/models \
-v $(pwd)/uploads:/app/uploads \
-v $(pwd)/temp:/app/temp \
-v $(pwd)/video_previews:/app/video_previews \
rvc-voice-conversion
Executar com Docker Compose
bash
# Iniciar
docker-compose up -d
# Ver logs
docker-compose logs -f
# Parar
docker-compose down
# Parar e remover volumes
docker-compose down -v
Comandos Docker úteis
bash
# Ver logs do container
docker logs -f rvc-app
# Parar o container
docker stop rvc-app
# Remover o container
docker rm rvc-app
# Acessar shell dentro do container
docker exec -it rvc-app /bin/bash
# Limpar containers e imagens não utilizados
docker container prune
docker image prune
docker volume prune
docker system prune -a
📁 Estrutura do Projeto
text
rvc-voice-conversion/
├── .gitignore # Arquivos ignorados pelo Git
├── .dockerignore # Arquivos ignorados pelo Docker
├── Dockerfile # Configuração da imagem Docker
├── docker-compose.yml # Orquestração Docker
├── docker-entrypoint.sh # Script de inicialização
├── requirements.txt # Dependências Python
├── README.md # Este arquivo
├── app.py # Aplicação principal
├── lib/ # Biblioteca interna
│ ├── __init__.py
│ ├── config.py # Configurações
│ ├── jobs.py # Gerenciamento de jobs
│ ├── models.py # Gerenciamento de modelos
│ └── ui.py # Helpers da interface
├── jobs/ # Jobs de conversão (persistente)
├── models/ # Modelos RVC customizados
├── uploads/ # Uploads temporários
├── temp/ # Arquivos temporários
└── video_previews/ # Thumbnails de vídeo
🛠️ Comandos Úteis
Desenvolvimento
bash
# Executar em modo debug
gradio app.py
# Verificar código com linter
ruff check .
# Formatar código
black .
Gerenciamento de Modelos
bash
# Listar modelos disponíveis
ls -la models/
# Remover modelo
rm -rf models/nome_do_modelo/
# Backup de modelos
tar -czf models_backup.tar.gz models/
Limpeza
bash
# Limpar jobs antigos (mais de 7 dias)
find jobs/ -type d -mtime +7 -exec rm -rf {} \;
# Limpar arquivos temporários
rm -rf temp/* uploads/*
# Limpar logs
rm -f *.log
🔧 Solução de Problemas
Erro: "FFmpeg not found"
bash
# Ubuntu/Debian
sudo apt-get install ffmpeg
# MacOS
brew install ffmpeg
# Windows: Adicione ffmpeg ao PATH
Erro: "Port 7860 already in use"
bash
# Mudar a porta
PORT=7861 python app.py
# Ou matar o processo na porta 7860
lsof -ti:7860 | xargs kill -9
Erro: "Permission denied" no Docker
bash
# Corrigir permissões dos volumes
sudo chown -R 1000:1000 jobs/ models/ uploads/
# Ou executar com sudo
sudo docker run ...
Erro de memória
bash
# Limitar memória no Docker
docker run -m 4g ...
# Ou no docker-compose.yml
services:
rvc-voice-conversion:
deploy:
resources:
limits:
memory: 4G
Verificar logs detalhados
bash
# Local
python app.py --debug
# Docker
docker logs -f rvc-app --tail 100
🌐 Deploy no Hugging Face Spaces
Opção 1: Git + Docker
bash
# Adicionar como submodule
git submodule add https://huggingface.co/spaces/seu-usuario/rvc-space space
# Copiar arquivos
cp -r * space/
cd space
# Commit e push
git add .
git commit -m "Deploy RVC Voice Conversion"
git push
Opção 2: Docker Hub
bash
# Build e push para Docker Hub
docker build -t seu-usuario/rvc-voice:latest .
docker push seu-usuario/rvc-voice:latest
# No Hugging Face, use Dockerfile:
FROM seu-usuario/rvc-voice:latest
📊 Monitoramento
Verificar status da aplicação
bash
curl http://localhost:7860
Verificar uso de recursos
bash
# Docker
docker stats rvc-app
# Local
htop
nvidia-smi # Se tiver GPU
ts ocultos
Você deve criar um arquivo chamado README.md na raiz do projeto com todas essas instruções. Aqui está o README completo:
README.md
markdown
# 🎙️ RVC Voice Conversion - Ultimate Real
[](https://huggingface.co/spaces)
[](https://docker.com)
[](https://gradio.app)
**Conversão de voz REAL com RVC (Retrieval-Based Voice Conversion)**
- Upload de vídeo com preview 🎬
- 5 formatos de saída em fundo preto 🎤
- Processamento DEMORADO (minutos) - RVC real!
- Suporte a modelos customizados via ZIP 📦
---
## 📋 Índice
- [Pré-requisitos](#pré-requisitos)
- [Instalação Local](#instalação-local)
- [Docker](#docker)
- [Estrutura do Projeto](#estrutura-do-projeto)
- [Comandos Úteis](#comandos-úteis)
- [Solução de Problemas](#solução-de-problemas)
---
## 🚀 Pré-requisitos
### Local
- Python 3.10+
- FFmpeg (para processamento de vídeo)
- 4GB+ RAM recomendado
### Docker
- Docker Engine 20.10+
- Docker Compose 2.0+
---
## 📦 Instalação Local
### 1. Clone o repositório
```bash
git clone https://github.com/yourusername/rvc-voice-conversion.git
cd rvc-voice-conversion
2. Criar ambiente virtual
bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
3. Instalar dependências
bash
pip install -r requirements.txt
4. Instalar FFmpeg
Ubuntu/Debian:
bash
sudo apt-get update
sudo apt-get install ffmpeg
MacOS:
bash
brew install ffmpeg
Windows: Baixe do ffmpeg.org
5. Executar
bash
python app.py
Acesse: http://localhost:7860
🐳 Docker
Build da imagem
bash
docker build -t rvc-voice-conversion .
Executar com Docker Run
bash
docker run -d \
--name rvc-app \
-p 7860:7860 \
-v $(pwd)/jobs:/app/jobs \
-v $(pwd)/models:/app/models \
-v $(pwd)/uploads:/app/uploads \
-v $(pwd)/temp:/app/temp \
-v $(pwd)/video_previews:/app/video_previews \
rvc-voice-conversion
Executar com Docker Compose
bash
# Iniciar
docker-compose up -d
# Ver logs
docker-compose logs -f
# Parar
docker-compose down
# Parar e remover volumes
docker-compose down -v
Comandos Docker úteis
bash
# Ver logs do container
docker logs -f rvc-app
# Parar o container
docker stop rvc-app
# Remover o container
docker rm rvc-app
# Acessar shell dentro do container
docker exec -it rvc-app /bin/bash
# Limpar containers e imagens não utilizados
docker container prune
docker image prune
docker volume prune
docker system prune -a
📁 Estrutura do Projeto
text
rvc-voice-conversion/
├── .gitignore # Arquivos ignorados pelo Git
├── .dockerignore # Arquivos ignorados pelo Docker
├── Dockerfile # Configuração da imagem Docker
├── docker-compose.yml # Orquestração Docker
├── docker-entrypoint.sh # Script de inicialização
├── requirements.txt # Dependências Python
├── README.md # Este arquivo
├── app.py # Aplicação principal
├── lib/ # Biblioteca interna
│ ├── __init__.py
│ ├── config.py # Configurações
│ ├── jobs.py # Gerenciamento de jobs
│ ├── models.py # Gerenciamento de modelos
│ └── ui.py # Helpers da interface
├── jobs/ # Jobs de conversão (persistente)
├── models/ # Modelos RVC customizados
├── uploads/ # Uploads temporários
├── temp/ # Arquivos temporários
└── video_previews/ # Thumbnails de vídeo
🛠️ Comandos Úteis
Desenvolvimento
bash
# Executar em modo debug
gradio app.py
# Verificar código com linter
ruff check .
# Formatar código
black .
Gerenciamento de Modelos
bash
# Listar modelos disponíveis
ls -la models/
# Remover modelo
rm -rf models/nome_do_modelo/
# Backup de modelos
tar -czf models_backup.tar.gz models/
Limpeza
bash
# Limpar jobs antigos (mais de 7 dias)
find jobs/ -type d -mtime +7 -exec rm -rf {} \;
# Limpar arquivos temporários
rm -rf temp/* uploads/*
# Limpar logs
rm -f *.log
🔧 Solução de Problemas
Erro: "FFmpeg not found"
bash
# Ubuntu/Debian
sudo apt-get install ffmpeg
# MacOS
brew install ffmpeg
# Windows: Adicione ffmpeg ao PATH
Erro: "Port 7860 already in use"
bash
# Mudar a porta
PORT=7861 python app.py
# Ou matar o processo na porta 7860
lsof -ti:7860 | xargs kill -9
Erro: "Permission denied" no Docker
bash
# Corrigir permissões dos volumes
sudo chown -R 1000:1000 jobs/ models/ uploads/
# Ou executar com sudo
sudo docker run ...
Erro de memória
bash
# Limitar memória no Docker
docker run -m 4g ...
# Ou no docker-compose.yml
services:
rvc-voice-conversion:
deploy:
resources:
limits:
memory: 4G
Verificar logs detalhados
bash
# Local
python app.py --debug
# Docker
docker logs -f rvc-app --tail 100
🌐 Deploy no Hugging Face Spaces
Opção 1: Git + Docker
bash
# Adicionar como submodule
git submodule add https://huggingface.co/spaces/seu-usuario/rvc-space space
# Copiar arquivos
cp -r * space/
cd space
# Commit e push
git add .
git commit -m "Deploy RVC Voice Conversion"
git push
Opção 2: Docker Hub
bash
# Build e push para Docker Hub
docker build -t seu-usuario/rvc-voice:latest .
docker push seu-usuario/rvc-voice:latest
# No Hugging Face, use Dockerfile:
FROM seu-usuario/rvc-voice:latest
📊 Monitoramento
Verificar status da aplicação
bash
curl http://localhost:7860
Verificar uso de recursos
bash
# Docker
docker stats rvc-app
# Local
htop
nvidia-smi # Se tiver GPU
🤝 Contribuição
Fork o projeto
Crie sua branch: git checkout -b feature/nova-feature
Commit: git commit -m 'Adiciona nova feature'
Push: git push origin feature/nova-feature
Abra um Pull Request
📝 Licença
MIT License - veja o arquivo LICENSE para detalhes
🙏 Créditos
Ultimate RVC - Engine de conversão
Gradio - Interface web
FFmpeg - Processamento de vídeo
⚠️ Notas importantes
O processamento é DEMORADO de verdade - RVC real leva minutos, não segundos!
Requer FFmpeg para processamento de vídeo
Modelos RVC devem ser enviados em formato ZIP com .pth e .index
5 outputs só aparecem após clicar na setinha ⬇️ quando o job terminar
📞 Suporte
Abra uma issue
Email: seu-email@example.com
Desenvolvido com ❤️ para a comunidade de conversão de voz
text
## Onde colocar cada arquivo:
rvc-voice-conversion/ # Diretório raiz do projeto
│
├── README.md # ← COLOQUE AQUI (instruções completas)
├── .gitignore # ← COLOQUE AQUI
├── .dockerignore # ← COLOQUE AQUI
├── Dockerfile # ← COLOQUE AQUI
├── docker-compose.yml # ← COLOQUE AQUI
├── docker-entrypoint.sh # ← COLOQUE AQUI
├── requirements.txt # ← COLOQUE AQUI
├── app.py # ← COLOQUE AQUI
│
├── lib/ # ← CRIE ESTA PASTA
│ ├── init.py
│ ├── config.py
│ ├── jobs.py
│ ├── models.py
│ └── ui.py
│
├── jobs/ # ← CRIE ESTA PASTA (vazia)
│ └── .gitkeep
│
├── models/ # ← CRIE ESTA PASTA (vazia)
│ └── .gitkeep
│
├── uploads/ # ← CRIE ESTA PASTA (vazia)
│ └── .gitkeep
│
├── temp/ # ← CRIE ESTA PASTA (vazia)
│ └── .gitkeep
│
└── video_previews/ # ← CRIE ESTA PASTA (vazia)
└── .gitkeep
text
## Comandos para criar a estrutura:
```bash
# Criar diretório principal
mkdir -p rvc-voice-conversion
cd rvc-voice-conversion
# Criar estrutura de diretórios
mkdir -p lib jobs models uploads temp video_previews
# Criar arquivos vazios .gitkeep
touch jobs/.gitkeep models/.gitkeep uploads/.gitkeep temp/.gitkeep video_previews/.gitkeep
# Criar arquivo __init__.py vazio
touch lib/__init__.py
# Agora copie/cole o conteúdo de cada arquivo para seu respectivo local
Comandos rápidos para testar:
bash
# Verificar estrutura
tree -a
# Executar localmente
python app.py
# Build Docker
docker build -t rvc-voice-conversion .
# Executar com Docker
docker run -d --name rvc-app -p 7860:7860 rvc-voice-conversion
# Ver logs
docker logs -f rvc-app
# Parar e remover
docker stop rvc-app && docker rm rvc-app
# 🎵 RVC Voice Conversion - Sample Outputs
Esta pasta contém exemplos de como os 5 outputs ficam após a conversão RVC.
## 📁 Estrutura
examples/
├── README.md # Este arquivo
├── generate_sample_audio.py # Script para gerar áudios de exemplo
├── sample_outputs/ # Exemplos de como os outputs ficam
│ ├── 01_completo_rvc.wav # Áudio convertido com RVC + música
│ ├── 02_rvc_com_musica.wav # RVC + instrumental
│ ├── 03_original.wav # Áudio original (voz + música)
│ ├── 04_acapella_original.wav # Voz original (acapella)
│ └── 05_instrumental.wav # Apenas a música (instrumental)
├── sample_input/ # Arquivos de entrada para teste
│ └── sample_audio_input.wav # Áudio de exemplo para converter
└── sample_video/ # Vídeos de exemplo
└── sample_video_input.mp4 # Vídeo de exemplo (se disponível)
text
## 🎤 O que cada output representa?
| # | Arquivo | Descrição | Quando usar |
|---|---------|-----------|-------------|
| 1 | `01_completo_rvc.wav` | **COMPLETO RVC** - Voz convertida + música original | Karaoke, dublagem, covers |
| 2 | `02_rvc_com_musica.wav` | **RVC + INSTRUMENTAL** - Voz convertida + instrumental | Músicas completas, remixes |
| 3 | `03_original.wav` | **ORIGINAL** - Áudio sem modificações | Comparação, referência |
| 4 | `04_acapella_original.wav` | **ACAPELLA ORIGINAL** - Apenas a voz original | Extração de voz, stems |
| 5 | `05_instrumental.wav` | **INSTRUMENTAL** - Apenas a música de fundo | Beats, backing tracks |
## 🎧 Como ouvir os exemplos
### Opção 1: Player local
```bash
# Linux/Mac
play examples/sample_outputs/01_completo_rvc.wav
# Windows (usando Windows Media Player)
start examples/sample_outputs/01_completo_rvc.wav
Opção 2: Python
python
import soundfile as sf
import sounddevice as sd
# Carregar e reproduzir
data, sr = sf.read('examples/sample_outputs/01_completo_rvc.wav')
sd.play(data, sr)
sd.wait()
Opção 3: Qualquer player de áudio
VLC Media Player
Audacity
Windows Media Player
QuickTime
🎵 O que você vai ouvir
Os exemplos foram gerados com uma melodia simples em Dó maior (C major):
Original (03_original.wav)
Voz cantando a escala: C4, D4, E4, F4, G4, A4, B4, C5
Acompanhamento musical com progressão de acordes: C - G - Am - F
Bateria simples (kick e snare)
Acapella Original (04_acapella_original.wav)
Apenas a voz, sem acompanhamento
Útil para ouvir a performance vocal pura
Instrumental (05_instrumental.wav)
Apenas o acompanhamento musical
Sem voz, ideal para fazer covers
RVC Completo (01_completo_rvc.wav)
Voz convertida (pitch shift +4 semitons simulando RVC)
Mesmo acompanhamento musical do original
Demonstra como a voz muda após conversão
RVC + Instrumental (02_rvc_com_musica.wav)
Voz convertida com mix diferente
Volume da voz reduzido para destacar o instrumental
🚀 Como gerar seus próprios exemplos
bash
# Instalar dependências
pip install numpy soundfile
# Executar o script
cd examples
python generate_sample_audio.py
📊 Comparação visual
💡 Dicas para testar
Compare os arquivos - Ouça cada um e note as diferenças
Teste com seu áudio - Use sample_audio_input.wav como entrada
Verifique o processamento - Os outputs reais serão similares a estes exemplos
Qualidade - Os exemplos usam WAV 44.1kHz para melhor qualidade
🔧 Troubleshooting
Não consigo ouvir os arquivos
bash
# Verificar se os arquivos existem
ls -la examples/sample_outputs/
# Testar com Python
python -c "import soundfile as sf; print(sf.read('examples/sample_outputs/01_completo_rvc.wav')[0].shape)"
Quer gerar exemplos mais realistas
Edite o script generate_sample_audio.py e ajuste:
Frequências das notas
Duração
Harmônicos
Efeitos de pitch shift
Nota: Estes são arquivos de demonstração gerados sinteticamente. Os resultados reais com RVC serão diferentes e dependem do modelo e áudio de entrada.
text
## 3. Adicionar a aba de exemplos no `app.py`
Adicione esta nova aba no `app.py`:
```python
# ── TAB 5: Examples (nova aba) ────────────────────────────────────────────────
with gr.Tab("🎵 Examples"):
gr.Markdown("""
## 🎧 Sample Outputs - Veja como fica a conversão RVC!
Abaixo estão exemplos reais de como os **5 outputs** ficam após a conversão RVC.
Use estes exemplos para entender o que esperar do seu próprio áudio.
""")
with gr.Row():
with gr.Column():
gr.Markdown("### 🎤 Input Original (antes da conversão)")
gr.Markdown("*Este seria o áudio que você enviaria*")
sample_input_audio = gr.Audio(
label="Sample Input Audio",
type="filepath",
value="examples/sample_input/sample_audio_input.wav"
)
gr.Markdown("### 🎬 Sample Video Input")
sample_input_video = gr.Video(
label="Sample Video Input",
value="examples/sample_video/sample_video_input.mp4" if Path("examples/sample_video/sample_video_input.mp4").exists() else None
)
with gr.Column():
gr.Markdown("### 🎉 5 Outputs (depois da conversão RVC)")
gr.Markdown("*É assim que seus áudios ficarão após conversão*")
with gr.Group(elem_classes="black-screen-outputs"):
gr.HTML("""
<div style="background: #000000; text-align: center; padding: 15px; border-radius: 10px;">
<h3 style="color: #ff6b6b;">🎉 EXEMPLO DE 5 OUTPUTS 🎉</h3>
<p style="color: #aaa;">Clique no play para ouvir cada versão:</p>
</div>
""")
with gr.Row():
with gr.Column():
gr.Audio(label="🎤 COMPLETO (RVC)", type="filepath", value="examples/sample_outputs/01_completo_rvc.wav")
gr.Audio(label="🎵 RVC + INSTRUMENTAL", type="filepath", value="examples/sample_outputs/02_rvc_com_musica.wav")
with gr.Column():
gr.Audio(label="📀 ORIGINAL", type="filepath", value="examples/sample_outputs/03_original.wav")
gr.Audio(label="🎙️ ACAPELLA", type="filepath", value="examples/sample_outputs/04_acapella_original.wav")
gr.Audio(label="🎼 INSTRUMENTAL", type="filepath", value="examples/sample_outputs/05_instrumental.wav")
gr.Markdown("""
---
### 📖 Entendendo cada output:
| Arquivo | Descrição | Melhor para |
|---------|-----------|-------------|
| 🎤 **COMPLETO (RVC)** | Áudio convertido com a voz do modelo RVC + música original | Karaoke, dublagem |
| 🎵 **RVC + INSTRUMENTAL** | Voz convertida + trilha instrumental | Músicas completas |
| 📀 **ORIGINAL** | Seu áudio original sem nenhuma modificação | Comparação |
| 🎙️ **ACAPELLA** | Apenas a voz original, sem música | Extração de voz |
| 🎼 **INSTRUMENTAL** | Apenas a música de fundo | Beats, backing tracks |
### 💡 Como usar os exemplos:
1. **Ouça o input original** - É assim que seu áudio soa antes
2. **Ouça os 5 outputs** - É assim que ficará após conversão RVC
3. **Compare as diferenças** - Note como a voz muda com o modelo RVC
4. **Teste com seu áudio** - Use a aba "Convert" para converter seu próprio áudio
### 🎯 Por que demora?
O RVC (Retrieval-Based Voice Conversion) é um modelo de IA que:
- Processa o áudio em tempo real
- Leva de 30 segundos a 5 minutos dependendo do tamanho
- **Não é instantâneo** - aguarde o processamento!
### 📊 Status dos jobs:
- ⏰ **Esperando** - Na fila, aguarde sua vez
- ⏳ **Convertendo** - Processamento em andamento (ampulheta)
- ✅ **Concluído** - Clique na setinha ⬇️ para ver os 5 outputs
---
*Estes são exemplos gerados sinteticamente. Os resultados reais dependem do modelo RVC e do áudio de entrada.*
""")
4. Script para baixar exemplos reais (opcional)
Crie examples/download_real_samples.py:
python
#!/usr/bin/env python3
"""
Download real RVC sample outputs from online sources
Opcional - para demonstração mais realista
"""
import os
import requests
from pathlib import Path
# URLs de exemplo (substitua por URLs reais de samples RVC)
SAMPLE_URLS = {
"01_completo_rvc.wav": "https://example.com/sample_complete.wav",
"02_rvc_com_musica.wav": "https://example.com/sample_rvc_music.wav",
"03_original.wav": "https://example.com/sample_original.wav",
"04_acapella_original.wav": "https://example.com/sample_acapella.wav",
"05_instrumental.wav": "https://example.com/sample_instrumental.wav",
}
def download_samples(output_dir):
"""Download sample files from URLs"""
output_dir = Path(output_dir)
output_dir.mkdir(parents=True, exist_ok=True)
print("📥 Downloading sample RVC outputs...")
for filename, url in SAMPLE_URLS.items():
output_path = output_dir / filename
if output_path.exists():
print(f" ⏭️ {filename} already exists, skipping")
continue
try:
response = requests.get(url, stream=True)
if response.status_code == 200:
with open(output_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f" ✅ Downloaded: {filename}")
else:
print(f" ❌ Failed: {filename} (HTTP {response.status_code})")
except Exception as e:
print(f" ❌ Error downloading {filename}: {e}")
print("\n💡 If downloads failed, run generate_sample_audio.py instead")
if __name__ == "__main__":
download_samples(Path(__file__).parent / "sample_outputs")
5. Atualizar o .gitignore para incluir exemplos
gitignore
# Examples (mantém os exemplos, mas ignora gerados)
examples/sample_outputs/generated_*
examples/temp/
!examples/sample_outputs/01_completo_rvc.wav
!examples/sample_outputs/02_rvc_com_musica.wav
!examples/sample_outputs/03_original.wav
!examples/sample_outputs/04_acapella_original.wav
!examples/sample_outputs/05_instrumental.wav
!examples/sample_input/sample_audio_input.wav
Como gerar os exemplos:
bash
# Instalar dependências
pip install numpy soundfile
# Gerar os áudios de exemplo
cd examples
python generate_sample_audio.py
# Verificar os arquivos gerados
ls -la sample_outputs/
# Testar se os arquivos estão ok
python -c "import soundfile as sf; print(sf.read('sample_outputs/01_completo_rvc.wav')[0].shape)"
Estrutura final:
text
rvc-voice-conversion/
├── app.py # Aplicação principal
├── examples/ # PASTA DE EXEMPLOS
│ ├── README.md # Documentação dos exemplos
│ ├── generate_sample_audio.py # Script para gerar exemplos
│ ├── download_real_samples.py # Opcional: baixar samples reais
│ ├── sample_outputs/ # 5 outputs de exemplo
│ │ ├── 01_completo_rvc.wav
│ │ ├── 02_rvc_com_musica.wav
│ │ ├── 03_original.wav
│ │ ├── 04_acapella_original.wav
│ │ └── 05_instrumental.wav
│ └── sample_input/ # Inputs de exemplo
│ └── sample_audio_input.wav
├── lib/ # Biblioteca
│ ├── __init__.py
│ ├── config.py
│ ├── jobs.py
│ ├── models.py
│ └── ui.py
├── jobs/ # Jobs processados
├── models/ # Modelos RVC
├── uploads/ # Uploads temporários
└── requirements.txt # Dependências