From 69b7ccda338710443fecc2c7800a1a91dab67100 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Tue, 8 Sep 2009 21:53:28 +0000 Subject: [PATCH] fixed buffer update bug in nlp git-svn-id: https://svn.code.sf.net/p/freetel/code@47 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2/README.txt | 8 ++++---- codec2/raw/mmt1.raw | Bin 0 -> 64000 bytes codec2/src/dump.c | 43 +++++++++++++++++++++++++++++++++++++++++ codec2/src/dump.h | 5 +++++ codec2/src/nlp.c | 13 +++++++------ codec2/src/nlp.h | 3 +-- codec2/unittest/tnlp.c | 3 ++- 7 files changed, 62 insertions(+), 13 deletions(-) create mode 100644 codec2/raw/mmt1.raw diff --git a/codec2/README.txt b/codec2/README.txt index 4585ead6..7a86c5df 100644 --- a/codec2/README.txt +++ b/codec2/README.txt @@ -31,7 +31,7 @@ Status 3. Phase model developed that uses 0 bits for phase and 1 bit/frame for voiced/unvoiced decision. -[[source code]] +[[source]] The Source Code --------------- @@ -270,14 +270,14 @@ References ---------- [1] http://perens.com/[Bruce Perens] introducing the - http://codec2.org/[codec2 project concept]: + http://codec2.org/[codec2 project concept] [2] David's PhD Thesis, http://www.itr.unisa.edu.au/~steven/thesis/dgr.pdf["Techniques for - Harmonic Sinusoidal Coding"], used for baseline algorithm: + Harmonic Sinusoidal Coding"], used for baseline algorithm [3] http://www.rowetel.com/blog/?p=128[Open Source Low rate Speech - Codec Part 1 - Introduction:] + Codec Part 1 - Introduction] [4] http://www.rowetel.com/blog/?p=130[Open Source Low rate Speech Codec Part 1 - Spectral Magnitudes] diff --git a/codec2/raw/mmt1.raw b/codec2/raw/mmt1.raw new file mode 100644 index 0000000000000000000000000000000000000000..40638a5a8e1772412470c6ade237bd88c7b493e4 GIT binary patch literal 64000 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�LPd$bHx1lZd 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 literal 0 HcmV?d00001 diff --git a/codec2/src/dump.c b/codec2/src/dump.c index 1295074b..02a354d5 100644 --- a/codec2/src/dump.c +++ b/codec2/src/dump.c @@ -43,6 +43,8 @@ static FILE *fphase = NULL; static FILE *fphase_ = NULL; static FILE *ffw = NULL; static FILE *fe = NULL; +static FILE *fsq = NULL; +static FILE *fdec = NULL; static char prefix[MAX_STR]; @@ -74,6 +76,10 @@ void dump_off(){ fclose(ffw); if (fe != NULL) fclose(fe); + if (fsq != NULL) + fclose(fsq); + if (fdec != NULL) + fclose(fdec); } void dump_Sn(float Sn[]) { @@ -288,4 +294,41 @@ void dump_e(float e_hz[]) { fprintf(fe,"\n"); } +void dump_sq(float sq[]) { + int i; + char s[MAX_STR]; + + if (!dumpon) return; + + if (fsq == NULL) { + sprintf(s,"%s_sq.txt", prefix); + fsq = fopen(s, "wt"); + assert(fsq != NULL); + } + + for(i=0; i #include +#include #include #include "nlp.h" #include "dump.h" @@ -122,7 +123,7 @@ char *argv[]; dft_speech(); dump_Sn(Sn); dump_Sw(Sw); - nlp(Sn,N,M,N-NLP_NTAP/2,PITCH_MIN,PITCH_MAX,&pitch,Sw); + nlp(Sn,N,M,PITCH_MIN,PITCH_MAX,&pitch,Sw); fprintf(fout,"%f\n",pitch); -- 2.25.1