Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Separação de Fontes Sonoras com NMF

Trabalho de Álgebra Linear Computacional. Sistema que separa fontes sonoras misturadas em um áudio usando Fatoração de Matrizes Não-Negativas (NMF).

Dado um áudio com várias fontes (ex.: baixo + harmonia + melodia), o sistema fatora o espectrograma V ≈ W·H (com W, H ≥ 0) e reconstrói cada fonte separadamente.

Estrutura

ALC/
├── README.md
├── requirements.txt
├── src/
│   ├── nmf.py         # algoritmo NMF (regras multiplicativas) + validação
│   ├── audio.py       # STFT, espectrograma e reconstrução (ISTFT)
│   └── caso_teste.py  # demonstração: gera o áudio, separa e mede SDR
├── data/audios/caso_teste/   # mistura + stems (gabarito)
└── results/
    ├── graficos/             # convergencia_nmf.png + caso_teste/ (espectrogramas)
    └── audio_separado/       # caso_teste/ (fontes separadas .wav)

Instalação (uma vez)

pip install -r requirements.txt

Como rodar

1. Validar o algoritmo NMF (testes sintéticos + gráfico de convergência + comparação com sklearn):

python3 src/nmf.py

2. Rodar a demonstração (sintetiza o áudio, separa as 3 vozes e mede a qualidade com SDR/SIR/SAR):

python3 src/caso_teste.py

Resultado esperado: SDR médio ~24 dB (separação boa).

Ouvir os resultados:

open data/audios/caso_teste/mistura.wav              # a mistura (3 vozes juntas)
open results/audio_separado/caso_teste/fonte_1.wav   # uma fonte separada

Como funciona (resumo)

áudio → STFT → espectrograma V → NMF (V≈W·H) → máscaras de Wiener → ISTFT → fontes
  • W = timbre de cada fonte (quais frequências);
  • H = ativação de cada fonte (quando toca);
  • S = número de fontes. A separação é melhor quando S ≈ nº de padrões espectrais do áudio.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages