Skip to content

mdelrosa/eec201_final_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Releases

No releases published

Packages

No packages published

Languages