mirror of https://github.com/drowe67/LPCNet.git
direct or pred at init time
parent
2792e0d7cd
commit
15d4c62b2e
|
|
@ -44,14 +44,6 @@
|
|||
#undef NB_FEATURES
|
||||
#include "lpcnet.h"
|
||||
|
||||
// Two sorts of VQs available
|
||||
extern int pred_num_stages;
|
||||
extern float pred_vq[MAX_STAGES*NB_BANDS*MAX_ENTRIES];
|
||||
extern int pred_m[MAX_STAGES];
|
||||
extern int direct_split_num_stages;
|
||||
extern float direct_split_vq[MAX_STAGES*NB_BANDS*MAX_ENTRIES];
|
||||
extern int direct_split_m[MAX_STAGES];
|
||||
|
||||
void lpcnet_dec(LPCNET_QUANT *q, LPCNetState *net, char *frame, short* pcm)
|
||||
{
|
||||
float in_features[NB_TOTAL_FEATURES];
|
||||
|
|
@ -90,9 +82,6 @@ int main(int argc, char **argv) {
|
|||
int logmag = 0;
|
||||
int direct_split = 0;
|
||||
|
||||
dec = 3; pred = 0.9; mbest_survivors = 5; weight = 1.0/sqrt(NB_BANDS); pitch_bits = 6; num_stages = pred_num_stages;
|
||||
m = pred_m; vq = pred_vq; logmag = 0;
|
||||
|
||||
/* quantiser options */
|
||||
|
||||
static struct option long_options[] = {
|
||||
|
|
@ -132,7 +121,7 @@ int main(int argc, char **argv) {
|
|||
fprintf(stderr, "pred = %f\n", pred);
|
||||
break;
|
||||
case 's':
|
||||
direct_split = 1;
|
||||
direct_split = 1; m = direct_split_m; vq = direct_split_vq; pred = 0.0; logmag = 1; weight = 1.0;
|
||||
fprintf(stderr, "split VQ\n");
|
||||
break;
|
||||
case 'v':
|
||||
|
|
@ -149,15 +138,13 @@ int main(int argc, char **argv) {
|
|||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (direct_split) {
|
||||
m = direct_split_m; vq = direct_split_vq; pred = 0.0; logmag = 1; weight = 1.0;
|
||||
} else {
|
||||
}
|
||||
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(num_stages, m, vq);
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(direct_split);
|
||||
|
||||
// this program allows us to tweak params via command line
|
||||
q->weight = weight; q->pred = pred; q->mbest = mbest_survivors;
|
||||
q->pitch_bits = pitch_bits; q->dec = dec; q->logmag = logmag;
|
||||
q->num_stages = num_stages; q->m = m; q->vq = vq;
|
||||
lpcnet_quant_compute_bits_per_frame(q);
|
||||
|
||||
fprintf(stderr, "dec: %d pred: %3.2f num_stages: %d mbest: %d bits_per_frame: %d frame: %2d ms bit_rate: %5.2f bits/s",
|
||||
|
|
|
|||
|
|
@ -39,14 +39,6 @@
|
|||
#include "lpcnet_dump.h"
|
||||
#include "lpcnet_quant.h"
|
||||
|
||||
// Two sorts of VQs available
|
||||
extern int pred_num_stages;
|
||||
extern float pred_vq[MAX_STAGES*NB_BANDS*MAX_ENTRIES];
|
||||
extern int pred_m[MAX_STAGES];
|
||||
extern int direct_split_num_stages;
|
||||
extern float direct_split_vq[MAX_STAGES*NB_BANDS*MAX_ENTRIES];
|
||||
extern int direct_split_m[MAX_STAGES];
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
FILE *fin, *fout;
|
||||
|
||||
|
|
@ -61,6 +53,7 @@ int main(int argc, char **argv) {
|
|||
int *m = pred_m;
|
||||
float *vq = pred_vq;
|
||||
int logmag = 0;
|
||||
int direct_split = 0;
|
||||
|
||||
/* quantiser options */
|
||||
|
||||
|
|
@ -96,6 +89,7 @@ int main(int argc, char **argv) {
|
|||
fprintf(stderr, "pred = %f\n", pred);
|
||||
break;
|
||||
case 's':
|
||||
direct_split = 1;
|
||||
m = direct_split_m; vq = direct_split_vq; pred = 0.0; logmag = 1; weight = 1.0;
|
||||
fprintf(stderr, "split VQ\n");
|
||||
break;
|
||||
|
|
@ -112,9 +106,9 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
|
||||
LPCNET_DUMP *d = lpcnet_dump_create();
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(num_stages, m, vq);
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(direct_split);
|
||||
q->weight = weight; q->pred = pred; q->mbest = mbest_survivors;
|
||||
q->pitch_bits = pitch_bits; q->dec = dec;
|
||||
q->pitch_bits = pitch_bits; q->dec = dec; q->m = m; q->vq = vq; q->num_stages = num_stages;
|
||||
lpcnet_quant_compute_bits_per_frame(q);
|
||||
|
||||
fprintf(stderr, "dec: %d pred: %3.2f num_stages: %d mbest: %d bits_per_frame: %d frame: %2d ms bit_rate: %5.2f bits/s",
|
||||
|
|
|
|||
|
|
@ -28,12 +28,19 @@ int lpcnet_verbose = 0;
|
|||
#define DEFAULT_PITCH_BITS 6
|
||||
#define DEFAULT_DEC 3
|
||||
|
||||
LPCNET_QUANT *lpcnet_quant_create(int num_stages, int m[], float vq[]) {
|
||||
LPCNET_QUANT *lpcnet_quant_create(int direct_split) {
|
||||
LPCNET_QUANT *q = (LPCNET_QUANT*)malloc(sizeof(LPCNET_QUANT));
|
||||
if (q == NULL) return NULL;
|
||||
q->weight = DEFAULT_WEIGHT; q->pred = DEFAULT_PRED;
|
||||
q->mbest = DEFAULT_MBEST; q->pitch_bits = DEFAULT_PITCH_BITS; q->dec = DEFAULT_DEC;
|
||||
q->num_stages = num_stages; q->vq = vq; q->m = m; q->logmag = 0;
|
||||
if (direct_split) {
|
||||
q->weight = 1.0; q->pred = 0.0;
|
||||
q->mbest = DEFAULT_MBEST; q->pitch_bits = DEFAULT_PITCH_BITS; q->dec = DEFAULT_DEC;
|
||||
q->num_stages = direct_split_num_stages; q->vq = direct_split_vq; q->m = direct_split_m; q->logmag = 1;
|
||||
}
|
||||
else {
|
||||
q->weight = DEFAULT_WEIGHT; q->pred = DEFAULT_PRED;
|
||||
q->mbest = DEFAULT_MBEST; q->pitch_bits = DEFAULT_PITCH_BITS; q->dec = DEFAULT_DEC;
|
||||
q->num_stages = pred_num_stages; q->vq = pred_vq; q->m = pred_m; q->logmag = 0;
|
||||
}
|
||||
lpcnet_quant_compute_bits_per_frame(q);
|
||||
|
||||
int i,d;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,15 @@ typedef struct {
|
|||
float features_lin[2][NB_FEATURES]; /* adjacent frames features for linear interpolation */
|
||||
} LPCNET_QUANT;
|
||||
|
||||
LPCNET_QUANT *lpcnet_quant_create(int num_stages, int m[], float vq[]);
|
||||
// Two sorts of VQs available
|
||||
extern int pred_num_stages;
|
||||
extern float pred_vq[MAX_STAGES*NB_BANDS*MAX_ENTRIES];
|
||||
extern int pred_m[MAX_STAGES];
|
||||
extern int direct_split_num_stages;
|
||||
extern float direct_split_vq[MAX_STAGES*NB_BANDS*MAX_ENTRIES];
|
||||
extern int direct_split_m[MAX_STAGES];
|
||||
|
||||
LPCNET_QUANT *lpcnet_quant_create(int direct_split);
|
||||
void lpcnet_quant_destroy(LPCNET_QUANT *q);
|
||||
void lpcnet_quant_compute_bits_per_frame(LPCNET_QUANT *q);
|
||||
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
}
|
||||
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(num_stages, pred_m, pred_vq);
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(0);
|
||||
q->weight = weight; q->pred = pred;
|
||||
q->pitch_bits = pitch_bits; q->dec = dec;
|
||||
lpcnet_quant_compute_bits_per_frame(q);
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
}
|
||||
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(num_stages, pred_m, pred_vq);
|
||||
LPCNET_QUANT *q = lpcnet_quant_create(0);
|
||||
q->weight = weight; q->pred = pred; q->mbest = mbest_survivors;
|
||||
q->pitch_bits = pitch_bits; q->dec = dec;
|
||||
lpcnet_quant_compute_bits_per_frame(q);
|
||||
|
|
|
|||
Loading…
Reference in New Issue