我想用MATLAB做音頻信號重採樣(用fs = 8kHz轉換成16kHz的信號)。哪種插值方法用於重採樣語音信號?
有3種插值方法可供選擇:線性,pchip和樣條
https://in.mathworks.com/help/signal/ref/resample.html#bungoxs
當中哪些是最適合語音信號,爲什麼?
我想用MATLAB做音頻信號重採樣(用fs = 8kHz轉換成16kHz的信號)。哪種插值方法用於重採樣語音信號?
有3種插值方法可供選擇:線性,pchip和樣條
https://in.mathworks.com/help/signal/ref/resample.html#bungoxs
當中哪些是最適合語音信號,爲什麼?
線性取樣不會得到好的結果,因爲它不會捕捉低採樣率的信號「彎曲度」,其結果是高頻假象(你會看到,如果你傅立葉變換的上升抽樣信號)。
有花鍵(這意味着三次樣條)是一種pchip的。基本上你可以使用芯片,如果你知道你在做什麼,並想微調參數。由於您不知道自己在做什麼,只需使用具有默認參數的三次樣條曲線。雖然在視覺上他們看起來不錯,但是當我對寬度點進行插值(對於圖形)時,我發現它們不夠靈活,並且必須做五次樣條。高於quintic,樣條變得非常虛弱,難以控制。但大概五次樣條曲線與手動調整參數會給你最好的質量。
我已經有了成熟的向上/向下抽樣碼,在嬰兒X資源編譯器。然而,這並不是我開發的。 https://github.com/MalcolmMcLean/babyxrc
您可能不想使用其中的任何一種,而是使用interpft
,它在頻域中通過零填充進行上採樣。這假定所有較高頻率信號(高於4kHz)都是零 - 在記錄過程中這些信號已經丟失。
的最佳的方式來上採樣是使用sinc核內插或重建,(如果需要多相),使用加窗Sinc函數在計算上是可行的。使用零填充IFFT上採樣產生類似的高質量插值,除了圓形邊界效應。
如果你必須使用你的3種可用的方法1,花鍵比pchip少更糟,因爲後者可能夾了一下,這兩個都小於線性差。
這是對wav文件的路徑是文件名的正確用法? [s,fs] = audioread(fileName); y = interpft(s,length(s)* 2); – Sonal
如果我使用上面的代碼,有時會得到'警告:寫入文件時數據被剪切。'可以接受嗎? – Sonal