问题
I want to do audio signal resampling (converting a signal with fs = 8 kHz to 16 kHz) using MATLAB.
There are 3 interpolation methods available : linear, pchip and spline
https://in.mathworks.com/help/signal/ref/resample.html#bungoxs
Which of them is most suitable for a speech signal and why?
回答1:
You probably don't want to use any of these, but rather interpft
, which does the upsampling by zero-padding in the frequency domain. This assumes that all the higher frequency signals (above 4 kHz) are zero - these have been lost in the recording process.
回答2:
Linear sampling doesn't give good results as it won't capture the "curviness" of a low sample-rate signal, and the result is high frequency artifacts (You'll see if you Fourier-transform your upsampled signal).
A spline (which means cubic spline) is a sort of pchip. Basically you can use pchip if you know what you are doing and want to fine-tune the parameters. Since you don't know what you are doing, just use cubic splines with the default parameters. Visually they look OK, though when I was doing interpolation of width points (for graphics) I found that they weren't flexible enough, and had to do up to quintic splines. Higher than quintic and the splines become very wiggly and hard to control. But probably quintic splines with hand-tuned parameters would give you best quality.
I've got sophisticated up/down sampling code in the Baby X resource compiler. It wasn't developed by me, however. https://github.com/MalcolmMcLean/babyxrc
回答3:
The optimal way to upsample is use Sinc kernel interpolation or reconstruction, using a (polyphase if needed) windowed Sinc to be computationally feasible. Using a Zero-padded IFFT to upsample produces a similar high quality interpolation, except for circular boundary effects.
If you have to use 1 of your 3 available methods, spline is less worse than pchip, as the latter may clip a bit, and both of those are less worse than linear.
来源:https://stackoverflow.com/questions/43427960/which-interpolation-method-to-use-for-resampling-speech-signal