Avaliações da disciplina de PDS no SENAI CIMATEC, entre setembro e outubro de 2024. Duas entregas, as duas em cima de áudio real gravado pela turma.
Pega uma gravação de voz e descobre a frequência fundamental, o tom em que a pessoa fala.
O caminho é o de sempre em PDS: converte para mono, monta o vetor de tempo a partir da taxa de amostragem, aplica a FFT e normaliza a magnitude. A média é subtraída do espectro para o nível DC não dominar o gráfico e esconder os picos que interessam.
Dois detalhes que o script trata e valem nota:
- Zero-padding. Se o número de amostras não é potência de 2, o sinal é completado com zeros até a próxima potência. A FFT fica mais rápida e o espectro ganha resolução aparente.
- Limite de 500 Hz na busca. A fundamental da voz humana fica bem abaixo disso; procurar acima só acharia harmônicos e ruído.
Depois usa findpeaks para marcar as componentes principais do espectro.
As gravações estão em av1/audio/, e av1/slides.pdf é a apresentação da
entrega.
Um equalizador de três bandas, com cada banda implementada duas vezes, para comparar as duas famílias de filtro digital:
| Banda | Faixa | Tipo |
|---|---|---|
| Graves | até 250 Hz | passa-baixa |
| Médios | 250 a 2000 Hz | passa-faixa |
| Agudos | acima de 2000 Hz | passa-alta |
Os FIR são projetados por janela de Kaiser; os IIR, por Butterworth. As duas famílias recebem as mesmas especificações (1 dB de ripple na banda de passagem, 60 dB de atenuação na banda de rejeição) justamente para a comparação ser justa.
A diferença que o trabalho quer mostrar: o IIR atinge a mesma especificação com uma ordem muito menor, mas tem fase não linear e realimentação; o FIR é sempre estável e de fase linear, ao custo de muito mais coeficientes.
Os resultados já estão versionados: av2/audio_*.wav são as seis saídas
filtradas, e av2/graficos/ tem as respostas em frequência de cada filtro, os
espectros e as comparações.
av2/filtros.m usa designfilt, que é do Signal Processing Toolbox do MATLAB,
e não roda no Octave. av1/analise_frequencial.m roda nos dois, e começa com pkg load signal para o caso do Octave.
cd av2 && filtrosOs dois scripts leem o .wav pelo nome, sem caminho, então precisam ser
executados de dentro da própria pasta. No av1, ainda é preciso apontar o
filename para dentro de audio/ ou rodar de lá: o script pede
'Amanda.wav', mas o arquivo está em av1/audio/Amanda.wav.