XAudio2 取樣率轉換
如果輸入取樣率與其輸出語音的輸入取樣率不同,XAudio2 語音可以執行自動取樣率轉換。
取樣率轉換遵循下列規則:
語音輸入取樣率已修正。
語音只能處理建立時指定的輸入取樣率。 對於主控語音和副混音,輸入取樣率是以IXAudio2::CreateMasteringVoice 和 IXAudio2::CreateSubmixVoice函式的InputSampleRate引數指定。 對於來源語音,語音的輸入取樣率是由 pSourceFormat 引數指定給 IXAudio2::CreateSourceVoice 函式。
所有語音的輸出語音都必須具有相同的輸入取樣率。
語音可以從輸入取樣率轉換成任何輸出取樣率,但所有語音的輸出語音都必須具有相同的輸入取樣率。 例如,語音可以輸出至輸入取樣率為 22 kHz 的任何數目語音。 不過,如果相同的語音有數個輸出聲音,其中每個語音都有不同的輸入取樣率,音訊圖表就無效。
取樣率轉換處理只會在必要時發生。
將音訊資料轉換成不同的取樣率會產生更多處理額外負荷,最好避免此額外負荷。 如果語音的輸入取樣率符合其輸出語音的輸入取樣率,則不會完成此轉換,而且處理時間會縮短。
輸出取樣率可能會隨著語音的存留期而有所不同。
語音的輸出取樣率不是固定的。 只要其所有輸出語音都有相同的輸入取樣率,音訊圖表就會有效。 如果語音變更為以不同輸入取樣率輸出至新語音,語音會轉換成新語音的輸入取樣率。
在某些情況下,您必須新增副混音,以在語音之間執行取樣率轉換。 如果語音需要以各種輸入取樣率輸出到語音,則只有其中一個語音可以是原始語音的直接輸出。 因為所有語音的輸出語音都必須有相同的輸入取樣率,所以其他語音會間接接收輸出。 在原始語音和預定的輸出語音之間,必須有具有正確輸入取樣率的副混音。
例如,請考慮輸入取樣率為 22 kHz 的來源語音,其需要輸出至輸入取樣率為 11 kHz 的副混音,以及輸入取樣率為 44.1 kHz 的主音。 因為兩個輸出語音有不同的輸入取樣率,所以您必須在原始語音與其預定的輸出語音之間插入更多副混音。 若要維持來源聲音的逼真度,並避免將不必要的成本轉換成較高的取樣率,您必須將兩個具有 22 khz 取樣輸入速率的副混音插入圖形中。 一個副混音會以 11 khz 輸出到具有殘響效果的副混音,另一個副混音則會輸出到 44.1 khz 的主音。
音訊圖形中的取樣率轉換範例
所有語音都有相同的取樣輸入速率;音訊圖表中沒有取樣率轉換。
除了主控語音以外,所有語音都有相同的取樣輸入速率;取樣率轉換只會在移至主控語音的資料上執行。
語音有不同的取樣輸入速率,而且需要更多副混音來執行取樣率轉換;取樣率轉換會在音訊圖形的多個位置執行。
相關主題