音频信号处理模式
驱动程序会为每个设备声明支持的音频信号处理模式。
可用的信号处理模式
音频类别(由应用程序选择)映射到音频模式(由驱动程序定义)。 Windows 定义了七种音频信号处理模式。 OEM 和 IHV 可以确定要实现的模式。 建议 IHV/OEM 利用新模式添加音频效果,以优化音频信号来提供最佳用户体验。 下方所示的表中汇总了这些模式。
模型 | 呈现/捕获 | 说明 |
---|---|---|
原始 | 推送、请求和匿名 | 原始模式指定不应对流应用任何信号处理。 应用程序可以请求完全未触及的原始流并执行其自己的信号处理。 |
默认 | 推送、请求和匿名 | 此模式定义默认音频处理。 |
电影* | 呈现 | 电影音频播放 |
媒体* | 推送、请求和匿名 | 音乐音频播放(大多数媒体流的默认值) |
语音* | Capture | 人声捕获(例如,个人助手的输入) |
通信* | 推送、请求和匿名 | VOIP 呈现和捕获(例如,Teams、Skype、Lync) |
通知* | 呈现 | 铃声、闹钟、警报等。 |
* Windows 10 中的新增功能。
信号处理模式驱动程序要求
音频设备驱动程序至少需要支持原始模式或默认模式。 支持其他模式是可选的。
并非所有模式都可用于特定系统。 驱动程序定义它们支持的信号处理模式(即作为驱动程序的一部分安装的 APO 类型),并相应地通知 OS。 如果驱动程序不支持特定模式,则 Windows 将使用下一个最佳匹配模式。
下图显示了支持多种模式的系统:
Windows 音频流类别
为了通知系统音频流的使用情况,应用程序可以选择使用特定的音频流类别标记该流。 应用程序可以在创建音频流后使用任何音频 API 设置音频类别。 在 Windows 中,有 9 个音频流类别。
类别 | 说明 |
---|---|
电影 | 电影,带对话框的视频(替换 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 处理。 应用程序还可以要求在效果或原始处理状态更改时收到通知。 应用程序可以使用此信息来确定特定流式处理类别(如通信)是否可用,或者是否仅使用 RAW 模式。 如果只有 RAW 模式可用,应用程序可以确定要添加的音频处理量。
如果 System.Devices.AudioDevice.RawProcessingSupported 为 true,应用程序还可以选择在特定流上设置“使用 RAW”标志。 如果 System.Devices.AudioDevice.RawProcessingSupported 为 false,应用程序将无法设置“使用 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 由具有 KSDATARANGE 结构的模式感知驱动程序使用,这些驱动程序包含 KSATTRIBUTE_LIST。 此列表包含一个元素,即 KSATTRIBUTE。 KSATTRIBUTE 结构的 Attribute 成员设置为 KSATTRIBUTEID_AUDIOSIGNALPROCESSING_MODE。
音效
以下音频效果可用于 Windows 10。
音频效果 | 说明 |
---|---|
回声消除 (AEC) | 回声消除 (AEC) 通过在音频流中存在回声后删除回声来提高音频质量。 |
噪声抑制 (NS) | 简单噪音抑制 (NS) 会抑制音频流中存在的噪音,例如蜂鸣和嘈杂声。 |
深度噪音抑制 | 深度噪音抑制使用高级 AI/机器学习技术来抑制噪音,尤其是在语音呼叫中。 |
自动增益控制 (AGC) | 自动增益控制 (AGC) - 旨在在其输出中提供受控信号振幅,尽管输入信号中出现振幅变化。 平均或峰值输出信号级别用于将输入到输出增益动态调整为合适的值,从而实现稳定的输出级别,即使输入信号级别很宽也是如此。 |
波束成形 (BF) | 波束成形 (BF) 是用于定向信号传输或接收的信号处理技术。 这是通过将分阶段数组中的元素组合在一起来实现的,这样一来,特定角度的信号会经历相长干涉,而另一些信号则会经历相消干涉。 与全向接收/传输相比,改进称为接收/传输增益(或损失)。 |
恒定音调去除 | 恒定音调去除用于衰减恒定的背景噪音,如磁带噪声、电扇或嗡嗡声。 |
均衡器 | 均衡器效果用于使用线性筛选器更改音频系统的频率响应。 这允许提升信号的不同部分,类似于高音或低音设置。 |
响度均衡器 | 响度均衡器效果通过调配音频输出来减少感知到的音量差异,以便更响亮和更安静的声音接近平均响度级别。 |
低音增强 | 在具有低音功能受限的扬声器的系统(例如笔记本电脑)中,有时可以通过提升扬声器支持的频率范围内的低音响应来提高感知到的音频质量。 低音增强可通过增大中低音范围的增益,提高具有非常小的扬声器的移动设备上的声音。 |
虚拟环绕 | 虚拟环绕使用简单的数字方法将多声道信号组合成两个声道。 这种方式允许转换后的信号还原到原始多声道信号,使用大多数新式音频接收器中提供的 Pro Logic 解码器。 虚拟环绕非常适合具有双声道声音硬件的系统和具有环绕声增强机制的接收器。 |
虚拟耳机 | 虚拟化环绕声可让佩戴耳机的用户分辨前后和左右的声音。 这是通过传送空间线索来实现的,空间线索可以帮助大脑定位声音并将其整合到声场中。 这样做的效果是让声音感觉超越了耳机,打造出一种“头外”听觉体验。 通过使用称为头相关传输函数 (HRTF) 的先进技术来实现此效果。 HRTF 会生成基于人头形状的声学提示。 这些提示不仅有助于侦听器定位声音的方向和源,而且还可增强侦听器周围的声学环境类型。 |
扬声器填充 | 大多数音乐只使用两个声道制作,因此,并没有针对典型音频或视频爱好者的多声道音频设备进行优化。 因此,从左前和右前扬声器发出音乐是一种不太理想的音频体验。 扬声器填充模拟多声道扬声器设置。 它可以让原本只能在两个扬声器上听到的音乐在房间里的所有扬声器上播放,从而增强了空间感。 |
房间修正 | 房间校正通过自动计算延迟、频率响应和增益调整的最佳组合,优化房间中特定位置的聆听体验,例如沙发的中央软垫。 房间校正功能可以更好地将声音与视频屏幕上的图像相匹配,在桌面扬声器放置在非标准位置的情况下也很有用。 房间校正处理是对高端接收器中类似功能的改进,因为它更好地说明了人类耳朵处理声音的方式。 校准是在麦克风的帮助下执行的,该过程可与立体声和多声道系统一起使用。 用户将麦克风放置在用户想要坐的位置,然后激活用于测量房间响应的向导。 向导依次从每个扬声器播放一组专门设计的音调,并测量每个扬声器与麦克风位置的距离、频率响应和总增益。 |
低音管理 | 有两种低音管理模式:正向低音管理和反向低音管理。 正向低音管理会筛选出音频数据流的低频内容。 正向低音管理算法关于根据可处理深低音频率的声道,将筛选的输出重定向到低音炮或左前和右前扬声器声道。 此决定基于 LRBig 标志的设置。 若要设置 LRBig 标志,用户可使用“控制面板”中的“声音”小程序访问“低音管理设置”对话框。 用户可选中复选框,以指示(例如)左前和右前扬声器是全范围,此操作会设置 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)
BASS 管理
#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 要公开其状态可以动态打开或关闭的效果,则 APO 需要实现 IAudioSystemEffects3
接口。 有关详细信息,请参阅 IAudioSystemEffects3 接口 (audioengineextensionapo.h)。