共用方式為


XAudio2 取樣率轉換

如果 XAudio2 語音的輸入取樣率與其輸出語音的輸入取樣率不同,則可以執行自動取樣率轉換。

取樣率轉換會遵循下列規則:

  • 語音輸入取樣率是固定的。

    語音只能在建立時處理指定的輸入取樣率。 針對 主控語音副混音,輸入取樣率會以 InputSampleRate 自變數指定給 IXAudio2::CreateMasteringVoiceIXAudio2::CreateSubmixVoice 函式。 針對來源語音,語音的輸入取樣率是由 pSourceFormat 自變數指定給 IXAudio2::CreateSourceVoice 函式。

  • 所有語音的輸出語音都必須具有相同的輸入取樣率。

    語音可以從輸入取樣率轉換成任何輸出取樣率,但所有語音的輸出語音都必須具有相同的輸入取樣率。 例如,語音可以輸出到輸入取樣率為 22 kHz 的任意數目語音。 不過,如果相同的語音有數個輸出語音,其中每個語音都有不同的輸入取樣率,則音訊圖表無效。

  • 取樣率轉換處理只會在必要時發生。

    將音訊數據轉換成不同的取樣率會產生更多的處理額外負荷,最好避免這種額外負荷。 如果語音的輸入取樣率符合其輸出語音的輸入取樣率,則不會完成此轉換,並縮短處理時間。

  • 輸出取樣率可能會隨著語音的壽命而有所不同。

    語音的輸出取樣率未固定。 只要其所有輸出語音具有相同的輸入取樣率,音訊圖形就會有效。 如果語音變更為以不同輸入取樣率輸出至新語音,語音會轉換成新語音的輸入取樣率。

在某些情況下,您必須新增副混音來執行語音之間的取樣率轉換。 如果語音需要以各種輸入取樣率輸出至語音,則只有其中一個語音可以直接輸出原始語音。 由於所有語音的輸出語音都必須具有相同的輸入取樣率,因此其他語音會間接接收輸出。 原始語音與預定輸出語音之間必須有正確輸入取樣率的副混音。

例如,請考慮輸入取樣率為 22 kHz 的來源語音,其需要輸出到輸入取樣率為 11 kHz 的副混音,以及輸入取樣率為 44.1 kHz 的主音。 由於兩個輸出語音有不同的輸入取樣率,因此您需要在原始語音與其預定的輸出語音之間插入更多副混音。 若要維持來源語音的逼真度,並避免將不必要的昂貴轉換至較高的取樣率,您必須將兩個含 22 khz 樣本輸入速率的副混音插入圖形中。 一個副混音語音會以 11 khz 輸出到具有殘響效果的副混音語音,另一個副混音則會輸出到 44.1 khz 的主音。

音訊圖形中的取樣率轉換範例

所有語音都有相同的取樣輸入速率;音訊圖表中不會進行取樣率轉換。音訊圖表中不會進行取樣率轉換。

除了主控語音以外,所有語音的樣本輸入速率都相同;取樣率轉換只會在移至主控語音的數據上執行。 取樣率轉換只會在移至主控語音的數據上執行。

語音有不同的取樣輸入速率,而且需要更多副混音來執行取樣率轉換;取樣率轉換會在音訊圖形的多個位置執行。 取樣率轉換是在音訊圖表的多個位置執行。

語音

XAudio2 程式設計手冊