tested lspvq and lspd across 5 utterances with OK results, except for hts2a which...
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 1 Nov 2011 02:24:27 +0000 (02:24 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 1 Nov 2011 02:24:27 +0000 (02:24 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@296 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/c2sim.c
codec2-dev/src/codebook/dlsp1.txt
codec2-dev/src/codebook/dlsp2.txt
codec2-dev/src/quantise.c

index f6df412c06cca18f32aae8b51d81c18683accfba..13bf92abbdb39ae731d2215968cd8274ecfad10f 100644 (file)
@@ -333,7 +333,9 @@ int main(int argc, char *argv[])
        }
 
        if (lspd) {
+           locate_lsps_jnd_steps(lsps, LPC_ORD);
            lspd_quantise(lsps, lsps_, LPC_ORD);
+           locate_lsps_jnd_steps(lsps_, LPC_ORD);
            lsp_to_lpc(lsps_, ak, LPC_ORD);
        }
 
index d126be7714511d85cdd63897d6f7f2d0b9450020..55d5fd2f1a6ecd25d46ec5675f499123372bdbea 100644 (file)
@@ -1,7 +1,8 @@
 1 16
-225
+100
+150
+200
 250
-275
 300
 325
 350
@@ -14,4 +15,4 @@
 525
 550
 575
-600
+
index 916270326ebf9b118c43557fdaaf450d1bd248fc..75d6700ea5bf4807a8fe3645fe73f2d3dccf3e60 100644 (file)
@@ -1,6 +1,10 @@
-1 4
-25
+1 8
 50
+75
 100
-200
-400
+150
+225
+350
+450
+575
+
index c3cb7092852f835fff6bfeb1e512f64e86e9de9f..0b5445e07794bee7c57923ec08aaa2ceec17c9b6 100644 (file)
@@ -142,6 +142,7 @@ void lspd_quantise(
     float se;
     int   indexes[LPC_MAX];
     float diff1,diff2;
+    float centre_hz, bw_hz, bwe;
 
     for(i=0; i<LPC_ORD; i++) {
        wt[i] = 1.0;
@@ -157,6 +158,7 @@ void lspd_quantise(
     for(i=1; i<order; i++)
        dlsp[i] = lsp_hz[i] - lsp_hz[i-1];
 
+
     /* simple uniform scalar quantisers for LSP differences 1..4 */
 
     wt[0] = 1.0;
@@ -178,62 +180,34 @@ void lspd_quantise(
            lsp__hz[0] = dlsp_[0];
     }
 
-#ifdef VQ
-    /* VQ LSP differences 5..10 in log domain */
-
-    #define WGHT
+#define WGHT
 #ifdef WGHT
     for(i=4; i<9; i++) {
-       diff1 = lsp[i]-lsp[i-1];
-       if (diff1 < (4000.0/PI)*200) diff1 = (PI/4000.0)*200;
-       if (diff2 < (4000.0/PI)*200) diff2 = (PI/4000.0)*200;
-       wt[i] = 2.0/diff1 + 1.0/diff2;
+       wt[i] = 1.0/(lsp[i]-lsp[i-1]) + 1.0/(lsp[i+1]-lsp[i]);
        //printf("wt[%d] = %f\n", i, wt[i]);
     }
-    wt[9] = 1.0/diff1;
+    wt[9] = 1.0/(lsp[i]-lsp[i-1]);
 #endif
 
+    /* VQ LSPs 5,6,7,8,9,10 */
+
     ncb = 4;
     nlsp = 4;
     k = lsp_cbd[ncb].k;
     m = lsp_cbd[ncb].m;
     cb = lsp_cbd[ncb].cb;
-    for(i=4; i<order; i++) {
-       lsplog[i] = log10(lsp[i]);
-       //printf("%f ", lsp[i]);
-    }
-    //printf("\n");
     index = quantise(cb, &lsp[nlsp], &wt[nlsp], k, m, &se);
-    /*
-    for(i=0; i<6; i++)
-       printf("%f ", cb[i]);
-    printf("\n");
-    printf("index = %d\n", index);
-    */
-    for(i=4; i<order; i++) {
-       //lsplog_[i] = pow(10.0, cb[index*k+i-nlsp]);
-       //printf("%f ", cb[index*k+i-nlsp]);
-       //lsp__hz[i] = (4000.0/PI)*lsplog_[i];
-       //lsp__hz[i] = lsp_hz[i];
-       lsp__hz[i] = (4000.0/PI)*cb[index*k+i-nlsp];
-    }
-    if ((lsp__hz[4] - lsp__hz[3]) < 100.0) 
-       lsp__hz[4] = lsp__hz[3] + 100.0;
-    /*
-    printf("\n");
-    for(i=4; i<order; i++)
-       printf("%f ", lsp__hz[i]);
-    printf("\n\n");
-    */
-
-    /*
-    for(; i<order; i++)
-       lsp__hz[i] = lsp_hz[i];
-    */
+    lsp_[nlsp] = cb[index*k];
+    lsp_[nlsp+1] = cb[index*k+1];
+    lsp_[nlsp+2] = cb[index*k+2];
+    lsp_[nlsp+3] = cb[index*k+3];
+    lsp_[nlsp+4] = cb[index*k+4];
+    lsp_[nlsp+5] = cb[index*k+5];
+    lsp_[nlsp+6] = cb[index*k+6];
 
-    /* convert back to radians */
+   /* convert back to radians */
 
-    for(i=0; i<order; i++)
+    for(i=0; i<4; i++)
        lsp_[i] = (PI/4000.0)*lsp__hz[i];
 }
 
@@ -280,7 +254,7 @@ void lspvq_quantise(
        wt[i] = 1.0/(lsp[i]-lsp[i-1]) + 1.0/(lsp[i+1]-lsp[i]);
        //printf("wt[%d] = %f\n", i, wt[i]);
     }
-    wt[9] = 2.0/(lsp[i]-lsp[i-1]);
+    wt[9] = 1.0/(lsp[i]-lsp[i-1]);
 #endif
 
     /* VQ LSPs 5,6,7,8,9,10 */