segsnr.c
来自「语音CELP压缩解压源代码(C语音)」· C语言 代码 · 共 74 行
C
74 行
/**************************************************************************** ROUTINE* segsnr** FUNCTION* * calculate average segmental SNR ** SYNOPSIS* subroutine segsnr(s, ts, sumsnr, framesnr, snrflag)** formal ** data I/O* name type type function* -------------------------------------------------------------------* s float i "reference" speech input* ts short i "test" speech input* l int i number of samples* sumsnr float o average snr* framesnr int o number of calculations averaged* snrflag int o flag for valid snr value****************************************************************************** DESCRIPTION******************************************************************************* CALLED BY** celp** CALLS** ***************************************************************************/#include <math.h>#define TRUE 1#define FALSE 0segsnr(s, ts, l, sumsnr, framesnr, snrflag)int l, *framesnr, *snrflag;short ts[];float s[], *sumsnr;{ int j; float seng = 0.0, neng = 0.0, snr; *snrflag = FALSE; for (j = 0; j < l; j++) { seng += s[j] * s[j]; neng += (s[j] - ts[j]) * (s[j] - ts[j]); } if (neng > 0.0) { snr = seng / neng; if (snr > 0.0) { /* *only include segments whose snr is between -10 dB and 64 dB */ if (10*log10(snr) > -10. && 10*log10(snr) < 64.) { *snrflag = TRUE; *sumsnr += snr; (*framesnr)++; } } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?