驱动程序为每个设备声明支持的音频信号处理模式。
可用的信号处理模式
音频类别(由应用程序选择)映射到音频模式(由驱动程序定义)。 Windows 定义了七种音频信号处理模式。 OEM 和 IHV 可以确定要实现的模式。 建议 IHV/OEM 利用新模式添加音频效果,以优化音频信号以提供最佳用户体验。 下表汇总了这些模式。
| Mode | 渲染/捕获 | DESCRIPTION | 
|---|---|---|
| 原始 | 两者 | 原始模式指定不应对流应用任何信号处理。 应用程序可以请求完全未触及的原始流并执行其自己的信号处理。 | 
| 违约 | 两者 | 此模式定义默认音频处理。 | 
| 电影* | 渲染 | 电影音频播放 | 
| 媒体* | 两者 | 音乐音频播放(大多数媒体流默认) | 
| 演讲* | 捕获 | 人工语音捕获(例如个人助理的输入) | 
| 通信* | 两者 | VOIP 渲染和捕获(例如 Teams,Skype,Lync) | 
| 通知* | 渲染 | 铃声、闹钟、提醒等。 | 
* Windows 10 中的新增功能。
重要
原始捕获流不得包含任何时间变化或自适应处理,例如回声控制、自动增益控制或噪音抑制。 原始捕获中允许的唯一音频处理是线性均衡到平展频率响应。
信号处理模式驱动程序要求
音频设备驱动程序至少需要支持 原始 模式或 默认 模式。 支持其他模式是可选的。
并非所有模式都可用于特定系统。 驱动程序定义它们支持的信号处理模式(即作为驱动程序的一部分安装的 API 类型),并相应地通知 OS。 如果驱动程序不支持特定模式,则 Windows 将使用下一个最佳匹配模式。
下图显示了支持多种模式的系统:
              
               
              
              
            
