Por qué multiplicar todas las entradas de audio con 1000 / sqrt (sumsofInputSquare / datalength) [cerrado]

-1

Mi tesis es sobre segeración de voz. Estoy leyendo un código que se ha utilizado en este campo. Probablemente no sea necesario, pero aquí está el fullCode

No puedo entender algo que hizo el código del propietario,

if ((fp = fopen(filename, "r")) == NULL){
    printf("Cannot open input file!\n");
    exit(0);
}

while (!feof(fp))
{
    float f;
    fscanf(fp, "%f\n", &f);
    Input[SigLength]=f;
    SigLength++;
}
fclose(fp);

float sumE=0;
for(int n=0; n<SigLength; n++)
    sumE += Input[n]*Input[n];

sumE /= float(SigLength);

for(int n=0; n<SigLength; n++)
    Input[n] *= 1000/sqrt(sumE);

return(1000/sqrt(sumE));

Abre un archivo que tiene DB de sonido como 48, 200, etc.

Mi pregunta ¿por qué está haciendo el proceso a continuación? ¿Aplicar lógica es común en el análisis de sonido?

for(int n=0; n<SigLength; n++)
    Input[n] *= 1000/sqrt(sumE);
    

1 respuesta

1

Esto normaliza la potencia RMS del conjunto de datos, por unidad de tiempo, pero basado en una medición en todo el conjunto de datos en lugar del tipo de medición de potencia periódica o deslizante utilizada por un AGC continuo.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas