使用 Microsoft Audio Stack 处理音频

Microsoft 音频堆栈是针对语音处理场景进行了优化的一组增强功能。 这包括关键字识别和语音识别等示例。 它包括对输入音频信号进行操作的各种增强功能/组件:

  • 噪音抑制 - 降低背景噪音水平。
  • 波束成形 - 使用多个麦克风定位声音来源并优化音频信号。
  • 去混响 - 减少环境中表面的声音反射。
  • 回声消除 - 当麦克风输入处于活动状态时,抑制设备播放的音频。
  • 自动增益控制 - 动态调整人的声级,以适应软扬声器、远距离或未校准的麦克风。

Microsoft Audio Stack 的增强功能的方框图。

不同场景和用例可能需要进行不同的优化来影响音频处理堆栈的行为。 例如,在诸如电话通话之类的电信场景中,在应用了处理之后,音频信号中的轻微失真是可以接受的。 因为这不影响人们继续高度准确地理解语音。 然而,在回声中听到自己的声音是不可接受的,这也具有扰乱性。 这与语音处理场景形成对比,在语音处理场景中,失真的音频可能会对机器学习语音识别模型的准确度产生不利影响,但可以接受轻微程度的回声残余。

处理是在使用语音 SDK 的纯粹本地环境中进行的。 Microsoft 音频堆栈不会将音频数据流式传输到 Microsoft 的云服务进行处理。 唯一例外是对话听录服务,其中的原始音频将发送到 Microsoft 的云服务进行处理。

Microsoft 音频堆栈为广泛的 Microsoft 产品提供支持:

  • Windows - Microsoft 音频堆栈是使用语音音频类别时的默认语音处理管道。
  • Microsoft Teams Displays 和 Microsoft Teams Room 设备 - Microsoft Teams Displays 和 Teams Room 设备使用 Microsoft 音频堆栈通过 Cortana 提供高质量的免提语音体验。

语音 SDK 集成

语音 SDK 集成 Microsoft 音频堆栈 (MAS),允许任何应用程序或产品对输入音频使用其音频处理功能。 通过语音 SDK 可获得的一些关键 Microsoft 音频堆栈功能包括:

  • 实时麦克风输入和文件输入 - Microsoft 音频堆栈处理可应用于实时麦克风输入、流和基于文件的输入。
  • 选择增强功能 - SDK 允许你禁用单独的增强功能(如残响消除、噪声抑制、自动增益控制和回声消除),以便对方案进行完全的控制。 例如,如果方案不包括呈现需要从输入音频中禁止的输出音频,则可选择禁用回声消除。
  • 自定义麦克风几何 - 此 SDK 允许你提供自己的自定义麦克风几何信息,并支持预设几何,例如线性双麦、线性四麦和环形七麦阵列(有关支持的预设几何的详细信息,请参阅麦克风阵列建议)。
  • 波束赋形角度 - 可提供特定的波束赋形角度来优化源自预定位置(相对于麦克风)的音频输入。

使用 Microsoft 音频堆栈的最低要求

满足以下要求的任何产品或应用程序都可使用 Microsoft 音频堆栈:

  • 原始音频 - Microsoft 音频堆栈需要使用原始的(未经处理的)音频作为输入以获得最佳效果。 提供已处理的音频会限制音频堆栈以高质量执行增强功能的能力。
  • 麦克风几何结构 - 要正确执行 Microsoft 音频堆栈提供的所有增强功能,需要获得设备上每个麦克风的几何结构信息。 该信息包括麦克风数量、其物理排列和坐标。 最多支持 16 个输入麦克风通道。
  • 环回或参考音频 - 执行回声消除需要一个提供设备正在播放的音频的音频通道。
  • 输入格式 - Microsoft 音频堆栈支持对是 16 kHz 整数倍的采样率进行降采样。 要求最低采样率为16 kHz。 此外,还支持以下格式:32 位 IEEE little endian 浮点、32 位 little endian 有符号整数、24 位 little endian 有符号整数、16 位 little endian 有符号整数和 8 位有符号整数。