XAudio2 语音
有三种类型的 XAudio2 语音对象:源、子混合和 掌握 语音。 源语音对客户端提供的音频数据进行作。 源和子混合语音将其输出发送到一个或多个子混合或主语音。 子混合和主语音将来自所有语音的音频混合在一起,并针对结果进行作。 掌握语音将音频数据写入音频设备。
所有语音执行的作
所有语音在通过音频传输时执行以下作。
- 整体音量调整,影响所有音频通道。 请参阅 IXAudio2Voice::SetVolume。
- 一个或多个 DSP 效果的可选客户端指定链,例如内置混响或由 IXAPO 接口定义的用户效果。 请参阅 XAudio2 音频效果。
- 每通道输出音量调整。 请参阅 IXAudio2Voice::SetChannelVolumes。
- 将矩阵组合到每个目标语音或用于掌握语音的音频输出设备。 如果需要,此组合会更改音频中的声道数。
源语音
使用源语音将音频数据提交到 XAudio2 处理管道中。 它们是 XAudio2 Audio Graph的入口点。 必须直接或通过中间子混合语音将语音数据发送到要听到的主语音。
除了所有语音执行的作外,源语音还会执行以下作。
- 如有必要,解码器首先运行,以将编码的源数据转换为脉冲代码调节(PCM)。
- 可变速率采样率转换(SRC)将语音的源音频数据转换为目标语音预期的采样率(如有必要),并支持动态音调更改。
- 可选的状态变量筛选器可用于以各种方式为声音着色。 请参阅 IXAudio2Voice::SetFilterParameters。
- 可选筛选器可以应用于语音的输出。 请参阅 IXAudio2Voice::SetOutputFilterParameters。
Submix Voices
子混合语音主要用于性能改进和效果处理。 无法将数据缓冲区直接提交到子混合语音。 除非你将其提交到主语音,否则不会听到它。 可以使用子混合语音来确保将特定一组语音数据转换为同一格式,并在集体结果上处理特定的效果链。
除了所有语音执行的作外,子混合语音还执行以下作。
- 固定速率 SRC 在必要时在语音的输出上运行,以将音频转换为目标语音预期的采样率。
- 可选的状态变量筛选器可用于以各种方式为声音着色。 请参阅 IXAudio2Voice::SetFilterParameters。
- 可选筛选器可以应用于语音的输出。 请参阅 IXAudio2Voice::SetOutputFilterParameters。
掌握语音
使用主语音表示音频输出设备。 无法将数据缓冲区直接提交到主语音,但提交到其他类型的语音的数据必须转到要听到的主语音。
除了所有语音执行的作外,主语音还执行以下作。
- 如果使用显式 InputSampleRate 音频设备不支持的值创建主语音,则固定速率 SRC 用于转换为设备支持的最接近的采样率。
- 如果输出设备需要,请剪辑最终输出音频。
相关主题