This repository contains an Advanced Digital Signal Processing project with two deliverables:
- Speech vocoder implementation (channel vocoder using analysis/synthesis filter banks and noise carrier)
- Digital filter design & analysis using MATLAB: FIR equiripple (Parks–McClellan) and IIR elliptic filters
The work focuses on interpreting magnitude, phase, and group delay responses, and on practical implementation trade-offs such as filter order, latency, and numerical stability.
- Input audio:
bkbe2114.wav - Sampling: Fs = 22 kHz, bandwidth analysed: 0–11 kHz
- 12 channels (analysis + synthesis band-pass filter banks)
- Frequency cutoffs derived from the mapping: [ f = 165.4(100.06^{x}-1) ] giving approximate cutoffs: [0, 69.53, 168.28, 308.55, 507.79, 790.77, 1192.71, 1763.61, 2574.51, 3726.27, 5362.19, 7685.79, 11000] Hz
- Envelope extraction per band:
- Half-wave rectification
- 3rd-order Butterworth LPF, fc = 160 Hz
- Carrier: white noise
- Modulation: envelope × noise, then synthesis filtering and summation into final vocoded speech
- FIR equiripple designs (firpmord + firpm):
- Order effects: sharper transitions + deeper stopband at higher order, but constant delay ≈ N/2
- Density factor effects: plot/grid resolution, not the true response
- IIR elliptic designs (ellipord + ellip; also Filter Designer App with SOS):
- Very efficient at low order (e.g., N≈4–5 meets stringent specs)
- Nonlinear phase + frequency-dependent group delay
- High forced orders (e.g., N=50 or N=100) show numerical/conditioning issues in code and pathological delay behaviour in the app
Takeaway: FIR ⇒ linear phase + predictable constant delay; IIR elliptic ⇒ lower order for sharp magnitude specs but nonlinear phase/delay variation; vocoding preserves intelligibility via envelope extraction and noise-carrier modulation.
src/— MATLAB source code (vocoder + filter design)docs/— detailed write-ups per part + full report PDF- (Optional)
results/figures/— exported plots used in docs - (Optional)
data/audio_in/anddata/audio_out/— short audio samples
- MATLAB (R20xx or later recommended)
- Signal Processing Toolbox (for
firpm,firpmord,ellip,ellipord,freqz,grpdelay, etc.)
- Place
bkbe2114.wavin the same folder assrc/vocoder/vocoder_main.mor update the path inside the script. - In MATLAB, set the repo root as Current Folder.
- Run:
src/vocoder/vocoder_main.m
- The script:
- plays the original and vocoded audio (
soundsc) - generates time + spectrum plots at key pipeline stages
- plays the original and vocoded audio (
- In MATLAB, set the repo root as Current Folder.
- Run:
src/filter_design/run_all_filter_tasks.m
- The script should generate responses (magnitude/phase/group delay) for the FIR and IIR tasks.
- Vocoder pipeline & results:
docs/vocoder.md - FIR/IIR design tasks & conclusions:
docs/filter-design.md - Methodology and assumptions:
docs/methodology.md - Limitations & improvements:
docs/limitations.md - References:
docs/references.md - Full academic report:
docs/report.pdf
This project emphasizes engineering interpretation:
- Why FIR order increases stopband rejection but adds latency
- Why density factor changes visual smoothness rather than filter behaviour (FIR equiripple)
- Why high-order elliptic IIR designs become ill-conditioned in direct coefficient form, and why SOS helps (but can still be impractical)







