mirror of
https://github.com/xiph/opus.git
synced 2025-05-31 15:47:43 +00:00
cleanup
This commit is contained in:
parent
61c6391c21
commit
e018b6f152
2 changed files with 15 additions and 170 deletions
|
@ -225,28 +225,6 @@ int _celt_autocorr(
|
||||||
xptr = xx;
|
xptr = xx;
|
||||||
}
|
}
|
||||||
shift=0;
|
shift=0;
|
||||||
#ifdef FIXED_POINT
|
|
||||||
{
|
|
||||||
opus_val32 ac0;
|
|
||||||
ac0 = 1+(n<<7);
|
|
||||||
if (n&1) ac0 += SHR32(MULT16_16(xptr[0],xptr[0]),9);
|
|
||||||
for(i=(n&1);i<n;i+=2)
|
|
||||||
{
|
|
||||||
ac0 += SHR32(MULT16_16(xptr[i],xptr[i]),9);
|
|
||||||
ac0 += SHR32(MULT16_16(xptr[i+1],xptr[i+1]),9);
|
|
||||||
}
|
|
||||||
|
|
||||||
shift = celt_ilog2(ac0)-30+10;
|
|
||||||
shift = (shift)/2;
|
|
||||||
if (shift>0)
|
|
||||||
{
|
|
||||||
for(i=0;i<n;i++)
|
|
||||||
xx[i] = PSHR32(xptr[i], shift);
|
|
||||||
xptr = xx;
|
|
||||||
} else
|
|
||||||
shift = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
celt_pitch_xcorr(xptr, xptr, ac, fastN, lag+1);
|
celt_pitch_xcorr(xptr, xptr, ac, fastN, lag+1);
|
||||||
for (k=0;k<=lag;k++)
|
for (k=0;k<=lag;k++)
|
||||||
{
|
{
|
||||||
|
@ -254,26 +232,5 @@ int _celt_autocorr(
|
||||||
d = MAC16_16(d, xptr[i], xptr[i-k]);
|
d = MAC16_16(d, xptr[i], xptr[i-k]);
|
||||||
ac[k] += d;
|
ac[k] += d;
|
||||||
}
|
}
|
||||||
#ifdef FIXED_POINT
|
|
||||||
shift = 2*shift;
|
|
||||||
if (shift<=0)
|
|
||||||
ac[0] += SHL32((opus_int32)1, -shift);
|
|
||||||
if (ac[0] < 268435456)
|
|
||||||
{
|
|
||||||
int shift2 = 29 - EC_ILOG(ac[0]);
|
|
||||||
for (i=0;i<=lag;i++)
|
|
||||||
ac[i] = SHL32(ac[i], shift2);
|
|
||||||
shift -= shift2;
|
|
||||||
} else if (ac[0] >= 536870912)
|
|
||||||
{
|
|
||||||
int shift2=1;
|
|
||||||
if (ac[0] >= 1073741824)
|
|
||||||
shift2++;
|
|
||||||
for (i=0;i<=lag;i++)
|
|
||||||
ac[i] = SHR32(ac[i], shift2);
|
|
||||||
shift += shift2;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return shift;
|
return shift;
|
||||||
}
|
}
|
||||||
|
|
142
dnn/denoise.c
142
dnn/denoise.c
|
@ -504,7 +504,7 @@ float rnnoise_process_frame(DenoiseState *st, float *out, const float *in) {
|
||||||
|
|
||||||
#if TRAINING
|
#if TRAINING
|
||||||
|
|
||||||
static float uni_rand() {
|
/*static float uni_rand() {
|
||||||
return rand()/(double)RAND_MAX-.5;
|
return rand()/(double)RAND_MAX-.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,163 +513,51 @@ static void rand_resp(float *a, float *b) {
|
||||||
a[1] = .75*uni_rand();
|
a[1] = .75*uni_rand();
|
||||||
b[0] = .75*uni_rand();
|
b[0] = .75*uni_rand();
|
||||||
b[1] = .75*uni_rand();
|
b[1] = .75*uni_rand();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
int i;
|
int i;
|
||||||
int count=0;
|
int count=0;
|
||||||
static const float a_hp[2] = {-1.99599, 0.99600};
|
static const float a_hp[2] = {-1.99599, 0.99600};
|
||||||
static const float b_hp[2] = {-2, 1};
|
static const float b_hp[2] = {-2, 1};
|
||||||
float a_noise[2] = {0};
|
|
||||||
float b_noise[2] = {0};
|
|
||||||
float a_sig[2] = {0};
|
|
||||||
float b_sig[2] = {0};
|
|
||||||
float mem_hp_x[2]={0};
|
float mem_hp_x[2]={0};
|
||||||
float mem_hp_n[2]={0};
|
|
||||||
float mem_resp_x[2]={0};
|
|
||||||
float mem_resp_n[2]={0};
|
|
||||||
float x[FRAME_SIZE];
|
float x[FRAME_SIZE];
|
||||||
float n[FRAME_SIZE];
|
FILE *f1;
|
||||||
float xn[FRAME_SIZE];
|
|
||||||
int vad_cnt=0;
|
|
||||||
int gain_change_count=0;
|
|
||||||
float speech_gain = 1, noise_gain = 1;
|
|
||||||
FILE *f1, *f2, *fout;
|
|
||||||
DenoiseState *st;
|
DenoiseState *st;
|
||||||
DenoiseState *noise_state;
|
|
||||||
DenoiseState *noisy;
|
|
||||||
st = rnnoise_create();
|
st = rnnoise_create();
|
||||||
noise_state = rnnoise_create();
|
if (argc!=2) {
|
||||||
noisy = rnnoise_create();
|
fprintf(stderr, "usage: %s <speech>\n", argv[0]);
|
||||||
if (argc!=4) {
|
|
||||||
fprintf(stderr, "usage: %s <speech> <noise> <output denoised>\n", argv[0]);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
f1 = fopen(argv[1], "r");
|
f1 = fopen(argv[1], "r");
|
||||||
f2 = fopen(argv[2], "r");
|
|
||||||
fout = fopen(argv[3], "w");
|
|
||||||
for(i=0;i<150;i++) {
|
|
||||||
short tmp[FRAME_SIZE];
|
|
||||||
fread(tmp, sizeof(short), FRAME_SIZE, f2);
|
|
||||||
}
|
|
||||||
while (1) {
|
while (1) {
|
||||||
kiss_fft_cpx X[FREQ_SIZE], Y[FREQ_SIZE], N[FREQ_SIZE], P[WINDOW_SIZE];
|
kiss_fft_cpx X[FREQ_SIZE], P[WINDOW_SIZE];
|
||||||
float Ex[NB_BANDS], Ey[NB_BANDS], En[NB_BANDS], Ep[NB_BANDS];
|
float Ex[NB_BANDS], Ep[NB_BANDS];
|
||||||
float Exp[NB_BANDS];
|
float Exp[NB_BANDS];
|
||||||
float Ln[NB_BANDS];
|
float Ln[NB_BANDS];
|
||||||
float features[NB_FEATURES];
|
float features[NB_FEATURES];
|
||||||
float g[NB_BANDS];
|
float g[NB_BANDS];
|
||||||
float gf[FREQ_SIZE]={1};
|
|
||||||
short tmp[FRAME_SIZE];
|
short tmp[FRAME_SIZE];
|
||||||
float vad=0;
|
|
||||||
float vad_prob;
|
|
||||||
float E=0;
|
float E=0;
|
||||||
if (count==50000000) break;
|
fread(tmp, sizeof(short), FRAME_SIZE, f1);
|
||||||
if (++gain_change_count > 2821) {
|
if (feof(f1)) {
|
||||||
speech_gain = pow(10., (-40+(rand()%60))/20.);
|
return 0;
|
||||||
noise_gain = pow(10., (-30+(rand()%50))/20.);
|
|
||||||
if (rand()%10==0) noise_gain = 0;
|
|
||||||
noise_gain *= speech_gain;
|
|
||||||
if (rand()%10==0) speech_gain = 0;
|
|
||||||
gain_change_count = 0;
|
|
||||||
rand_resp(a_noise, b_noise);
|
|
||||||
rand_resp(a_sig, b_sig);
|
|
||||||
lowpass = FREQ_SIZE * 3000./24000. * pow(50., rand()/(double)RAND_MAX);
|
|
||||||
for (i=0;i<NB_BANDS;i++) {
|
|
||||||
if (eband5ms[i]<<FRAME_SIZE_SHIFT > lowpass) {
|
|
||||||
band_lp = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (speech_gain != 0) {
|
|
||||||
fread(tmp, sizeof(short), FRAME_SIZE, f1);
|
|
||||||
if (feof(f1)) {
|
|
||||||
rewind(f1);
|
|
||||||
fread(tmp, sizeof(short), FRAME_SIZE, f1);
|
|
||||||
}
|
|
||||||
for (i=0;i<FRAME_SIZE;i++) x[i] = speech_gain*tmp[i];
|
|
||||||
for (i=0;i<FRAME_SIZE;i++) E += tmp[i]*(float)tmp[i];
|
|
||||||
} else {
|
|
||||||
for (i=0;i<FRAME_SIZE;i++) x[i] = 0;
|
|
||||||
E = 0;
|
|
||||||
}
|
|
||||||
if (noise_gain!=0) {
|
|
||||||
fread(tmp, sizeof(short), FRAME_SIZE, f2);
|
|
||||||
if (feof(f2)) {
|
|
||||||
rewind(f2);
|
|
||||||
fread(tmp, sizeof(short), FRAME_SIZE, f2);
|
|
||||||
}
|
|
||||||
for (i=0;i<FRAME_SIZE;i++) n[i] = noise_gain*tmp[i];
|
|
||||||
} else {
|
|
||||||
for (i=0;i<FRAME_SIZE;i++) n[i] = 0;
|
|
||||||
}
|
}
|
||||||
|
for (i=0;i<FRAME_SIZE;i++) x[i] = tmp[i];
|
||||||
|
for (i=0;i<FRAME_SIZE;i++) E += tmp[i]*(float)tmp[i];
|
||||||
biquad(x, mem_hp_x, x, b_hp, a_hp, FRAME_SIZE);
|
biquad(x, mem_hp_x, x, b_hp, a_hp, FRAME_SIZE);
|
||||||
biquad(x, mem_resp_x, x, b_sig, a_sig, FRAME_SIZE);
|
|
||||||
biquad(n, mem_hp_n, n, b_hp, a_hp, FRAME_SIZE);
|
|
||||||
biquad(n, mem_resp_n, n, b_noise, a_noise, FRAME_SIZE);
|
|
||||||
for (i=0;i<FRAME_SIZE;i++) xn[i] = x[i] + n[i];
|
|
||||||
if (E > 1e9f) {
|
|
||||||
vad_cnt=0;
|
|
||||||
} else if (E > 1e8f) {
|
|
||||||
vad_cnt -= 5;
|
|
||||||
} else if (E > 1e7f) {
|
|
||||||
vad_cnt++;
|
|
||||||
} else {
|
|
||||||
vad_cnt+=2;
|
|
||||||
}
|
|
||||||
if (vad_cnt < 0) vad_cnt = 0;
|
|
||||||
if (vad_cnt > 15) vad_cnt = 15;
|
|
||||||
|
|
||||||
if (vad_cnt >= 10) vad = 0;
|
compute_frame_features(st, X, P, Ex, Ep, Exp, features, x);
|
||||||
else if (vad_cnt > 0) vad = 0.5f;
|
|
||||||
else vad = 1.f;
|
|
||||||
|
|
||||||
frame_analysis(st, Y, Ey, x);
|
|
||||||
frame_analysis(noise_state, N, En, n);
|
|
||||||
for (i=0;i<NB_BANDS;i++) Ln[i] = log10(1e-2+En[i]);
|
|
||||||
int silence = compute_frame_features(noisy, X, P, Ex, Ep, Exp, features, xn);
|
|
||||||
pitch_filter(X, P, Ex, Ep, Exp, g);
|
pitch_filter(X, P, Ex, Ep, Exp, g);
|
||||||
//printf("%f %d\n", noisy->last_gain, noisy->last_period);
|
|
||||||
for (i=0;i<NB_BANDS;i++) {
|
|
||||||
g[i] = sqrt((Ey[i]+1e-3)/(Ex[i]+1e-3));
|
|
||||||
if (g[i] > 1) g[i] = 1;
|
|
||||||
if (silence || i > band_lp) g[i] = -1;
|
|
||||||
if (Ey[i] < 5e-2 && Ex[i] < 5e-2) g[i] = -1;
|
|
||||||
if (vad==0 && noise_gain==0) g[i] = -1;
|
|
||||||
}
|
|
||||||
count++;
|
|
||||||
#if 0
|
|
||||||
for (i=0;i<NB_FEATURES;i++) printf("%f ", features[i]);
|
|
||||||
for (i=0;i<NB_BANDS;i++) printf("%f ", g[i]);
|
|
||||||
for (i=0;i<NB_BANDS;i++) printf("%f ", Ln[i]);
|
|
||||||
printf("%f\n", vad);
|
|
||||||
#endif
|
|
||||||
#if 1
|
#if 1
|
||||||
fwrite(features, sizeof(float), NB_FEATURES, stdout);
|
fwrite(features, sizeof(float), NB_FEATURES, stdout);
|
||||||
fwrite(g, sizeof(float), NB_BANDS, stdout);
|
fwrite(g, sizeof(float), NB_BANDS, stdout);
|
||||||
fwrite(Ln, sizeof(float), NB_BANDS, stdout);
|
fwrite(Ln, sizeof(float), NB_BANDS, stdout);
|
||||||
fwrite(&vad, sizeof(float), 1, stdout);
|
|
||||||
#endif
|
|
||||||
#if 0
|
|
||||||
compute_rnn(&noisy->rnn, g, &vad_prob, features);
|
|
||||||
interp_band_gain(gf, g);
|
|
||||||
#if 1
|
|
||||||
for (i=0;i<FREQ_SIZE;i++) {
|
|
||||||
X[i].r *= gf[i];
|
|
||||||
X[i].i *= gf[i];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
frame_synthesis(noisy, xn, X);
|
|
||||||
|
|
||||||
for (i=0;i<FRAME_SIZE;i++) tmp[i] = xn[i];
|
|
||||||
fwrite(tmp, sizeof(short), FRAME_SIZE, fout);
|
|
||||||
#endif
|
#endif
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "matrix size: %d x %d\n", count, NB_FEATURES + 2*NB_BANDS + 1);
|
//fprintf(stderr, "matrix size: %d x %d\n", count, NB_FEATURES + 2*NB_BANDS + 1);
|
||||||
fclose(f1);
|
fclose(f1);
|
||||||
fclose(f2);
|
|
||||||
fclose(fout);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue