shithub: opus

Download patch

ref: 6b279094aa81706474f7e397b803183c9fd28f43
parent: b5ff531bf0ec3576383d420d1ae6cca31f0612b0
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Tue Mar 12 07:56:34 EDT 2019

decrease resolution of C0 to fit 7 bits, add one bit to mid VQ

--- a/dnn/dump_data.c
+++ b/dnn/dump_data.c
@@ -712,11 +712,12 @@
   RNN_COPY(&st->xc[1][0], &st->xc[9][0], PITCH_MAX_PERIOD);
   if (quantize) {
     //printf("%f\n", st->features[3][0]);
-    c0_id = (int)floor(.5 + st->features[3][0]*5);
-    st->features[3][0] = c0_id/5.;
+    c0_id = (int)floor(.5 + st->features[3][0]*4);
+    c0_id = IMAX(-64, IMIN(63, c0_id));
+    st->features[3][0] = c0_id/4.;
     quantize_3stage_mbest(&st->features[3][1], vq_end);
     /*perform_interp_relaxation(st->features, vq_mem);*/
-    quantize_diff(&st->features[1][0], vq_mem, &st->features[3][0], ceps_codebook_diff4, 11, 1, &vq_mid);
+    quantize_diff(&st->features[1][0], vq_mem, &st->features[3][0], ceps_codebook_diff4, 12, 1, &vq_mid);
     interp_id = double_interp_search(st->features, vq_mem);
     perform_double_interp(st->features, vq_mem, interp_id);
   }
@@ -723,7 +724,7 @@
   //printf("\n");
   RNN_COPY(vq_mem, &st->features[3][0], NB_BANDS);
   if (encode) {
-    fprintf(ffeat, "%d %d %d %d %d %d %d %d %d\n", c0_id, main_pitch, voiced ? modulation : -4, corr_id, vq_end[0], vq_end[1], vq_end[2], vq_mid, interp_id);
+    fprintf(ffeat, "%d %d %d %d %d %d %d %d %d\n", c0_id+64, main_pitch, voiced ? modulation+4 : 0, corr_id, vq_end[0], vq_end[1], vq_end[2], vq_mid, interp_id);
   } else {
     for (i=0;i<4;i++) {
       fwrite(st->features[i], sizeof(float), NB_FEATURES, ffeat);
@@ -740,6 +741,7 @@
   float features[4][NB_FEATURES];
   for (i=0;i<4;i++) RNN_CLEAR(&features[i][0], NB_FEATURES);
 
+  modulation -= 4;
   if (modulation==-4) {
     voiced = 0;
     modulation = 0;
@@ -756,14 +758,14 @@
     features[sub][2*NB_BANDS + 1] = frame_corr-.5;
   }
   
-  features[3][0] = c0_id/5.;
+  features[3][0] = (c0_id-64)/4.;
   for (i=0;i<NB_BANDS_1;i++) {
     features[3][i+1] = ceps_codebook1[vq_end[0]*NB_BANDS_1 + i] + ceps_codebook2[vq_end[1]*NB_BANDS_1 + i] + ceps_codebook3[vq_end[2]*NB_BANDS_1 + i];
   }
 
   float sign = 1;
-  if (vq_mid >= 2048) {
-    vq_mid -= 2048;
+  if (vq_mid >= 4096) {
+    vq_mid -= 4096;
     sign = -1;
   }
   for (i=0;i<NB_BANDS;i++) {
--