short time subband coding

Started by niloofar_omidi 2 years ago5 replieslatest reply 2 years ago94 views
Hello, I am implementing a subband ADPCM codec, Fs=16 kHz, frame length 3ms, band1=50Hz-2kHz, band2= 2kHz-8kHz. I used the FIR filter for subband coding and %50 overlap. My reconstructed signal does not follow the input. why it happens (it perhaps due to the short frame but I don't know what is happening) and how can I fix it?

Thanks in advance for your help.

[ - ]
Reply by dgshaw6October 20, 2020

It is not easy to see from your plots, but there are clearly some repeating stripes in the lower spectral plot.
16e3 * 0.003 gives 48 samples per frame, but you say that they overlap by 50%, so my guess is that you have some discontinuity in the reconstruction that is giving you a multiple of 333... Hz distortion.

[ - ]
Reply by niloofar_omidiOctober 21, 2020

Thanks for your helpful answer. I made a mistake in programming. Now I fix it, but I should consider the critical sampling for these two non-uniform subbands. Since lower band is 1/4 of the bandwidth and higher band is 3/4, and it is impractical to decimate the higher band. However, 'demodulation' maybe help to do this and then decimate by the factor 3/4 as the low band. 

[ - ]
Reply by dgshaw6October 21, 2020

The implementation details of G.722 may give you some insight in terms of split band adpcm coding.

[ - ]
Reply by jbrowerOctober 21, 2020

ADPCM is normally applied sample-by-sample in the time domain. I'm not clear on your specific technique, but in general trying to adapt this to a short frame (3 msec) won't be easy without some additional processing.

For debug, my suggestion would be to first implement basic G726 (say 40 kbps) without filtering and make sure the rest of your simulation (I/O, short-time FFT analysis, etc) all looks good. Then add subband filtering and 2x (separate) G726, and again make sure all looks good. Then proceed with your specific modifications.

Feel free to message me privately if there are proprietary details involved.


[ - ]
Reply by niloofar_omidiOctober 21, 2020

Thanks a lot for you informative answer. However, I realized that my problem is critical sampling for higher band, in which the Nyquist frequency forbids the decimation, so I have to 'demodulate' the higher band and the decimate it. This is A non-uniform ADPCM , something like ITU, G722 with shorter frame and non-uniform subbands.