2012-10-05 167 views
1

我正在閱讀我的android應用程序中藍牙耳機的音頻採樣。藍牙SCO以音頻輸入的8KHz採樣頻率工作。但我需要藍牙耳機的16KHz音頻採樣,所以我需要使用上採樣。在Android中對PCM音頻採樣的上採樣

我在這裏和其他網站上搜索有關Android中的升頻採樣,但沒有用。如果有人知道預定義的Java庫升頻採樣請回答我的問題。

+0

相關:http://stackoverflow.com/questions/3260424/resample-upsample-sound-frames-from-8khz-to-48khz-java-android –

+0

IDK,如果你可以在android中使用這個API,但javasound讓你這樣做,這裏有一些很好的示例:http://www.jsresources.org/examples/AudioConverter.html –

回答

-1

最簡單的方法就是複製每個值並加倍頻率。這不會改善音質,但也不會讓它變得更糟。這與您如何將圖像放大至更高分辨率相似。沒有過濾,它不會看起來更糟糕,但也不會更好,只要你用非小數量進行升級。

你能區分這張圖片嗎?

enter image description here

和這個?

第二圖像實際上是兩倍的分辨率,但看起來是一樣的。

只要您用非小數數字縮放聲音(或圖像),就不會引入縮放工件。

然而,各種提示,如果你想平滑上採樣的聲音:

https://ccrma.stanford.edu/~jos/resample/

http://paulbourke.net/miscellaneous/interpolation/

http://leute.server.de/wilde/resample.html#Upsampling

+0

我需要最好的上採樣,因爲我使用這些數據進行語音識別。如果我按你所說的那樣做,那麼承認將會很差。 –

+0

@YugandharBabu,它將與原始8kHz聲音一樣好或壞。 –

+0

http://paulbourke.net/miscellaneous/interpolation/ <---各種數學插值 –

1

如果你要求爲16kHz的採樣應該自動發生除非你正在測試的設備有一些奇怪的音頻HAL/audioflinger實現。

如果您要求輸入設備不支持的採樣率,會發生什麼情況是音頻HAL將返回一個錯誤代碼直到audioflinger並建議使用採樣率。 audioflinger會嘗試打開一個支持採樣率的輸入流,並在內部進行重新採樣,以便應用程序以所需的速率獲取音頻數據。

只要請求的採樣率不大於支持的採樣率的兩倍,這應該工作,所以應該使用8 - > 16 kHz的採樣率。這種上採樣的質量是否足夠好是你必須判斷自己的事情。

+0

即使我在AudioRecord實例創建中使用16K或更高的採樣頻率,我仍以8KHz的速率獲取樣本。 –