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