Skip to content
No description or website provided.
MATLAB
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images
.DS_Store
.gitignore
.gitignore.pages
FeatureSpectralPitchChroma.m
Final Report - Kamath, del Rosario.pdf
GUI_1.png
GUI_2.png
GUI_3.png
Interim Report - Kamath, del Rosario.pdf
LPC_Vocoder.fig
LPC_Vocoder.m
LPC_Vocoder_Interim.m
LPC_Vocoder_Interim_app.mlapp
README.md
bernie_mike_14700.wav
eec201_final_project.m
excitation_generator.m
excitation_normalizer.m
lpc.m
lpc_analysis.m
lpc_autocor.m
lpc_test.m
lpc_test2.m
lpc_wrapper.m
med_filt.m
medf.m
normalize_audio.m
pitch_detect_candidates.m
pitch_detector.m
pitch_est_autocorr.m
pitch_est_method_2.m
pitch_range.m
pitch_smooth.m
pitch_via_auto.m
recorded_audio.wav
resample_audio.m
synthesize_audio.m

README.md

Presentation

Link to final presentation

Final Report

Link to Final Report

Background

Repository for EEC 201 Winter 2019 Final Project B. The goal is to design and implement an LPC vocoder and synthesizer in Matlab with a GUI.

Team

  • Abhinav Kamath - agkamath(at)ucdavis.edu
  • Mason del Rosario - mdelrosa(at)ucdavis.edu

Methods

Analysis: Autocorrelation Method

For a given windowed portion of a speech sample, the sample can be modeled as an LTI system excited by a periodic impulse train.

sample_eq

Thus, the main goal in analyzing speech is to determine the transfer function of the LTI system for each windowed sample. The discrete-time transfer function can be modeled as an all-pole IIR filter with the general form seen below.

all_pole

The autocorrelation method fixes the coefficients of the all-pole transfer function's denominator by implementing the the following equation:

autocor_analysis

The relevant code which performs this analysis can be found in lpc_analysis.m.

Synthesis: Excitation Pulse Train

Given the all-pole transfer function above, the main goal in synthesizing an approximation of the original speech sample is to determine the instantaneous pitch of the excitation pulse train. In this work, we take two approaches to estimating pitch: the cepstrum-based method and the autocorrelation method.

Method #1: Cepstrum Pitch Detection

Taking the cepstrum of a sequence allows for determining the period of fundamentals in the sequence. The cepstrum is defined below:

all_pole

The relevant code which performs the cepstrum-based pitch detection can be found in pitch_detect_candidates.m.

Method #2: Autocorrelation Pitch Detection

The autocorrelation is computed frame-by-frame. For the ACF of a frame, the number of samples between the center peak and the next highest peak is its pitch-period estimate. In order to find the second peak, the central peak is suppressed, as are all negative autocorrelation values. The fundamental-frequency estimate or the pitch estimate is simply the sampling frequency of the audio signal divided by the pitch-period estimate.

autocor_analysis

Results

Comparison between original audio signal, cepstrum-based estimate, and autocorrelation-based estimate.

Image of the LPC Synthesizer GUI.

You can’t perform that action at this time.