1. Speech Recognition & Noise Reduction via Butterworth Filter & Formant Comparison
Beginner
Toolbox: Signal Processing, Audio Toolbox
Deliverables: Code .m, Audio Plots
🎯 Problem & Objective: Process speech signals degraded by additive Gaussian white noise. Implement a 4th-order Butterworth bandpass filter (300 Hz–3400 Hz) to eliminate out-of-band acoustic noise, extract pitch period (F0) and formant frequency vectors (F1, F2), and match against reference voice templates.
⚙️ Key MATLAB Functions:
butterfiltfiltaudioreadpitchfindpeaksfft
📊 Expected Output & Metrics: SNR enhancement (>14 dB), cleaned speech audio playback, formant spectral peak tracking overlays, and minimum Euclidean distance speaker classification.
[x, fs] = audioread('speech_sample.wav');
x_noisy = x + 0.05 * randn(size(x));
f_low = 300 / (fs/2); f_high = 3400 / (fs/2);
[b, a] = butter(4, [f_low, f_high], 'bandpass');
x_clean = filtfilt(b, a, x_noisy);
f0 = pitch(x_clean, fs, 'Method', 'SRH');
f0_mean = mean(f0(~isnan(f0)));
N = 2048; X_mag = abs(fft(x_clean(1:min(N, end)), N));
freq_axis = (0:N/2-1)*(fs/N);
[pks, locs] = findpeaks(X_mag(1:N/2), freq_axis, 'MinPeakDistance', 200, 'NPeaks', 3);
fprintf('Estimated Mean Pitch (F0): %.2f Hz\n', f0_mean);
fprintf('Detected Formants: F1 = %.1f Hz, F2 = %.1f Hz\n', locs(1), locs(2));
Est. Duration: 4–6 Hours
Request Custom Project →
2. Isolated & Connected Word Recognition Using Dynamic Time Warping (DTW)
Intermediate
Toolbox: Audio Toolbox, DSP System Toolbox
Deliverables: Source Code .m, GUI Demo
🎯 Problem & Objective: Design a speaker-independent speech recognition and voice-to-text converter. Pre-process incoming utterances, extract 13 MFCC trajectories, and utilize Dynamic Time Warping (DTW) to align temporal length discrepancies between spoken input and enrolled word dictionary templates.
⚙️ Key MATLAB Functions:
dtwmfccdetectSpeechaudioreadspectrogram
📊 Expected Output & Metrics: DTW alignment path visualization, cost matrix heatmap, word recognition accuracy (>95% on clean digits/commands), and Voice-to-Text GUI output.
[test_audio, fs] = audioread('spoken_command.wav');
[ref_audio, ~] = audioread('template_open.wav');
idx_test = detectSpeech(test_audio, fs);
test_trimmed = test_audio(idx_test(1,1):idx_test(1,2));
mfcc_test = mfcc(test_trimmed, fs, 'WindowLength', round(0.03*fs), 'OverlapLength', round(0.015*fs));
mfcc_ref = mfcc(ref_audio, fs, 'WindowLength', round(0.03*fs), 'OverlapLength', round(0.015*fs));
[dist, ix, iy] = dtw(mfcc_test', mfcc_ref');
figure; dtw(mfcc_test(:,1)', mfcc_ref(:,1)');
title(sprintf('DTW Alignment Path (Min Cumulative Distance: %.2f)', dist));
Est. Duration: 1–2 Weeks
Request Custom Project →
3. Isolated Word Recognition System Using Rule-Based Time-Frame Matching
Beginner
Toolbox: Signal Processing Toolbox
Deliverables: Script .m, Project Report
🎯 Problem & Objective: Develop a lightweight isolated word recognition algorithm that segments speech into predefined time frames. Extract Short-Time Energy (STE) and Zero-Crossing Rate (ZCR) features to differentiate unvoiced fricatives from voiced vowels, matching utterances against rule-based heuristic templates.
⚙️ Key MATLAB Functions:
buffersumdiffsignaudioreadmean
📊 Expected Output & Metrics: Frame-by-frame STE and ZCR plots, silence boundary detection indices, and rule-based isolated digit classification (0-9) accuracy (>90%).
[x, fs] = audioread('isolated_digit_three.wav');
frame_len = round(0.025 * fs);
frame_hop = round(0.010 * fs);
frames = buffer(x, frame_len, frame_len - frame_hop, 'nodelay');
num_frames = size(frames, 2);
ste = sum(frames.^2, 1);
zcr = sum(abs(diff(sign(frames), 1, 1)), 1) / (2 * frame_len);
vad_mask = (ste > 0.05 * max(ste)) & (zcr < 0.4);
word_duration_sec = sum(vad_mask) * (frame_hop / fs);
fprintf('Detected Active Word Duration: %.3f seconds\n', word_duration_sec);
Est. Duration: 6–8 Hours
Request Custom Project →
4. Speech Recognition & Pattern Matching Using MFCC & Cross-Correlation
Intermediate
Toolbox: Audio Toolbox, Signal Processing
Deliverables: Code .m, Matching Matrix
🎯 Problem & Objective: Implement a robust speech recognition architecture using Mel-Frequency Cepstral Coefficients (MFCCs) coupled with 2D cross-correlation pattern matching. Evaluate correlation peaks across a reference dictionary to recognize spoken keywords in wireless transmission systems.
⚙️ Key MATLAB Functions:
mfccxcorr2xcorrdesignAuditoryFilterBankaudioread
📊 Expected Output & Metrics: 2D correlation surface plot, normalized correlation coefficient index (>0.92 for true matches), and word confusion matrix.
[query_audio, fs] = audioread('query_command.wav');
[db_audio, ~] = audioread('reference_command.wav');
coeffs_query = mfcc(query_audio, fs, 'NumCoeffs', 13);
coeffs_db = mfcc(db_audio, fs, 'NumCoeffs', 13);
q_norm = (coeffs_query - mean(coeffs_query(:))) / std(coeffs_query(:));
db_norm = (coeffs_db - mean(coeffs_db(:))) / std(coeffs_db(:));
corr_matrix = xcorr2(q_norm, db_norm) / (numel(q_norm));
[max_corr, max_idx] = max(corr_matrix(:));
fprintf('Peak Cross-Correlation Coefficient: %.4f\n', max_corr);
if max_corr > 0.85
disp('Status: Confirmed Pattern Match!');
else
disp('Status: No Speech Pattern Match.');
end
5. Voice & Speech-Based Security Authentication System with GSM Integration
Advanced
Toolbox: Audio, Statistics & Machine Learning, Instrument Control
Deliverables: Code .m, AT Commands Script
🎯 Problem & Objective: Develop a two-factor Voice & Speech Security System (VSSS) for office access control. Verify both the spoken passcode content (speech recognition) and the biometric identity of the speaker (voice biometrics via GMM). Trigger automated GSM feedback alerts via AT commands upon unauthorized intrusion attempts.
⚙️ Key MATLAB Functions:
fitgmdistpdfaudioreadserialportwritelinemfcc
📊 Expected Output & Metrics: Equal Error Rate (EER < 3.5%), log-likelihood authentication scores, real-time GSM SMS dispatch log, and access granted/denied GUI display.
[test_voice, fs] = audioread('user_access_attempt.wav');
test_mfcc = mfcc(test_voice, fs, 'NumCoeffs', 16);
log_lik = mean(log(pdf(speaker_gmm_model, test_mfcc) + 1e-12));
threshold = -24.5;
if log_lik >= threshold
fprintf('Access GRANTED: Speaker Verified (Score: %.2f)\n', log_lik);
else
fprintf('Access DENIED: Impostor Detected (Score: %.2f). Triggering GSM...\n', log_lik);
end
Est. Duration: 2–3 Weeks
Request Custom Project →
6. Attention Modeling & Biometric Recognition via Deep Belief Networks (DBDN)
Advanced
Toolbox: Deep Learning Toolbox, Computer Vision
Deliverables: Code .m, Deep Attention Map
🎯 Problem & Objective: Model human perceptual attention mechanisms for multi-modal biometric identity authentication. Train a Bilinear Deep Belief Network (DBDN) with spatial attention maps to automatically emphasize salient facial and voice spectrogram features while suppressing environmental clutter.
⚙️ Key MATLAB Functions:
trainNetworklayerGraphconvolution2dLayerfullyConnectedLayersoftmaxLayer
📊 Expected Output & Metrics: Biometric identification accuracy (>98.2%), Grad-CAM attention heatmaps, ROC curves, and cross-entropy loss convergence logs.
layers = [
imageInputLayer([64 64 1], 'Name', 'spec_input')
convolution2dLayer(3, 32, 'Padding', 'same', 'Name', 'conv1')
batchNormalizationLayer('Name', 'bn1')
reluLayer('Name', 'relu1')
maxPooling2dLayer(2, 'Stride', 2, 'Name', 'pool1')
convolution2dLayer(3, 64, 'Padding', 'same', 'Name', 'conv2_att')
reluLayer('Name', 'relu2')
fullyConnectedLayer(128, 'Name', 'fc_embed')
dropoutLayer(0.3, 'Name', 'drop1')
fullyConnectedLayer(50, 'Name', 'fc_speakers')
softmaxLayer('Name', 'softmax')
classificationLayer('Name', 'output')
];
options = trainingOptions('adam', ...
'MaxEpochs', 25, ...
'MiniBatchSize', 32, ...
'InitialLearnRate', 1e-3, ...
'Plots', 'training-progress');
Est. Duration: 2–4 Weeks
Request Custom Project →
7. Text-Independent Speaker Verification Using GMM-UBM Acoustic Modeling
Advanced
Toolbox: Audio Toolbox, Statistics & Machine Learning
Deliverables: Code .m, DET/ROC Plots
🎯 Problem & Objective: Implement an industry-standard Gaussian Mixture Model - Universal Background Model (GMM-UBM) architecture for text-independent speaker verification. Train a 64-component UBM on background cohorts, perform MAP mean adaptation for client models, and calculate Log-Likelihood Ratios (LLR).
⚙️ Key MATLAB Functions:
fitgmdistposteriormfccaudioFeatureExtractorrocmetrics
📊 Expected Output & Metrics: DET (Detection Error Trade-off) curve, Equal Error Rate (EER < 2.1%), and score distribution plots for target vs. impostor trials.
ubm_components = 32;
ubm = fitgmdist(impostor_mfcc_pool, ubm_components, 'RegularizationValue', 1e-4, 'MaxIter', 100);
gamma = posterior(ubm, target_speaker_mfcc);
n_k = sum(gamma, 1);
alpha_k = n_k ./ (n_k + 16);
adapted_mu = alpha_k' .* (gamma' * target_speaker_mfcc ./ n_k') + (1 - alpha_k') .* ubm.mu;
log_p_target = mean(log(pdf(gmdistribution(adapted_mu, ubm.Sigma, ubm.ComponentProportion), test_mfcc) + 1e-12));
log_p_ubm = mean(log(pdf(ubm, test_mfcc) + 1e-12));
llr_score = log_p_target - log_p_ubm;
fprintf('Verification LLR Score: %.3f (Decision: %s)\n', llr_score, ternary(llr_score > 0.5, 'VERIFIED', 'REJECTED'));
Est. Duration: 2–3 Weeks
Request Custom Project →
8. Deep Learning Speaker Identification Using x-Vectors & BiLSTM Networks
Advanced
Toolbox: Deep Learning Toolbox, Audio Toolbox
Deliverables: Code .m, Trained Net Model
🎯 Problem & Objective: Train a Bidirectional Long Short-Term Memory (BiLSTM) neural network to extract fixed-length deep voice embeddings (x-vectors / d-vectors) from variable-duration log-mel spectrograms. Classify 100+ speakers with Cosine Similarity and PLDA scoring.
⚙️ Key MATLAB Functions:
bilstmLayersequenceInputLayertrainnetmelSpectrogrampdist2
📊 Expected Output & Metrics: 99.1% closed-set speaker identification accuracy, t-SNE 2D embedding cluster visualization, and cosine similarity distance matrices.
num_features = 40;
num_classes = 100;
layers = [
sequenceInputLayer(num_features, 'Name', 'mel_seq')
bilstmLayer(128, 'OutputMode', 'sequence', 'Name', 'bilstm1')
bilstmLayer(128, 'OutputMode', 'last', 'Name', 'bilstm2')
fullyConnectedLayer(128, 'Name', 'x_vector_layer')
reluLayer('Name', 'relu_embed')
dropoutLayer(0.2, 'Name', 'drop')
fullyConnectedLayer(num_classes, 'Name', 'fc_out')
softmaxLayer('Name', 'prob')
classificationLayer('Name', 'class_output')
];
Est. Duration: 3–4 Weeks
Request Custom Project →
9. Voice Liveness Detection & Replay Spoofing Countermeasure
Intermediate
Toolbox: Audio Toolbox, Statistics & Machine Learning
Deliverables: Code .m, Anti-Spoof Report
🎯 Problem & Objective: Protect biometric voice authentication systems against synthetic text-to-speech (TTS), voice cloning, and loudspeaker replay attacks. Extract Constant-Q Transform (CQT) spectral features and train a Random Forest ensemble to detect high-frequency acoustic distortion and pop-noise transients.
⚙️ Key MATLAB Functions:
cqtTreeBaggerspectralCentroidspectralRolloffPointpredict
📊 Expected Output & Metrics: Half Total Error Rate (HTER < 4.2%), CQT spectrogram visualization of genuine vs. replayed audio, and real-time liveness decision output.
[audio_in, fs] = audioread('test_recording.wav');
sc = spectralCentroid(audio_in, fs);
ro = spectralRolloffPoint(audio_in, fs, 'Threshold', 0.95);
sf = spectralFlux(audio_in, fs);
feat_vec = [mean(sc), std(sc), mean(ro), mean(sf)];
Est. Duration: 1–2 Weeks
Request Custom Project →
10. Real-Time Voice-Controlled Home Automation & Speech Command GUI
Intermediate
Toolbox: Audio Toolbox, MATLAB App Designer
Deliverables: App Designer .mlapp, Arduino Code
🎯 Problem & Objective: Develop a low-latency, real-time voice-activated command recognition interface in MATLAB App Designer. Capture live microphone streaming with `audioDeviceReader`, perform continuous VAD keyword spotting ("Lights On", "Turn Fan Off", "Lock Door"), and interface with Arduino hardware pins.
⚙️ Key MATLAB Functions:
audioDeviceReaderaudiorecorderdetectSpeechuifigurewriteDigitalPin
📊 Expected Output & Metrics: Real-time streaming audio oscilloscope display, < 150 ms command response latency, and interactive GUI lamp/appliance state toggling.
deviceReader = audioDeviceReader('SampleRate', 16000, 'SamplesPerFrame', 1024);
setup(deviceReader);
disp('Listening for voice commands... (Say "LIGHTS ON", "FAN OFF", "LOCK")');
buffer_size = 16000 * 1.5;
circular_buf = zeros(buffer_size, 1);
for frame = 1:200
audio_frame = deviceReader();
circular_buf = [circular_buf(1025:end); audio_frame];
if max(abs(audio_frame)) > 0.12
mfcc_feat = mfcc(circular_buf, 16000);
end
end
release(deviceReader);
Est. Duration: 1–2 Weeks
Request Custom Project →
11. Speech Emotion Recognition (SER) from Voice Acoustic Prosody
Intermediate
Toolbox: Audio Toolbox, Statistics & Machine Learning
Deliverables: Code .m, Emotion Confusion Matrix
🎯 Problem & Objective: Classify human emotional states (Angry, Happy, Sad, Neutral, Fearful) from speech recordings (e.g., RAVDESS or EMO-DB datasets). Extract comprehensive prosodic features (pitch F0, jitter, shimmer, harmonic-to-noise ratio HNR, MFCCs) and classify with multi-class Error-Correcting Output Codes (ECOC) SVM.
⚙️ Key MATLAB Functions:
fitcecocpitchharmonicRatiomfccpredict
📊 Expected Output & Metrics: Emotion classification accuracy (>86.5%), confusion matrix with precision/recall per emotion class, and prosody pitch contour plots.
[audio_in, fs] = audioread('emotion_sample_angry.wav');
f0 = pitch(audio_in, fs); f0 = f0(~isnan(f0));
hnr = harmonicRatio(audio_in, fs);
coeffs = mfcc(audio_in, fs, 'NumCoeffs', 13);
features = [mean(f0), std(f0), max(f0)-min(f0), mean(hnr), mean(coeffs, 1), std(coeffs, 0, 1)];
Est. Duration: 1–2 Weeks
Request Custom Project →
12. Vocal Tract Formant Modeling & Voice Conversion via LPC Synthesis
Intermediate
Toolbox: Signal Processing Toolbox, Audio Toolbox
Deliverables: Code .m, Resynthesized Audio
🎯 Problem & Objective: Separate speech signals into glottal excitation source and vocal tract all-pole filter using Linear Predictive Coding (LPC). Transform acoustic properties (formant scaling and pitch period shifting) to convert a source speaker's voice to sound like a target speaker or achieve voice anonymization.
⚙️ Key MATLAB Functions:
lpcfilterfreqzrootsresample
📊 Expected Output & Metrics: Vocal tract pole-zero constellation plots, LPC spectral envelope overlays, converted synthetic speech audio, and spectral distortion (SD < 2.0 dB).
[x, fs] = audioread('source_speaker.wav');
frame = x(1000:1000+round(0.03*fs)-1) .* hamming(round(0.03*fs));
lpc_order = 12;
a = lpc(frame, lpc_order);
res = filter(a, 1, frame);
r = roots(a);
% Scale formant pole angles (frequencies) by factor 1.15
r_modified = abs(r) .* exp(1j * angle(r) * 1.15);
a_modified = poly(r_modified);
frame_converted = filter(1, real(a_modified), res);
figure; [H, f] = freqz(1, a, 512, fs); [H_mod, ~] = freqz(1, real(a_modified), 512, fs);
plot(f, 20*log10(abs(H)), 'b', f, 20*log10(abs(H_mod)), 'r--', 'LineWidth', 1.5);
legend('Original Vocal Tract', 'Shifted Vocal Tract'); xlabel('Frequency (Hz)'); ylabel('Gain (dB)');
Est. Duration: 1–2 Weeks
Request Custom Project →