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)
+
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) \
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)
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:
@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@
@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; \
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);
}
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);
}
}
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) {
/* If energy high enough, include this frame */
+ f++;
if (E > THRESH) {
af++;
printf("Active Frame: %ld unstables: %d\n",af, unstables);
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++)
}
}
+ printf("%3.2f %% active frames\n", 100.0*(float)af/f);
fclose(fspc);
fclose(flsp);
\*-----------------------------------------------------------------------*/
-#define DELTAQ 0.001 /* quiting distortion */
+#define DELTAQ 0.01 /* quiting distortion */
#define MAX_STR 80 /* maximum string length */
/*-----------------------------------------------------------------------*\
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
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);
}
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);
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++) {
} 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");
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]);
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;
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;
+
+ }
+ }
+}