playing with JNDs in vqtrain,c, added log capability to genlsp for lspds
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 31 Oct 2011 03:49:14 +0000 (03:49 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 31 Oct 2011 03:49:14 +0000 (03:49 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@291 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/unittest/Makefile.am
codec2-dev/unittest/Makefile.in
codec2-dev/unittest/extract.c
codec2-dev/unittest/genlsp.c
codec2-dev/unittest/vqtrain.c

index 817e6a7891a62977474d90dcab5ceda48f67dd35..c256e8d7040778670b561e9a089cce473074ba1c 100644 (file)
@@ -26,17 +26,29 @@ tnlp_SOURCES = tnlp.c ../src/sine.c ../src/nlp.c ../src/fft.c ../src/kiss_fft.c
 tnlp_LDADD = $(lib_LTLIBRARIES) 
 tnlp_LDFLAGS = $(LIBS)
 
-tinterp_SOURCES = tinterp.c ../src/sine.c ../src/fft.c ../src/kiss_fft.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/codebookdvq.c ../src/dump.c
+tinterp_SOURCES = tinterp.c ../src/sine.c ../src/fft.c ../src/kiss_fft.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c ../src/dump.c
 tinterp_LDADD = $(lib_LTLIBRARIES) 
 tinterp_LDFLAGS = $(LIBS)
 
-tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c ../src/codebook.c ../src/codebookd.c ../src/codebookdvq.c 
+tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c 
 tquant_LDADD = $(lib_LTLIBRARIES) 
 tquant_LDFLAGS = $(LIBS)
 
 tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c \
 ../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
-../src/codebook.c ../src/codebookd.c ../src/codebookdvq.c ../src/pack.c
+../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c ../src/pack.c
 tcodec2_LDADD = $(lib_LTLIBRARIES) 
 tcodec2_LDFLAGS = $(LIBS)
 
+genbands_SOURCES = genbands.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c \
+../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
+../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/pack.c
+genbands_LDADD = $(lib_LTLIBRARIES) 
+genbands_LDFLAGS = $(LIBS)
+
+vq_clip_test_SOURCES = vq_clip_test.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c \
+../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
+../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c ../src/pack.c
+vq_clip_test_LDADD = $(lib_LTLIBRARIES) 
+vq_clip_test_LDFLAGS = $(LIBS)
+
index 21d19fea21038fccfbb7510b160ae135782d853e..f78295003438bbcc836f9ad4239c1addf257d311 100644 (file)
@@ -64,13 +64,14 @@ am_tcodec2_OBJECTS = tcodec2.$(OBJEXT) quantise.$(OBJEXT) \
        kiss_fft.$(OBJEXT) codec2.$(OBJEXT) sine.$(OBJEXT) \
        nlp.$(OBJEXT) postfilter.$(OBJEXT) phase.$(OBJEXT) \
        interp.$(OBJEXT) codebook.$(OBJEXT) codebookd.$(OBJEXT) \
-       codebookdvq.$(OBJEXT) pack.$(OBJEXT)
+       codebookvq.$(OBJEXT) codebookres.$(OBJEXT) pack.$(OBJEXT)
 tcodec2_OBJECTS = $(am_tcodec2_OBJECTS)
 tcodec2_DEPENDENCIES =
 am_tinterp_OBJECTS = tinterp.$(OBJEXT) sine.$(OBJEXT) fft.$(OBJEXT) \
        kiss_fft.$(OBJEXT) interp.$(OBJEXT) lpc.$(OBJEXT) \
        lsp.$(OBJEXT) quantise.$(OBJEXT) codebook.$(OBJEXT) \
-       codebookd.$(OBJEXT) codebookdvq.$(OBJEXT) dump.$(OBJEXT)
+       codebookd.$(OBJEXT) codebookvq.$(OBJEXT) codebookres.$(OBJEXT) \
+       dump.$(OBJEXT)
 tinterp_OBJECTS = $(am_tinterp_OBJECTS)
 tinterp_DEPENDENCIES =
 am_tnlp_OBJECTS = tnlp.$(OBJEXT) sine.$(OBJEXT) nlp.$(OBJEXT) \
@@ -79,7 +80,8 @@ tnlp_OBJECTS = $(am_tnlp_OBJECTS)
 tnlp_DEPENDENCIES =
 am_tquant_OBJECTS = tquant.$(OBJEXT) quantise.$(OBJEXT) lpc.$(OBJEXT) \
        lsp.$(OBJEXT) dump.$(OBJEXT) fft.$(OBJEXT) kiss_fft.$(OBJEXT) \
-       codebook.$(OBJEXT) codebookd.$(OBJEXT) codebookdvq.$(OBJEXT)
+       codebook.$(OBJEXT) codebookd.$(OBJEXT) codebookvq.$(OBJEXT) \
+       codebookres.$(OBJEXT)
 tquant_OBJECTS = $(am_tquant_OBJECTS)
 tquant_DEPENDENCIES =
 am_vqtrain_OBJECTS = vqtrain.$(OBJEXT)
@@ -228,18 +230,30 @@ vqtrain_LDFLAGS = $(LIBS)
 tnlp_SOURCES = tnlp.c ../src/sine.c ../src/nlp.c ../src/fft.c ../src/kiss_fft.c ../src/dump.c
 tnlp_LDADD = $(lib_LTLIBRARIES) 
 tnlp_LDFLAGS = $(LIBS)
-tinterp_SOURCES = tinterp.c ../src/sine.c ../src/fft.c ../src/kiss_fft.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/codebookdvq.c ../src/dump.c
+tinterp_SOURCES = tinterp.c ../src/sine.c ../src/fft.c ../src/kiss_fft.c ../src/interp.c ../src/lpc.c ../src/lsp.c ../src/quantise.c ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c ../src/dump.c
 tinterp_LDADD = $(lib_LTLIBRARIES) 
 tinterp_LDFLAGS = $(LIBS)
-tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c ../src/codebook.c ../src/codebookd.c ../src/codebookdvq.c 
+tquant_SOURCES = tquant.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c ../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c 
 tquant_LDADD = $(lib_LTLIBRARIES) 
 tquant_LDFLAGS = $(LIBS)
 tcodec2_SOURCES = tcodec2.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c \
 ../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
-../src/codebook.c ../src/codebookd.c ../src/codebookdvq.c ../src/pack.c
+../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c ../src/pack.c
 
 tcodec2_LDADD = $(lib_LTLIBRARIES) 
 tcodec2_LDFLAGS = $(LIBS)
+genbands_SOURCES = genbands.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c \
+../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
+../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/pack.c
+
+genbands_LDADD = $(lib_LTLIBRARIES) 
+genbands_LDFLAGS = $(LIBS)
+vq_clip_test_SOURCES = vq_clip_test.c ../src/quantise.c ../src/lpc.c ../src/lsp.c ../src/dump.c ../src/fft.c ../src/kiss_fft.c \
+../src/codec2.c ../src/sine.c ../src/nlp.c ../src/postfilter.c ../src/phase.c ../src/interp.c \
+../src/codebook.c ../src/codebookd.c ../src/codebookvq.c ../src/codebookres.c ../src/pack.c
+
+vq_clip_test_LDADD = $(lib_LTLIBRARIES) 
+vq_clip_test_LDFLAGS = $(LIBS)
 all: all-am
 
 .SUFFIXES:
@@ -334,7 +348,8 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebook.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookdvq.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookres.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebookvq.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codec2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract.Po@am__quote@
@@ -574,19 +589,33 @@ codebookd.obj: ../src/codebookd.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookd.obj `if test -f '../src/codebookd.c'; then $(CYGPATH_W) '../src/codebookd.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookd.c'; fi`
 
-codebookdvq.o: ../src/codebookdvq.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookdvq.o -MD -MP -MF "$(DEPDIR)/codebookdvq.Tpo" -c -o codebookdvq.o `test -f '../src/codebookdvq.c' || echo '$(srcdir)/'`../src/codebookdvq.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookdvq.Tpo" "$(DEPDIR)/codebookdvq.Po"; else rm -f "$(DEPDIR)/codebookdvq.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookdvq.c' object='codebookdvq.o' libtool=no @AMDEPBACKSLASH@
+codebookvq.o: ../src/codebookvq.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookvq.o -MD -MP -MF "$(DEPDIR)/codebookvq.Tpo" -c -o codebookvq.o `test -f '../src/codebookvq.c' || echo '$(srcdir)/'`../src/codebookvq.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookvq.Tpo" "$(DEPDIR)/codebookvq.Po"; else rm -f "$(DEPDIR)/codebookvq.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookvq.c' object='codebookvq.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookvq.o `test -f '../src/codebookvq.c' || echo '$(srcdir)/'`../src/codebookvq.c
+
+codebookvq.obj: ../src/codebookvq.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookvq.obj -MD -MP -MF "$(DEPDIR)/codebookvq.Tpo" -c -o codebookvq.obj `if test -f '../src/codebookvq.c'; then $(CYGPATH_W) '../src/codebookvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookvq.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookvq.Tpo" "$(DEPDIR)/codebookvq.Po"; else rm -f "$(DEPDIR)/codebookvq.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookvq.c' object='codebookvq.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookvq.obj `if test -f '../src/codebookvq.c'; then $(CYGPATH_W) '../src/codebookvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookvq.c'; fi`
+
+codebookres.o: ../src/codebookres.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookres.o -MD -MP -MF "$(DEPDIR)/codebookres.Tpo" -c -o codebookres.o `test -f '../src/codebookres.c' || echo '$(srcdir)/'`../src/codebookres.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookres.Tpo" "$(DEPDIR)/codebookres.Po"; else rm -f "$(DEPDIR)/codebookres.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookres.c' object='codebookres.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookdvq.o `test -f '../src/codebookdvq.c' || echo '$(srcdir)/'`../src/codebookdvq.c
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookres.o `test -f '../src/codebookres.c' || echo '$(srcdir)/'`../src/codebookres.c
 
-codebookdvq.obj: ../src/codebookdvq.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookdvq.obj -MD -MP -MF "$(DEPDIR)/codebookdvq.Tpo" -c -o codebookdvq.obj `if test -f '../src/codebookdvq.c'; then $(CYGPATH_W) '../src/codebookdvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookdvq.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookdvq.Tpo" "$(DEPDIR)/codebookdvq.Po"; else rm -f "$(DEPDIR)/codebookdvq.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookdvq.c' object='codebookdvq.obj' libtool=no @AMDEPBACKSLASH@
+codebookres.obj: ../src/codebookres.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT codebookres.obj -MD -MP -MF "$(DEPDIR)/codebookres.Tpo" -c -o codebookres.obj `if test -f '../src/codebookres.c'; then $(CYGPATH_W) '../src/codebookres.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookres.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/codebookres.Tpo" "$(DEPDIR)/codebookres.Po"; else rm -f "$(DEPDIR)/codebookres.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='../src/codebookres.c' object='codebookres.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookdvq.obj `if test -f '../src/codebookdvq.c'; then $(CYGPATH_W) '../src/codebookdvq.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookdvq.c'; fi`
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o codebookres.obj `if test -f '../src/codebookres.c'; then $(CYGPATH_W) '../src/codebookres.c'; else $(CYGPATH_W) '$(srcdir)/../src/codebookres.c'; fi`
 
 pack.o: ../src/pack.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pack.o -MD -MP -MF "$(DEPDIR)/pack.Tpo" -c -o pack.o `test -f '../src/pack.c' || echo '$(srcdir)/'`../src/pack.c; \
index 5833cd05acbe61888555ec6a2b756b050969de0b..e17cc5b9ba13908821c0fa1d27498911cca86216 100644 (file)
@@ -44,7 +44,7 @@ int main(int argc, char *argv[]) {
     long   lines;      /* lines read so far                            */
 
     if (argc != 5) {
-       printf("usage: extract TextFile FloatFile start end\n");
+       printf("usage: extract TextFile FloatFile start(1 .. 10) end(1 .. 10)\n");
        exit(0);
     }
 
index 026205e2b814f8751ebf22e1c1d64ea45d247073..35417d9c990acb99357a238779e03301499255d9 100644 (file)
@@ -61,17 +61,19 @@ int main(int argc, char *argv[]) {
     float  ak[P+1];    /* LPCs for current frame                       */
     float  lsp[P];     /* LSPs for current frame                       */
     float  E;          /* frame energy                                 */
+    long   f;          /* number of frames                             */
     long   af;         /* number frames with "active" speech           */
     float  Eres;       /* LPC residual energy                          */
     int    i;
     int    roots;
     int    unstables;
-    int    lspd;
+    int    lspd, log;
+    float  diff;
 
     /* Initialise ------------------------------------------------------*/
 
     if (argc < 3) {
-       printf("usage: gentest RawFile LSPTextFile [--lspd]\n");
+       printf("usage: gentest RawFile LSPTextFile [--lspd] [--log]\n");
        exit(0);
     }
 
@@ -90,13 +92,14 @@ int main(int argc, char *argv[]) {
     }
 
     lspd = switch_present("--lspd", argc, argv);
+    log = switch_present("--log", argc, argv);
 
     for(i=0; i<NW; i++)
        Sn[i] = 0.0;
 
     /* Read SPC file, and determine aks[] for each frame ------------------*/
 
-    af = 0;
+    f = af = 0;
     unstables = 0;
     while(fread(buf,sizeof(short),N,fspc) == N) {
 
@@ -116,6 +119,7 @@ int main(int argc, char *argv[]) {
 
        /* If energy high enough, include this frame */
 
+       f++;
        if (E > THRESH) {
            af++;
            printf("Active Frame: %ld  unstables: %d\n",af, unstables);
@@ -124,10 +128,22 @@ int main(int argc, char *argv[]) {
            roots = lpc_to_lsp(ak, P , lsp, 5, LSP_DELTA1);
            if (roots == P) {
                if (lspd) {
-                   fprintf(flsp,"%f ",lsp[0]);
-                   for(i=1; i<P; i++)
-                       fprintf(flsp,"%f ",lsp[i]-lsp[i-1]);
+                   if (log) {
+                       fprintf(flsp,"%f ",log10(lsp[0]));
+                       for(i=1; i<P; i++) {
+                           diff = lsp[i]-lsp[i-1];
+                           if (diff < 25.0) diff = 25.0;
+                           fprintf(flsp,"%f ",log10(diff));
+                       }
+                   } 
+                   else {
+                       fprintf(flsp,"%f ",lsp[0]);
+                       for(i=1; i<P; i++)
+                           fprintf(flsp,"%f ",lsp[i]-lsp[i-1]);
+                   }
+
                    fprintf(flsp,"\n");
+                   
                }
                else {
                    for(i=0; i<P; i++)
@@ -140,6 +156,7 @@ int main(int argc, char *argv[]) {
        }
     }
 
+    printf("%3.2f %% active frames\n", 100.0*(float)af/f);
     fclose(fspc);
     fclose(flsp);
 
index 306249c8150af9d6629190dc74cedd7ddeabd8ac..9ca7b03dc6177c420b2595ab6954e4b0b37751c8 100644 (file)
@@ -44,7 +44,7 @@
 
 \*-----------------------------------------------------------------------*/
 
-#define        DELTAQ  0.001           /* quiting distortion                   */
+#define        DELTAQ  0.0           /* quiting distortion                   */
 #define        MAX_STR 80              /* maximum string length                */
 
 /*-----------------------------------------------------------------------*\
@@ -57,8 +57,11 @@ void zero(float v[], int k);
 void acc(float v1[], float v2[], int k);
 void norm(float v[], int k, long n);
 long quantise(float cb[], float vec[], int k, int m, float *se);
+void jnd(float x[], int k);
 
-/*-----------------------------------------------------------------------*\
+float pi;
+
+/*-----------------------------------------------------------------------* \
 
                                MAIN
 
@@ -79,10 +82,12 @@ int main(int argc, char *argv[]) {
     FILE   *ftrain;    /* file containing training set                 */
     FILE   *fvq;       /* file containing vector quantiser             */
 
+    pi = 4.0*atan(1.0);
+
     /* Interpret command line arguments */
 
     if (argc != 5)     {
-       printf("usage: vqtrain TrainFile K M VQFile\n");
+       printf("usage: vqtrain TrainFile K(dimension) M(codebook size) VQFile\n");
        exit(0);
     }
 
@@ -98,7 +103,7 @@ int main(int argc, char *argv[]) {
 
     k = atol(argv[2]);
     m = atol(argv[3]);
-    printf("dimension K=%ld  number of entries M=%ld\n", k,m);
+    printf("dimension K=%ld  number of entries M=%ld\n", k, m);
     vec = (float*)malloc(sizeof(float)*k);
     cb = (float*)malloc(sizeof(float)*k*m);
     cent = (float*)malloc(sizeof(float)*k*m);
@@ -150,7 +155,7 @@ int main(int argc, char *argv[]) {
        printf("\r  Iteration %ld, Dn = %f, Delta = %e\n", j, Dn, delta);
        j++;
 
-       /* determine new codebook from centriods */
+       /* determine new codebook from centroids */
 
        if (delta > DELTAQ)
            for(i=0; i<m; i++) {
@@ -162,6 +167,30 @@ int main(int argc, char *argv[]) {
 
     } while (delta > DELTAQ);
 
+    /* check % within JND */
+
+    {
+       long jnd;
+        int  cur_jnd;
+       float diff, jnd_thresh = 50.0*pi/4000.0;
+
+       jnd = 0;
+       se = 0.0;
+       rewind(ftrain);
+       for(i=0; i<J; i++) {
+           fread(vec, sizeof(float), k, ftrain);
+           ind = quantise(cb, vec, k, m, &se);
+           cur_jnd = 0;
+           for(j=0; j<k; j++) {
+               diff = cb[k*ind+j] - vec[j];
+               if (fabs(diff) > jnd_thresh)
+                   cur_jnd = 1;
+               if (cur_jnd) jnd++;
+           }
+       }
+       printf("jnd %3.2f %%\n", 100.0*(float)jnd/(J*k));
+    }
+
     /* save codebook to disk */
 
     fvq = fopen(argv[4],"wt");
@@ -170,7 +199,7 @@ int main(int argc, char *argv[]) {
        exit(1);
     }
 
-    fprintf(fvq,"%d %d\n",k,m);
+    fprintf(fvq,"%ld %ld\n",k,m);
     for(j=0; j<m; j++) {
        for(i=0; i<k; i++)
            fprintf(fvq,"%f  ",cb[j*k+i]);
@@ -277,13 +306,16 @@ long quantise(float cb[], float vec[], int k, int m, float *se)
    float   beste;      /* best error so far            */
    long           j;
    int     i;
+   float   diff;
 
    besti = 0;
    beste = 1E32;
    for(j=0; j<m; j++) {
        e = 0.0;
-       for(i=0; i<k; i++)
-           e += pow(cb[j*k+i]-vec[i],2.0);
+       for(i=0; i<k; i++) {
+           diff = cb[j*k+i]-vec[i];
+           e += pow(diff,2.0);
+       }
        if (e < beste) {
            beste = e;
            besti = j;
@@ -295,3 +327,18 @@ long quantise(float cb[], float vec[], int k, int m, float *se)
    return(besti);
 }
 
+void jnd(float x[], int k) {
+    float lsp_hz, step = 100.0;
+    int   i;
+
+    for(i=0; i<k; i++) {
+       lsp_hz = x[i]*4000.0/pi;
+       lsp_hz = floor(lsp_hz/step + 0.5)*step;
+       x[i] = lsp_hz*pi/4000.0;
+       if (i) {
+           if (x[i] == x[i-1])
+               x[i] += step*pi/4000.0;
+
+       }
+    }
+}