Windows 音频流类别
为了通知系统音频流的使用情况,应用程序可以选择使用特定的音频流类别标记流。 应用程序可以在创建音频流后使用任何音频 API 设置音频类别。 在 Windows 中,有九个音频流类别。
| 类别 | DESCRIPTION | 
|---|---|
| 电影 | 电影,带对话框的视频(替换 ForegroundOnlyMedia) | 
| 媒体 | 媒体播放的默认类别(替换 BackgroundCapableMedia) | 
| 游戏聊天 | 用户之间的游戏内通信(Windows 10 中的新类别) | 
| 语音 | 语音输入(例如个人助理)和输出(例如导航应用)(Windows 10 中的新类别) | 
| 通信 | VOIP,实时聊天 | 
| 警报 | 警报、铃声、通知 | 
| 声音效果 | 蜂鸣声、叮声等。 | 
| 游戏媒体 | 在游戏音乐中 | 
| 游戏效果 | 球弹跳,汽车引擎声音,子弹等。 | 
| 其他 | 未分类流 | 
如前所述,音频类别(由应用程序选择)映射到音频模式(由驱动程序定义)。 应用程序可以使用 10 个音频类别之一标记其每个流。
应用程序不能选择更改音频类别和信号处理模式之间的映射。 应用程序不知道“音频处理模式”的概念。 他们无法查明每个流采用了哪种模式。
WASAPI 代码示例
WASAPIAudio 示例中的以下 WASAPI 代码演示如何设置不同的音频类别。
// The ActivateAudioInterfaceAsync is a replacement for IMMDevice::Activate
IActivateAudioInterfaceAsyncOperation *asyncOp = nullptr;
HRESULT hr = S_OK;
String ^defaultRender = Windows::Media::Devices::MediaDevice::GetDefaultAudioRenderId( Windows::Media::Devices::AudioDeviceRole::Default );
hr = ActivateAudioInterfaceAsync( defaultRender->Data(), __uuidof( IAudioClient3 ), nullptr, this, &asyncOp );
if ( FAILED( hr ) ) { … }
…
// the app’s implementation of IActivateAudioInterfaceCompetionHandler is invoked asynchronously
HRESULT ActivateAudioInterfaceCompletionHandler::ActivateCompleted( IActivateAudioInterfaceAsyncOperation *activateOperation ) {
    HRESULT hr = S_OK;
    HRESULT hrActivateResult = S_OK;
    IUnknown *pUnknown = nullptr;
    IAudioClient3 *pAudioClient3 = nullptr;
    hr = activateOperation->GetActivateResult( &hrActivateResult, &pUnknown );
    if ( FAILED( hr ) )  { … }
    if ( FAILED( hrActivateResult ) ) { … }
    hr = pUnknown->QueryInterface( IID_PPV_ARGS( &pAudioClient3 ) );
    if ( FAILED( hr ) ) { … }
    // The IAudioClient3::SetClientProperties call needs to happen after activation completes,
    // but before the call to IAudioClient3::Initialize or IAudioClient3::InitializeSharedAudioStream.
    AudioClientProperties props = {};
    props.cbSize = sizeof(props);
    props.eCategory = AudioCategory_GameEffects;
    pAudioClient3->SetClientProperties( &props );
    if ( FAILED( hr ) ) { … }
    hr = pAudioClient3->InitializeSharedAudioStream( … );
    if ( FAILED( hr ) ) { … }
    …
信号处理模式和效果
OEM 定义将用于每个模式的效果。 Windows 定义十七种类型的音频效果的列表。
有关如何将 APO 与模式关联的信息,请参阅 “实现音频处理对象”。
应用程序可以询问将哪些效果应用于特定流进行 RAW 或非 RAW 处理。 应用程序还可以要求在效果或原始处理状态更改时收到通知。 应用程序可以使用此信息来确定特定流式处理效果(如“声学回声取消”)是否可用,或者是否未使用任何效果。 如果未使用任何效果,应用程序可以确定要添加的音频处理量。
如果 System.Devices.AudioDevice.RawProcessingSupported 为 true,则应用程序还可以选择在特定流上设置“使用 RAW”标志。 如果 System.Devices.AudioDevice.RawProcessingSupported 为 false,则应用程序无法设置“use RAW”标志。
应用程序无法查看存在多少模式,但 RAW/非 RAW 除外。
无论音频硬件配置如何,应用程序都应请求最佳的音频效果处理。 例如,将流标记为“通信”会让 Windows 知道暂停背景音乐。
有关静态音频流类别的详细信息,请参阅 AudioCategory 枚举 和 MediaElement.AudioCategory 属性。
系统效果的组件类别标识符(CLSID)
FX_DISCOVER_EFFECTS_APO_CLSID
这是“代理效果”MsApoFxProxy.dll 的 CLSID,该效果会查询驱动程序以获取活动效果列表。
FX_DISCOVER_EFFECTS_APO_CLSID  = "{889C03C8-ABAD-4004-BF0A-BC7BB825E166}"
KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE
KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE是内核流式处理的标识符,用于标识所引用的特定属性是信号处理模式属性。
此处显示的 #define 语句在 KSMedia.h 头文件中可用。
#define STATIC_KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE 0xe1f89eb5, 0x5f46, 0x419b, 0x96, 0x7b, 0xff, 0x67, 0x70, 0xb9, 0x84, 0x1
DEFINE_GUIDSTRUCT("E1F89EB5-5F46-419B-967B-FF6770B98401", KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE);
#define KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE DEFINE_GUIDNAMED(KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE)
KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE通过包含KSATTRIBUTE_LIST的 KSDATARANGE 结构通过模式感知驱动程序使用。 此列表包含单个元素,即 KSATTRIBUTE。 KSATTRIBUTE 结构的属性成员设置为KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE。
音频效果
以下音频效果可用于 Windows 10。
| 音频效果 | DESCRIPTION | 
|---|---|
| 声学回声取消(AEC) | 声学回声消除(AEC)在回声出现在音频流后通过去除回声来提高音频质量。 | 
| 噪音抑制 (NS) | 简单噪声抑制(NS)可以抑制音频流中的噪音,例如蜂鸣声和嗡嗡声。 | 
| 深度噪声抑制 | 深度干扰抑制使用高级 AI/机器学习技术来抑制噪音,尤其是在语音呼叫中。 | 
| 自动增益控制 (AGC) | 自动增益控制(AGC)-旨在在其输出中提供受控信号振幅,尽管输入信号中出现振幅变化。 平均或峰值输出信号级别用于将输入到输出增益动态调整为合适的值,从而实现稳定的输出级别,即使输入信号级别很宽。 | 
| 波束形成 (BF) | 波束形成(BF)是用于定向信号传输或接收的信号处理技术。 这是通过将分阶段数组中的元素组合在一起来实现的,这样一来,特定角度的信号会经历建设性干扰,而另一些元素则经历破坏性干扰。 与全向接收/传输相比,改进称为接收/传输增益(或损失)。 | 
| 固定音调删除 | 恒定音调消除用于衰减恒定的背景噪音,如磁带嘶嘶声、电扇或嗡嗡声。 | 
| 均衡器 | 均衡器效果用于使用线性筛选器更改音频系统的频率响应。 这允许提升信号的不同部分,类似于高音或低音设置。 | 
| 音量均衡器 | 响度均衡器效果通过调配音频输出来减少感知的音量差异,以便更响亮和更安静的声音接近平均音量级别。 | 
| 低音增强 | 在笔记本电脑等具有低音能力有限的扬声器的系统中,有时可以通过增强扬声器支持频率范围内的低音响应来提高音频的感知质量。 低音增强通过在移动设备非常小的扬声器上增加中低音范围的增益来改善声音。 | 
| 虚拟环绕 | 虚拟环绕使用简单的数字方法将多通道信号组合成两个通道。 这样做的方式是允许转换后的信号还原到原始多通道信号,使用大多数新式音频接收器中提供的 Pro 逻辑解码器。 虚拟环绕非常适合具有双声道声音硬件和具有环绕声音增强机制的接收器的系统。 | 
| 虚拟耳机 | 虚拟环绕声允许佩戴耳机的用户区分声音的前后和左右。 这是通过传输空间提示,帮助大脑本地化声音并将其集成到声音领域来完成的。 这有一种效果,使人感觉声音突破耳机的限制,从而创造一种“声在脑外”的倾听体验。 通过使用称为“头部相关传输函数”的先进技术(HRTF)来实现此效果。 HRTF 生成基于人头形状的声学提示。 这些提示不仅有助于侦听器定位声音的方向和源,而且还增强了侦听器周围的声学环境类型。 | 
| 扬声器填充 | 大多数音乐只通过两个声道制作,因此未针对典型的影音爱好者所使用的多声道音频设备进行优化。 因此,仅从左前和右前扬声器发出的音乐是一种不太理想的音频体验。 扬声器填充模拟多声道扬声器设置。 它可以将本来只能在两个扬声器上播放的音乐传送到房间里的所有扬声器,从而增强空间感受。 | 
| 房间修正 | 房间音效校正通过自动计算延迟、频率响应和增益调整的最佳组合,优化房间中特定位置的聆听体验,例如您沙发中央垫子的聆听效果。 房间更正功能更好地匹配视频屏幕上的图像的声音,在桌面扬声器放置在非标准位置时也很有用。 房间校正处理相对于高端接收器中的类似功能是一项改进,因为它更好地考虑了人耳处理声音的方式。 校准是在麦克风的帮助下执行的,该过程可与立体声和多声道系统一起使用。 用户将麦克风放在打算坐的位置,然后激活用于测量房间响应的向导程序。 该向导依次从每个扬声器播放一组特别设计的音调,并从麦克风的位置测量每个扬声器的距离、频率响应和整体声级。 | 
| 低音管理 | 有两种低音管理模式:前低音管理和反向低音管理。 前声管理 会筛选出音频数据流的低频率内容。 前置低音管理算法根据能够处理深低音频率的通道,将筛选后的输出重定向到低音炮或前左和前右扬声器通道。 此决定基于 LRBig 标志的设置。 若要设置 LRBig 标志,用户使用控制面板中的声音小程序访问 Bass 管理设置对话框。 用户选中一个复选框,以指示,例如,前右扬声器和前左扬声器是全频带,这将设置 LRBig 标志。 若要清除此标志,请选中该复选框。 反向低音管理 将信号从低音通道分发到其他输出通道。 根据 LRBig 标志的设置,该信号将定向到所有通道或前左和前右通道。 将子声道信号混合到其他通道时,此过程会大幅减少增益。 使用的低音管理模式取决于低音炮的可用性以及主扬声器的低音处理能力。 在 Windows 中,用户通过控制面板中的声音小程序提供此信息。 | 
| 环境影响 | 通过更准确地模拟真实音频环境,环境效应可提高音频播放的现实性。 可以选择多种不同的环境,例如“体育场”模拟体育场的声学效果。 | 
| 扬声器保护 | 扬声器保护的目的是抑制导致扬声器对任何电脑系统组件造成物理伤害的共鸣频率。 例如,某些物理硬盘驱动器可以通过以正确的频率播放响亮的声音来损坏。 其次,当扬声器超过特定值时,扬声器保护的工作原理是通过衰减信号来最大程度地减少对扬声器的损害。 | 
| 说话人补偿 | 某些扬声器比其他人更善于重现声音。 例如,特定扬声器可能会衰减 100 Hz 以下的声音。 有时,音频驱动程序和固件 DSP 解决方案了解他们正在播放的扬声器的特定性能特征,并且可以添加旨在补偿扬声器限制的处理。 例如,可以创建终结点效果(EFX),该效果将增益应用于低于 100 Hz 的频率。 当与物理扬声器的衰减相结合时,这种效果会导致音频保真度增强。 | 
| 动态范围压缩 | 动态范围压缩通过缩小或“压缩”音频信号的动态范围来放大安静声音。 音频压缩放大了低于特定阈值的安静声音,而响亮的声音仍然不受影响。 | 
此处显示的 #define 语句在 KSMedia.h 头文件中可用。
DEFAULT
#define STATIC_AUDIO_SIGNALPROCESSINGMODE_DEFAULT 0xc18e2f7e, 0x933d, 0x4965, 0xb7, 0xd1, 0x1e, 0xef, 0x22, 0x8d, 0x2a, 0xf3
DEFINE_GUIDSTRUCT("C18E2F7E-933D-4965-B7D1-1EEF228D2AF3", AUDIO_SIGNALPROCESSINGMODE_DEFAULT);
#define AUDIO_SIGNALPROCESSINGMODE_DEFAULT DEFINE_GUIDNAMED(AUDIO_SIGNALPROCESSINGMODE_DEFAULT)
RAW格式
#define STATIC_AUDIO_SIGNALPROCESSINGMODE_RAW 0x9e90ea20, 0xb493, 0x4fd1, 0xa1, 0xa8, 0x7e, 0x13, 0x61, 0xa9, 0x56, 0xcf
DEFINE_GUIDSTRUCT("9E90EA20-B493-4FD1-A1A8-7E1361A956CF", AUDIO_SIGNALPROCESSINGMODE_RAW);
#define AUDIO_SIGNALPROCESSINGMODE_RAW DEFINE_GUIDNAMED(AUDIO_SIGNALPROCESSINGMODE_RAW)
声学回声消除
#define STATIC_AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION 0x6f64adbe, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adbe-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION);
#define AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_ACOUSTIC_ECHO_CANCELLATION)
噪音抑制
#define STATIC_AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION          0x6f64adbf, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adbf-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION);
#define AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_NOISE_SUPPRESSION)
自动增益控制
#define STATIC_AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL     0x6f64adc0, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc0-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL);
#define AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_AUTOMATIC_GAIN_CONTROL)
波束形成
#define STATIC_AUDIO_EFFECT_TYPE_BEAMFORMING                0x6f64adc1, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc1-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_BEAMFORMING);
#define AUDIO_EFFECT_TYPE_BEAMFORMING DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_BEAMFORMING)
固定音调删除
#define STATIC_AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL      0x6f64adc2, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc2-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL);
#define AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_CONSTANT_TONE_REMOVAL)
均衡器
#define STATIC_AUDIO_EFFECT_TYPE_EQUALIZER                  0x6f64adc3, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc3-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_EQUALIZER);
#define AUDIO_EFFECT_TYPE_EQUALIZER DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_EQUALIZER)
声度均衡器
#define STATIC_AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER         0x6f64adc4, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc4-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER);
#define AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_LOUDNESS_EQUALIZER)
低音增强
#define STATIC_AUDIO_EFFECT_TYPE_BASS_BOOST                 0x6f64adc5, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc5-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_BASS_BOOST);
#define AUDIO_EFFECT_TYPE_BASS_BOOST DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_BASS_BOOST)
虚拟环绕
#define STATIC_AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND           0x6f64adc6, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc6-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND);
#define AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_VIRTUAL_SURROUND)
虚拟耳机
#define STATIC_AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES         0x6f64adc7, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc7-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES);
#define AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_VIRTUAL_HEADPHONES)
房间更正
#define STATIC_AUDIO_EFFECT_TYPE_ROOM_CORRECTION            0x6f64adc9, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adc9-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_ROOM_CORRECTION);
#define AUDIO_EFFECT_TYPE_ROOM_CORRECTION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_ROOM_CORRECTION)
低音管理
#define STATIC_AUDIO_EFFECT_TYPE_BASS_MANAGEMENT            0x6f64adca, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adca-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_BASS_MANAGEMENT);
#define AUDIO_EFFECT_TYPE_BASS_MANAGEMENT DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_BASS_MANAGEMENT)
环境影响
#define STATIC_AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS      0x6f64adcb, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adcb-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS);
#define AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_ENVIRONMENTAL_EFFECTS)
扬声器保护
#define STATIC_AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION         0x6f64adcc, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adcc-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION);
#define AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_SPEAKER_PROTECTION)
扬声器补偿
#define STATIC_AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION       0x6f64adcd, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adcd-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION);
#define AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_SPEAKER_COMPENSATION)
动态范围压缩
#define STATIC_AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION  0x6f64adce, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64adce-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION);
#define AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_DYNAMIC_RANGE_COMPRESSION)
深度噪声抑制
从 Windows 11 版本 24H2 开始,可以使用新的 GUID 来启用深度干扰抑制。
噪音抑制效果的标识符有两个。 噪声抑制的现有标识符和为深度噪声抑制添加的新标识符。 前者用于“低”(简单)噪音抑制,而后者为“高”,并作为 AI/机器学习解决方案实现。 与所有可用的音频效果一样,由应用程序决定,根据他们的需求和特定方案,选择要使用的音频效果。
#define STATIC_AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION 0x6f64add0, 0x8211, 0x11e2, 0x8c, 0x70, 0x2c, 0x27, 0xd7, 0xf0, 0x01, 0xfa
DEFINE_GUIDSTRUCT("6f64add0-8211-11e2-8c70-2c27d7f001fa", AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION);
#define AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION DEFINE_GUIDNAMED(AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION)
音频效果(如深度噪声抑制)作为音频处理对象实现 - APO。 有关详细信息,请参阅 Windows 音频处理对象。
如果 APO 要公开状态可动态开启或关闭的效果,则需要实现 IAudioSystemEffects3 接口。 有关详细信息,请参阅 IAudioSystemEffects3 接口(audioengineextensionapo.h)。