共用方式為


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 的主音。

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

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

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

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

語音

XAudio2 程式設計指南