XAudio2 语音

有三种类型的 XAudio2 语音对象:子混合掌握 语音。 源语音对客户端提供的音频数据进行作。 源和子混合语音将其输出发送到一个或多个子混合或主语音。 子混合和主语音将来自所有语音的音频混合在一起,并针对结果进行作。 掌握语音将音频数据写入音频设备。

所有语音执行的作

所有语音在通过音频传输时执行以下作。

  1. 整体音量调整,影响所有音频通道。 请参阅 IXAudio2Voice::SetVolume
  2. 一个或多个 DSP 效果的可选客户端指定链,例如内置混响或由 IXAPO 接口定义的用户效果。 请参阅 XAudio2 音频效果
  3. 每通道输出音量调整。 请参阅 IXAudio2Voice::SetChannelVolumes
  4. 将矩阵组合到每个目标语音或用于掌握语音的音频输出设备。 如果需要,此组合会更改音频中的声道数。

源语音

使用源语音将音频数据提交到 XAudio2 处理管道中。 它们是 XAudio2 Audio Graph的入口点。 必须直接或通过中间子混合语音将语音数据发送到要听到的主语音。

除了所有语音执行的作外,源语音还会执行以下作。

  • 如有必要,解码器首先运行,以将编码的源数据转换为脉冲代码调节(PCM)。
  • 可变速率采样率转换(SRC)将语音的源音频数据转换为目标语音预期的采样率(如有必要),并支持动态音调更改。
  • 可选的状态变量筛选器可用于以各种方式为声音着色。 请参阅 IXAudio2Voice::SetFilterParameters
  • 可选筛选器可以应用于语音的输出。 请参阅 IXAudio2Voice::SetOutputFilterParameters

Submix Voices

子混合语音主要用于性能改进和效果处理。 无法将数据缓冲区直接提交到子混合语音。 除非你将其提交到主语音,否则不会听到它。 可以使用子混合语音来确保将特定一组语音数据转换为同一格式,并在集体结果上处理特定的效果链。

除了所有语音执行的作外,子混合语音还执行以下作。

掌握语音

使用主语音表示音频输出设备。 无法将数据缓冲区直接提交到主语音,但提交到其他类型的语音的数据必须转到要听到的主语音。

除了所有语音执行的作外,主语音还执行以下作。

  • 如果使用显式 InputSampleRate 音频设备不支持的值创建主语音,则固定速率 SRC 用于转换为设备支持的最接近的采样率。
  • 如果输出设备需要,请剪辑最终输出音频。

语音

XAudio2 编程指南

IXAudio2SourceVoice

IXAudio2SubmixVoice

IXAudio2MasteringVoice