RNNoise的compute_band_energy函数解析
| opus | band_value | bandsize | X_index | gain | X_index | gain |
| 0 | 0 | 4 | 0~3 | (1-j/size) | ||
| 1 | 1 | 4 | 0~3 | (j/size) | 4~7 | (1-j/size) |
| 2 | 2 | 4 | 4~7 | (j/size) | 8~11 | (1-j/size) |
| 3 | 3 | 4 | 8~11 | (j/size) | 12~15 | (1-j/size) |
| 4 | 4 | 4 | 12~15 | (j/size) | 16~19 | (1-j/size) |
| 5 | 5 | 4 | 16~19 | (j/size) | 20~23 | (1-j/size) |
| 6 | 6 | 4 | 20~23 | (j/size) | 24~27 | (1-j/size) |
| 7 | 7 | 4 | 24~27 | (j/size) | 28~31 | (1-j/size) |
| 8 | 8 | 8 | 28~31 | (j/size) | 32~39 | (1-j/size) |
| 9 | 10 | 8 | 32~39 | (j/size) | 40~47 | (1-j/size) |
| 10 | 12 | 8 | 40~47 | (j/size) | 48~55 | (1-j/size) |
| 11 | 14 | 8 | 48~55 | (j/size) | 56~63 | (1-j/size) |
| 12 | 16 | 16 | 56~63 | (j/size) | 64~79 | (1-j/size) |
| 13 | 20 | 16 | 64~79 | (j/size) | 80~95 | (1-j/size) |
| 14 | 24 | 16 | 80~95 | (j/size) | 96~111 | (1-j/size) |
| 15 | 28 | 24 | 96~111 | (j/size) | 112~135 | (1-j/size) |
| 16 | 34 | 24 | 112~135 | (j/size) | 136~159 | (1-j/size) |
| 17 | 40 | 32 | 136~159 | (j/size) | 160~191 | (1-j/size) |
| 18 | 48 | 48 | 160~191 | (j/size) | 192~239 | (1-j/size) |
| 19 | 60 | 72 | 192~239 | (j/size) | 240~311 | (1-j/size) |
| 20 | 78 | 88 | 312~400 | (j/size) | 312~400 | (1-j/size) |
| 21 | 100 | 312~400 | (j/size) |
由此达到三角滤波的功能,X_index是FFT计算结果的数值索引,其实原文采样频率是48kHz,FFT结果计算结果可以表征0~24kHz的功率谱。语音帧大小是10ms,窗大小是20ms,所以单次FFT的输入音频数据为960个采样值,FFT结果为480个数值,每个数值表征24kHz/480=50Hz带宽大小的频谱。在函数中值引用了400个FFT的计算结果,因此计算的功率谱范围是0~20kHz的功率谱。