Intermediate
Wavelet & Signal Processing
.m Script + DWT Filter
1. Design and Evaluation of a Discrete Wavelet Transform (DWT) Based Multi-Signal Receiver using MATLAB
π― Problem & Objective:
General purpose receivers are engineered with wide frequency bandwidths to capture dynamic incoming signals. However, standard wideband receivers often process one primary carrier and suffer severe performance degradation when weaker co-channel signals or interference spurs exist. This project builds a multi-signal decomposition receiver using Discrete Wavelet Transform (DWT) multi-resolution analysis to isolate weak speech/data signals from interfering high-power spurs, enabling simultaneous dual-signal detection and reconstruction.
βοΈ Key MATLAB Functions:
wavedec
waverec
dwt
wthrmngr
wthresh
spectrogram
π Expected Output & Metrics:
Multi-level wavelet decomposition tree (Approximation $A_4$ and Details $D_1-D_4$), Spur-to-Signal suppression ratio (> 28 dB), Signal-to-Interference-plus-Noise Ratio (SINR) improvement curves, and reconstructed signal bit error rates.
[sigIn, fs] = audioread('multisignal_composite.wav');
wname = 'db4'; level = 4;
[C, L] = wavedec(sigIn, level, wname);
thr = wthrmngr('dw2ddenoLVL', 'penalhi', C, L);
C_clean = wthresh(C, 's', thr(1));
sigReconstructed = waverec(C_clean, L, wname);
sinr_gain = snr(sigReconstructed) - snr(sigIn);
fprintf('SINR Improvement: %.2f dB\n', sinr_gain);
Beginner
Audio Toolbox
.m Script + Speech Dataset
2. MFCC & Dynamic Time Warping (DTW) Isolated Word Recognition
π― Problem & Objective:
Human speech exhibits natural tempo and duration variations across different utterances of the same word. This project implements an isolated spoken digit recognizer (0-9) by extracting 13 Mel-Frequency Cepstral Coefficients (MFCCs) per frame and utilizing Dynamic Time Warping (DTW) to align non-linear time scales between test speech and stored reference templates.
βοΈ Key MATLAB Functions:
mfcc
dtw
audioread
vad
confusionchart
π Expected Output & Metrics:
DTW optimal warping path visualization, pairwise acoustic distance matrix, word recognition accuracy (> 96.5% for isolated digits), and confusion matrix across test speakers.
[testAudio, fs] = audioread('spoken_five_test.wav');
[refAudio, ~] = audioread('spoken_five_ref.wav');
mfccTest = mfcc(testAudio, fs, 'NumCoeffs', 13, 'WindowLength', round(0.025*fs));
mfccRef = mfcc(refAudio, fs, 'NumCoeffs', 13, 'WindowLength', round(0.025*fs));
[dist, ix, iy] = dtw(mfccTest', mfccRef');
fprintf('Matching DTW Distance: %.3f\n', dist);
Advanced
Deep Learning & Audio
BiLSTM Architecture + RAVDESS Model
3. Deep Learning Speech Emotion Recognition (SER) with BiLSTM & Mel-Spectrograms
π― Problem & Objective:
Detecting human emotional states (Neutral, Happy, Sad, Angry, Fearful, Surprised) directly from voice acoustics is crucial for conversational AI, psychological assessment, and customer sentiment analytics. This project extracts Mel-filterbank energy spectrograms and trains a Bidirectional Long Short-Term Memory (BiLSTM) network with attention pooling on the standard RAVDESS speech dataset.
βοΈ Key MATLAB Functions:
melSpectrogram
bilstmLayer
trainingOptions
trainNetwork
audioDatastore
π Expected Output & Metrics:
Validation accuracy (> 88.2%), weighted F1-score across 6 emotional classes, training loss curves, and real-time live emotion prediction gauge.
numFeatures = 64;
numClasses = 6;
layers = [
sequenceInputLayer(numFeatures, 'Name', 'mel_input')
bilstmLayer(128, 'OutputMode', 'sequence', 'Name', 'bilstm1')
dropoutLayer(0.3)
bilstmLayer(64, 'OutputMode', 'last', 'Name', 'bilstm2')
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
opts = trainingOptions('adam', 'MaxEpochs', 30, 'MiniBatchSize', 32, ...
'InitialLearnRate', 0.001, 'Plots', 'training-progress');
Intermediate
Audio & Deep Learning
2D-CNN Model + Real-Time GUI
4. Real-Time Voice Command Recognition Using Convolutional Neural Networks (CNN)
π― Problem & Objective:
Build a robust, low-latency 12-class voice command recognizer ('Yes', 'No', 'Up', 'Down', 'Left', 'Right', 'On', 'Off', 'Stop', 'Go', 'Silence', 'Unknown') using Google Speech Commands Dataset. The pipeline converts 1-second audio chunks into 2D auditory spectrograms, feeds them into a 2D Deep CNN, and triggers real-time robot/device actions via a live microphone loop.
βοΈ Key MATLAB Functions:
audioDeviceReader
audioDatastore
convolution2dLayer
classify
augmentedImageDatastore
π Expected Output & Metrics:
Command classification accuracy (> 95.8%), inference latency (< 35 ms per window), real-time streaming confidence bar graph, and confusion matrix.
deviceReader = audioDeviceReader('SampleRate', 16000, 'SamplesPerFrame', 16000);
setup(deviceReader);
disp('Listening for voice commands (Speak into microphone)...');
while true
audioBuffer = deviceReader();
spec = melSpectrogram(audioBuffer, 16000, 'NumBands', 40);
[predCmd, probs] = classify(trainedVoiceNet, spec);
if max(probs) > 0.85 && ~strcmp(char(predCmd), 'Silence')
fprintf('Detected Command: %s (Confidence: %.1f%%)\n', ...
char(predCmd), max(probs)*100);
end
end
Beginner
Signal Processing
.m Script + Formant Plotter
5. Formant and Pitch Frequency Extraction using LPC & Cepstral Analysis
π― Problem & Objective:
Accurate estimation of fundamental pitch ($F_0$) and vocal tract formant resonances ($F_1, F_2, F_3$) is essential for vowel identification, speaker profiling, and speech synthesis. This project applies Linear Predictive Coding (LPC) all-pole filter modeling to compute formant center frequencies from polynomial roots, alongside Cepstral liftering for pitch peak detection.
βοΈ Key MATLAB Functions:
lpc
roots
rceps
freqz
pitch
π Expected Output & Metrics:
Vowel formant chart ($F_1$ vs. $F_2$ vowel triangle in Hz), LPC spectral envelope superimposed over FFT spectrum, and estimated pitch trajectory ($F_0 \approx 85-255\text{ Hz}$).
[x, fs] = audioread('vowel_a.wav');
frame = x(1000:1000+round(0.03*fs)) .* hamming(round(0.03*fs)+1);
lpcCoeffs = lpc(frame, 12);
r = roots(lpcCoeffs);
r = r(imag(r) > 0.01);
formants = sort(atan2(imag(r), real(r)) * (fs / (2*pi)));
fprintf('Formant F1: %.1f Hz | Formant F2: %.1f Hz | F3: %.1f Hz\n', ...
formants(1), formants(2), formants(3));
Advanced
Communications & SDR
MIMO SDR Model + BER Script
6. LiUMIMO: A MIMO Testbed & Spatial Multiplexing for Broadband SDR using MATLAB
π― Problem & Objective:
To meet the escalating demand for high throughput and reliable wireless connectivity in 4G LTE, 5G NR, and WLAN 802.11n/ac, Multiple-Input Multiple-Output (MIMO) combined with Orthogonal Frequency Division Multiplexing (OFDM) is vital. Software simulations often miss real-world RF impairments. This project builds the MATLAB physical layer testbed for $2\times 2$ and $4\times 4$ MIMO-OFDM software defined radio transmission, real-time channel estimation, and zero-forcing / MMSE detection.
βοΈ Key MATLAB Functions:
comm.MIMOChannel
ofdmmod
ofdmdemod
qammod
comm.OSTBCEncoder
π Expected Output & Metrics:
Constellation scatter plots before and after spatial equalization, Channel Capacity vs. SNR curves, and Bit Error Rate (BER) waterfall comparisons between SISO and $2\times 2$ Alamouti STBC.
numTx = 2; numRx = 2; numCarr = 64; cpLen = 16;
dataBits = randi([0 1], 2 * numCarr * 4, 1);
modSymbols = qammod(dataBits, 16, 'InputType', 'bit', 'UnitAveragePower', true);
txGrid = reshape(modSymbols, [numCarr, numTx]);
txSig1 = ofdmmod(txGrid(:,1), numCarr, cpLen);
txSig2 = ofdmmod(txGrid(:,2), numCarr, cpLen);
H = (randn(numRx, numTx) + 1j*randn(numRx, numTx)) / sqrt(2);
rxSig = [txSig1 txSig2] * H.' + 0.05*(randn(size(txSig1,1), numRx) + 1j*randn(size(txSig1,1), numRx));
Beginner
Audio & Signal Processing
.m Script + Note Tuner
7. Music Note Recognition & Real-Time Pitch Estimation in MATLAB
π― Problem & Objective:
Real-time estimation of musical fundamental frequencies allows automated acoustic tuning, transcription, and music-to-sheet notation. Sampled at standard $44.1\text{ kHz}$, this project implements two complementary estimation architectures: spectral peak FFT superimposition and time-domain autocorrelation deviation analysis, automatically mapping detected frequencies to Western chromatic notes ($C_0 - B_8$).
βοΈ Key MATLAB Functions:
fft
findpeaks
xcorr
audioread
soundsc
π Expected Output & Metrics:
Real-time note name display (e.g., $A_4 = 440.0\text{ Hz}$, $C_4 = 261.6\text{ Hz}$), cent deviation error graph ($\pm 1.5\text{ cents}$ accuracy), and harmonic spectrum breakdown.
[audioData, fs] = audioread('guitar_a4.wav');
N = length(audioData);
Y = abs(fft(audioData .* hann(N)));
freqs = (0:N-1)*(fs/N);
[~, maxIdx] = max(Y(1:floor(N/2)));
f0 = freqs(maxIdx);
midiNote = round(69 + 12 * log2(f0 / 440));
noteNames = {'C','C#','D','D#','E','F','F#','G','G#','A','A#','B'};
noteIdx = mod(midiNote, 12) + 1;
octave = floor(midiNote / 12) - 1;
fprintf('Detected Note: %s%d (Freq: %.2f Hz)\n', noteNames{noteIdx}, octave, f0);
Advanced
Statistics & ML / LiDAR
ADAS Co-Simulation + SVM/MLP
8. Obstacle Recognition for On-Chip LiDAR Sensors in Cyber-Physical Systems using MATLAB
π― Problem & Objective:
Collision avoidance in Advanced Driver Assistance Systems (ADAS) demands reliable, real-time sensory classification of vehicles, pedestrians, and road barriers across unpredictable weather. This project implements a cyber-physical co-simulation between SCANeR traffic scenarios and MATLAB/Simulink, evaluating Multi-Layer Perceptrons (MLP), Self-Organizing Maps (SOM), and Support Vector Machines (SVM) under sunny, foggy, rainy, and snowy conditions.
βοΈ Key MATLAB Functions:
fitcsvm
patternnet
selforgmap
pcfitplane
predict
π Expected Output & Metrics:
Obstacle classification accuracy across 4 weather scenarios (MLP 97.4% in fog, SVM 96.1% in rain, SOM 94.8% in snow), collision warning latency (< 20 ms), and ROC curves.
load('lidar_traffic_dataset.mat');
svmModel = fitcsvm(trainFeatures, trainLabels, 'KernelFunction', 'rbf', ...
'Standardize', true, 'ClassNames', {'Vehicle', 'Pedestrian', 'Barrier'});
predictedLabels = predict(svmModel, testFeaturesRain);
accuracy = sum(strcmp(predictedLabels, testLabelsRain)) / numel(testLabelsRain);
fprintf('SVM Rainy Scenario Detection Accuracy: %.2f%%\n', accuracy * 100);
Intermediate
Simulink & Simscape Electrical
Simulink Model + THD Analysis
9. MATLAB/Simulink Implementation of Three PWM Inverter Control Techniques with THD Analysis
π― Problem & Objective:
Three-phase Voltage Source Inverters (VSI) are fundamental to electric motor drives, solar grid integration, and power electronic converters. This project designs, simulates, and compares three core modulation strategies: Sinusoidal PWM (SPWM), Third-Harmonic-Injection PWM (THIPWM), and Space-Vector PWM (SVPWM), analyzing pole voltages, line-to-line voltages, DC bus utilization, and Total Harmonic Distortion (THD).
βοΈ Key MATLAB Functions:
sim
thd
power_analyze
fft
sinstream
π Expected Output & Metrics:
Harmonic spectra comparison plots, DC bus voltage utilization (+15.5% boost in SVPWM/THIPWM over SPWM), and measured THD percentage across modulation indexes $m_a = 0.4 \dots 1.1$.
simOut = sim('vsi_pwm_comparison_model.slx', 'StopTime', '0.1');
v_spwm = simOut.logsout.get('V_line_SPWM').Values.Data;
v_svpwm = simOut.logsout.get('V_line_SVPWM').Values.Data;
fs = 100e3;
thd_spwm = thd(v_spwm, fs);
thd_svpwm = thd(v_svpwm, fs);
fprintf('SPWM Line-to-Line THD: %.2f dB (%.2f%%)\n', thd_spwm, 10^(thd_spwm/20)*100);
fprintf('SVPWM Line-to-Line THD: %.2f dB (%.2f%%)\n', thd_svpwm, 10^(thd_svpwm/20)*100);
Advanced
Statistics & Audio
Continuous HMM Recognizer
10. Hidden Markov Model (HMM) Continuous Speech Recognition System
π― Problem & Objective:
Continuous speech contains non-stationary co-articulation effects between phonemes that simple template matching cannot handle. This project implements Left-to-Right Hidden Markov Models (HMM) with Gaussian emission densities. It trains phone state transition matrices via the Baum-Welch (EM) algorithm and performs continuous word decoding using the Viterbi algorithm with bi-gram language models.
βοΈ Key MATLAB Functions:
hmmtrain
hmmviterbi
hmmdecode
mfcc
kmeans
π Expected Output & Metrics:
Word Error Rate (WER < 7.4%), Sentence Error Rate (SER), log-likelihood convergence graphs, and state-sequence alignment trellis plots.
[seqs, codebook] = quantizeMfccSequences(trainAudioFiles, 64);
numStates = 5;
initTrans = triu(ones(numStates), 0) ./ sum(triu(ones(numStates), 0), 2);
initEmis = ones(numStates, 64) / 64;
[estTrans, estEmis] = hmmtrain(seqs, initTrans, initEmis, 'Maxiterations', 50);
bestPath = hmmviterbi(testSeq, estTrans, estEmis);
Intermediate
Audio & Machine Learning
GMM-UBM Biometric Pipeline
11. Speaker Identification & Verification Using Gaussian Mixture Models (GMM-UBM)
π― Problem & Objective:
Biometric voice authentication requires determining the identity of an unknown voice against enrolled profiles regardless of spoken content (text-independent). This project trains a Universal Background Model (UBM) with 512 Gaussian mixtures, uses Maximum A Posteriori (MAP) adaptation to derive speaker-specific models, and performs log-likelihood ratio verification.
βοΈ Key MATLAB Functions:
fitgmdist
posterior
pdf
mfcc
roc
π Expected Output & Metrics:
Equal Error Rate (EER < 2.8%), Detection Error Tradeoff (DET) curves, False Acceptance Rate (FAR) vs. False Rejection Rate (FRR), and speaker log-likelihood scoring.
testMfcc = mfcc(testVoiceAudio, fs, 'NumCoeffs', 19);
logLikTarget = sum(log(pdf(targetSpeakerGMM, testMfcc)));
logLikUBM = sum(log(pdf(universalBackgroundGMM, testMfcc)));
llrScore = (logLikTarget - logLikUBM) / size(testMfcc, 1);
threshold = 1.25;
if llrScore > threshold
disp('Voice Verified: AUTHORIZED ACCESS');
else
disp('Voice Rejected: IMPOSTOR DETECTED');
end
Advanced
Deep Learning Toolbox
CTC Speech-to-Text Model
12. End-to-End Automatic Speech Recognition (ASR) with CTC Loss in MATLAB
π― Problem & Objective:
Traditional ASR pipelines separate acoustic modeling, phonetic pronunciation dictionaries, and language decoding. Modern end-to-end systems map raw audio spectrograms directly to character sequences. This project implements a Deep 1D-CNN + 3-layer BiGRU architecture trained with Connectionist Temporal Classification (CTC) loss on the LibriSpeech corpus.
βοΈ Key MATLAB Functions:
dlnetwork
ctcLoss
gruLayer
dlarray
ctcDecode
π Expected Output & Metrics:
Character Error Rate (CER < 4.1%), Word Error Rate (WER < 9.8%), greedy best-path and beam search decoding text outputs.
function [loss, gradients] = modelGradients(net, dlX, dlTargets, targetLengths)
dlY = forward(net, dlX);
loss = ctcLoss(dlY, dlTargets, targetLengths, 'DataFormat', 'CBT');
gradients = dlgradient(loss, net.Learnables);
end
decodedText = ctcDecode(dlY, 'BeamWidth', 10, 'Vocabulary', vocabChars);
Intermediate
DSP System Toolbox
Adaptive AEC Filter .m Script
13. Real-Time Acoustic Echo Cancellation (AEC) Using Adaptive LMS/RLS Filters
π― Problem & Objective:
In hands-free automotive speakerphones and teleconferencing systems, loudspeaker feedback loops into the microphone, creating distracting acoustic echo. This project models the room impulse response (RIR) and deploys Normalized Least Mean Squares (NLMS) and Recursive Least Squares (RLS) adaptive filters with Double-Talk Detection (DTD) to eliminate echo while preserving near-end speech.
βοΈ Key MATLAB Functions:
dsp.LMSFilter
dsp.RLSFilter
dsp.FrequencyDomainAdaptiveFilter
audioread
π Expected Output & Metrics:
Echo Return Loss Enhancement (ERLE > 32 dB), Convergence rate curves, tracking performance during speaker position changes, and audio listening demos.
filterLength = 1024; stepSize = 0.05;
fdaf = dsp.FrequencyDomainAdaptiveFilter('Length', filterLength, ...
'StepSize', stepSize, 'Method', 'NormalizedFDAF');
[nearEndSpeech, fs] = audioread('near_end.wav');
[farEndRef, ~] = audioread('far_end_echo.wav');
[echoEstimate, errorSig] = fdaf(farEndRef, nearEndSpeech);
erle = 10 * log10(var(nearEndSpeech) / var(errorSig));
fprintf('Measured ERLE: %.2f dB\n', erle);
Beginner
Audio & Signal Processing
VAD Segmenter Script
14. Voice Activity Detection (VAD) Algorithm Based on Short-Time Energy & ZCR
π― Problem & Objective:
Transmitting or processing silent pauses in audio wastes computational power, memory, and network bandwidth. This project implements a dual-threshold Voice Activity Detector (VAD) utilizing Short-Time Energy (STE), Spectral Flatness, and Zero-Crossing Rate (ZCR) to accurately segment voiced speech, unvoiced speech, and background noise frames.
βοΈ Key MATLAB Functions:
vad
zerocrossrate
buffer
spectralFlatness
envelope
π Expected Output & Metrics:
Time-domain speech bounding box overlays, speech clipping prevention rate (> 99.1%), false alarm rate in noise (< 3.2%), and energy threshold trajectories.
[speechSig, fs] = audioread('continuous_speech.wav');
frameLen = round(0.02 * fs);
frames = buffer(speechSig, frameLen, frameLen/2, 'nodelay');
ste = sum(frames.^2, 1);
zcr = sum(abs(diff(frames > 0, 1, 1)), 1) / frameLen;
speechMask = (ste > 0.15 * max(ste)) & (zcr < 0.4);
activeSpeechSamples = frames(:, speechMask);
activeSpeech = activeSpeechSamples(:);
Intermediate
Audio & DSP System
Formant Synthesizer Engine
15. Text-to-Speech (TTS) Acoustic Synthesis & Formant Resynthesis in MATLAB
π― Problem & Objective:
Understanding how human vocal tracts produce intelligible speech requires synthesizing sound from phoneme parameters. This project implements a source-filter Klatt formant synthesizer: generating periodic glottal pulse trains (voiced) and white noise (unvoiced/fricatives), shaped through cascading 2nd-order resonator digital filters parameterized by formant frequencies ($F_1-F_4$) and bandwidths.
βοΈ Key MATLAB Functions:
filter
iirpeak
sawtooth
soundsc
audiowrite
π Expected Output & Metrics:
Acoustic audio file generated from input phoneme strings (e.g. "HELLO WORLD"), synthetic speech spectrogram matching natural formant tracks, and pitch contour modulation.
fs = 16000; t = 0:1/fs:0.5; f0 = 120;
glottalSource = sawtooth(2*pi*f0*t, 0.1);
[b1, a1] = iirpeak(270/(fs/2), 50/(fs/2));
[b2, a2] = iirpeak(2290/(fs/2), 100/(fs/2));
[b3, a3] = iirpeak(3010/(fs/2), 120/(fs/2));
synthAudio = filter(b1, a1, glottalSource);
synthAudio = filter(b2, a2, synthAudio);
synthAudio = filter(b3, a3, synthAudio);
soundsc(synthAudio, fs);
Advanced
Deep Learning & Transformers
Whisper Inference & Fine-Tuning
16. Pretrained Whisper & Transformer Fine-Tuning for Multilingual Speech-to-Text
π― Problem & Objective:
State-of-the-art speech-to-text systems leverage large-scale transformer encoder-decoder architectures trained on hundreds of thousands of hours of audio. This project integrates OpenAI's Whisper model inside MATLAB R2024b, fine-tuning the cross-attention decoder layers on custom medical or technical speech vocabularies with GPU acceleration.
βοΈ Key MATLAB Functions:
whisper
transcribe
dlnetwork
audioDatastore
gpuDevice
π Expected Output & Metrics:
Real-time multilingual transcription output with timestamps, BLEU translation score, Word Error Rate (WER < 3.5% on custom technical domain), and GPU throughput stats.
asrModel = whisper('Model', 'base', 'ExecutionEnvironment', 'gpu');
[audioData, fs] = audioread('clinical_consultation.wav');
results = transcribe(asrModel, audioData, fs, 'Task', 'transcribe');
fprintf('Detected Language: %s\n', results.Language);
fprintf('Transcript: "%s"\n', results.Text);
Advanced
Phased Array & Audio
Multi-Mic Beamforming Model
17. Microphone Array Beamforming & DOA Estimation for Speech Enhancement
π― Problem & Objective:
In smart speakers and conference rooms, reverberation and interfering speakers degrade speech recognition accuracy. This project simulates an 8-element Uniform Linear Microphone Array (ULA), estimating the speaker's Direction of Arrival (DOA) via the MUSIC algorithm and steering a Minimum Variance Distortionless Response (MVDR) adaptive beamformer toward the target voice while nulling background noise.
βοΈ Key MATLAB Functions:
phased.ULA
phased.MVDRBeamformer
phased.MUSICEstimator
pattern
π Expected Output & Metrics:
3D array beampattern steering plots, DOA spatial angular spectrum peaks ($\pm 0.5^\circ$ error), and SNR improvement (> 18.5 dB gain over single mic).
c = 343;
d = 0.04;
array = phased.ULA('NumElements', 8, 'ElementSpacing', d);
beamformer = phased.MVDRBeamformer('SensorArray', array, ...
'OperatingFrequency', 2000, 'Direction', [30; 0]);
enhancedAudio = beamformer(multichannelAudioMatrix);
Beginner
Audio & Signal Processing
PESQ/STOI Metric Evaluator
18. Objective Speech Quality & Intelligibility Assessment (PESQ & STOI)
π― Problem & Objective:
Subjective Mean Opinion Score (MOS) listening tests are slow and expensive. This project implements standardized objective acoustic metricsβPerceptual Evaluation of Speech Quality (PESQ ITU-T P.862) and Short-Time Objective Intelligibility (STOI)βto benchmark VoIP codecs (AMR, Opus, G.711) and speech enhancement algorithms under diverse channel losses.
βοΈ Key MATLAB Functions:
pesq
stoi
snr
audioread
resample
π Expected Output & Metrics:
Objective PESQ MOS score ($1.0 - 4.5$), STOI intelligibility percentage ($0 - 100\%$), Segmental SNR (SSNR), and degradation vs. packet loss rate curves.
[refAudio, fsRef] = audioread('clean_reference_speech.wav');
[degAudio, fsDeg] = audioread('voip_codec_output.wav');
ref16 = resample(refAudio, 16000, fsRef);
deg16 = resample(degAudio, 16000, fsDeg);
pesqScore = pesq(ref16, deg16, 16000, 'wideband');
stoiScore = stoi(ref16, deg16, 16000);
fprintf('PESQ-WB Score: %.2f / 4.50 (MOS)\n', pesqScore);
fprintf('STOI Intelligibility: %.1f%%\n', stoiScore * 100);
Intermediate
Biomedical & Statistics
Pathological Voice Classifier
19. Dysarthric & Pathological Voice Disorder Classification using Jitter & Shimmer
π― Problem & Objective:
Vocal fold pathologies and neurological disorders (such as Parkinson's Disease or vocal cord paralysis) induce subtle cycle-to-cycle frequency and amplitude perturbation in sustained phonations. This project extracts micro-perturbation metricsβJitter (local, rap, ppq5), Shimmer (apq3, apq5), and Harmonics-to-Noise Ratio (HNR)βto train an SVM classifier for early clinical screening.
βοΈ Key MATLAB Functions:
pitch
fitcsvm
findpeaks
predict
confusionmat
π Expected Output & Metrics:
Pathological vs. healthy voice classification accuracy (> 94.2%), sensitivity, specificity, and jitter/shimmer radar feature plots.
[audioIn, fs] = audioread('patient_vowel_ah.wav');
[f0, voiced] = pitch(audioIn, fs, 'Method', 'SRH');
periods = 1 ./ f0(voiced);
jitterLocal = sum(abs(diff(periods))) / ((length(periods)-1) * mean(periods)) * 100;
fprintf('Extracted Local Jitter: %.3f%% (Normal Threshold < 1.04%%)\n', jitterLocal);
Intermediate
Audio & Signal Processing
Acoustic Fingerprint Search Engine
20. Audio Fingerprinting & Hash-Based Voice / Song Search Engine in MATLAB
π― Problem & Objective:
Identifying a song or speech snippet from a brief 3-second noisy recording captured on a smartphone microphone requires invariant acoustic hashing. This project builds a complete Shazam-style fingerprinting engine: identifying local spectral peaks in spectrograms, generating combinatorial landmark hash pairs $[f_1, f_2, \Delta t]$, and indexing an inverted hash database for instant sub-second retrieval.
βοΈ Key MATLAB Functions:
spectrogram
imregionalmax
containers.Map
audioread
π Expected Output & Metrics:
Identification accuracy (> 99.4% in clean, > 92.1% at 0 dB SNR noise), sub-50ms query match speed across 10,000 song fingerprints, and landmark constellation scatter plots.
[s, f, t] = spectrogram(audioSig, 2048, 1024, 2048, fs);
logSpec = 10*log10(abs(s) + 1e-6);
peakMask = imregionalmax(logSpec) & (logSpec > -25);
[peakFreqIdx, peakTimeIdx] = find(peakMask);
hashes = generateLandmarkHashes(peakFreqIdx, peakTimeIdx);
matchedTrack = queryDatabase(hashes);
fprintf('Query Matched Song: "%s"\n', matchedTrack);
Advanced
MATLAB Coder & Deep Learning
ANSI C Code + CMSIS-NN Binary
21. Low-Latency Keyword Spotting (KWS) Embedded C Code Generation with MATLAB Coder
π― Problem & Objective:
Edge microcontrollers (ARM Cortex-M4/M7, ESP32) have tight memory budgets (< 256 KB RAM) and must wake up only upon hearing a designated keyword (e.g., "Hey MATLAB"). This project trains a compact Depthwise-Separable 1D-CNN, quantizes weights to 8-bit integer (INT8), and automatically generates standalone ANSI C/C++ code with ARM CMSIS-NN acceleration using MATLAB Coder.
βοΈ Key MATLAB Functions:
codegen
coder.config
quantize
deepLearningConfig
π Expected Output & Metrics:
Generated standalone `kws_predict.c` / `kws_predict.h`, flash memory footprint (< 85 KB), RAM usage (< 28 KB), and inference execution time (< 12 ms per frame on 168 MHz MCU).
cfg = coder.config('lib');
cfg.TargetLang = 'C';
cfg.DeepLearningConfig = coder.DeepLearningConfig('arm-compute');
inputSample = zeros(40, 98, 'single');
codegen -config cfg kws_edge_classifier -args {inputSample} -report
disp('Embedded C Code generation complete: /codegen/lib/kws_edge_classifier');
Beginner
Signal Processing Toolbox
Spectral Subtraction .m Script
22. Spectral Subtraction & Wiener Filtering for Speech De-Noising in MATLAB
π― Problem & Objective:
Acoustic background noise (automotive engine hum, wind, factory rumble) severely degrades intelligibility and downstream ASR accuracy. This project implements spectral magnitude subtraction with over-subtraction factor $\alpha$ and spectral flooring $\beta$ to minimize musical noise artifacts, alongside Minimum Mean-Square Error (MMSE) Wiener filtering.
βοΈ Key MATLAB Functions:
stft
istft
wiener2
snr
audiowrite
π Expected Output & Metrics:
Spectrogram before and after denoising, Output SNR improvement ($\Delta\text{SNR} \approx +14.8\text{ dB}$), and subjective audio sample comparisons.
[noisySig, fs] = audioread('speech_car_noise.wav');
win = hamming(512); overlap = 256; nfft = 512;
[S, F, T] = stft(noisySig, fs, 'Window', win, 'OverlapLength', overlap, 'FFTLength', nfft);
noisePSD = mean(abs(S(:, 1:5)).^2, 2);
alpha = 2.0; beta = 0.01;
cleanMag = sqrt(max(abs(S).^2 - alpha * noisePSD, beta * noisePSD));
S_clean = cleanMag .* exp(1j * angle(S));
cleanSig = istft(S_clean, fs, 'Window', win, 'OverlapLength', overlap, 'FFTLength', nfft);
fprintf('Denoising complete. SNR gain: +%.2f dB\n', snr(cleanSig) - snr(noisySig));