前段時間客戶給我們一個項目,要求播放一段語音,語音必須混合在藍牙音頻之中播放出來。
據我所知,傑理的所有藍牙的音頻播放(除了按鍵音)都是阻塞播放,沒有什麼特別好的方法實現混音。
依據按鍵音播放方式,我們預先錄製好PCM語音數據保存在flash中,需要播放的時候在dac中斷dac_isr_callback
中使用一些pcm合併方法直接pcm數據合併,如疊加法,歸一法等。我使用的是歸一法合併,效果還是不錯的。
這裏我們也遇到了一些問題,比如,我們預先錄製保存在flash中的pcm數據是44.1Khz採樣率的,在藍牙狀態下,dac
出來的數據也是44.1khz,這個可以直接合並,但是在tf卡或者U盤狀態,播放的歌曲並不一定是44.1Khz採樣率,所以並不能直接合並否則會出現變音的情況。要在這種情況下混音播放,只能是對44.1KHZ的語音PCM數據進行重採樣,因爲傑理這個鬼平臺,沒有找到什麼好的重採樣算法,大多數都是linux平臺的,或者是rtos平臺但是不開源的,沒有想到什麼好的辦法在讀卡讀U盤情況下進行混音,所以客戶直接去掉了這個功能,只在藍牙狀態下播放。大俠們有什麼好的辦法混合音頻播放,或者在傑理藍牙平臺進行PCM重採樣算法?歡迎加我一起討論