RVC-CH / README.md
LosCaquitos's picture
Update README.md
e9e3f69 verified
|
raw
history blame
31.1 kB
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

Hugging Face Spaces Docker Gradio

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

[![Hugging Face Spaces](https://img.shields.io/badge/Hugging%20Face-Spaces-yellow)](https://huggingface.co/spaces)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue)](https://docker.com)
[![Gradio](https://img.shields.io/badge/Gradio-4.0+-orange)](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

[![Hugging Face Spaces](https://img.shields.io/badge/Hugging%20Face-Spaces-yellow)](https://huggingface.co/spaces)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue)](https://docker.com)
[![Gradio](https://img.shields.io/badge/Gradio-4.0+-orange)](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