From 4ff13de68a3a7ba205a70685e257e14951f34448 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 10 Nov 2010 06:09:01 +0000 Subject: [PATCH] LSP interpolation to get from 10ms to 20ms frames investigated, does a better job for background noise git-svn-id: https://svn.code.sf.net/p/freetel/code@215 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2/src/c2sim.c | 45 ++++++++++++++++------------- codec2/src/interp.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ codec2/src/interp.h | 4 +++ 3 files changed, 98 insertions(+), 20 deletions(-) diff --git a/codec2/src/c2sim.c b/codec2/src/c2sim.c index a89e823b..42a665c2 100644 --- a/codec2/src/c2sim.c +++ b/codec2/src/c2sim.c @@ -117,6 +117,11 @@ int main(int argc, char *argv[]) MODEL prev_model, interp_model; int decimate; + float lsps[LPC_ORD]; + float prev_lsps[LPC_ORD]; + float e, prev_e; + int lpc_correction; + float ak_interp[LPC_MAX]; void *nlp_states; @@ -136,6 +141,10 @@ int main(int argc, char *argv[]) for(i=1; i<=MAX_AMP; i++) { ex_phase[i] = 0.0; } + for(i=0; ivoiced) { + if (prev->voiced && next->voiced) + interp->Wo = (prev->Wo + next->Wo)/2.0; + if (!prev->voiced && next->voiced) + interp->Wo = next->Wo; + if (prev->voiced && !next->voiced) + interp->Wo = prev->Wo; + } + else { + interp->Wo = TWO_PI/P_MAX; + } + interp->L = PI/interp->Wo; + + /* interpolate LSPs */ + + for(i=0; i