你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
嵌入式语音模型完全在你的目标设备上运行。 了解设备硬件上这些模型的性能特征对于在产品和应用程序中提供低延迟体验至关重要。 本指南提供信息以帮助回答该问题:“我的设备是否适合运行嵌入式语音转文本和语音翻译模型?”
指标和术语
实时因子 (RTF) - 设备的实时因子 (RTF) 衡量嵌入式语音模型处理音频输入的速度。 它是处理时间与音频长度的比率。 例如,如果设备在 30 秒内处理了 1 分钟的音频文件,则 RTF 为 0.5。 此指标可评估运行嵌入式语音模型的设备的计算能力。 它可以帮助识别速度太慢而无法支持模型的设备。 仅应使用基于文件的输入而不是实时麦克风输入来测量此指标。
若要支持实时和交互式语音体验,设备应具有 1
或更低的 RTF。 高于 1
的 RTF 值意味着设备无法跟上音频输入,这会导致用户体验不佳。
测量设备的 RTF 时,必须测量多个样本并分析各百分位数的分布。 这样,你就可以捕获设备行为变化的影响,例如由于热限制而不同的 CPU 时钟速度。 测量设备上的实时因子中概述的预定义度量测试会自动测量每个语音识别结果的 RTF,从而产生足够大的样本大小。
用户感知延迟 (UPL) - 语音转文本的用户感知延迟 (UPL) 是字词被说出与字词显示在识别结果中相隔的时间。
影响性能的因素
设备规范 - 设备的规范在嵌入式语音模型是否可以正常运行且没有性能问题方面发挥关键作用。 CPU 时钟速度、体系结构(例如 x64、ARM 处理器等)和内存都会影响模型推理速度。
CPU 负载 - 在大多数情况下,你的设备会运行其他应用程序,与集成嵌入式语音模型的应用程序并行。 你的设备在空闲和高峰期经历的 CPU 负载量也可能会影响性能。
例如,如果设备上运行的所有其他应用程序让设备处于中到高的 CPU 负载,那么如果将嵌入式语音与其他应用程序一起运行,则可能会遇到性能问题,即使有强大的处理器也是如此。
内存负载 - 嵌入式语音转文本模型在运行时消耗 200-300 MB 的内存。 如果设备可用于嵌入式语音进程的内存较少,则频繁回退到虚拟内存和分页可能会导致更多的延迟。 这可能会影响实时因子和用户感知延迟。
内置性能优化
所有嵌入式语音转文本模型都附带语音活动检测器 (VAD) 组件,旨在从音频输入中筛掉静默和非语音内容。 目标是减少 CPU 负载和其他语音转文本模型组件的处理时间。
VAD 组件始终打开,不需要开发人员进行任何配置。 当音频输入具有不可忽略的静默或非语音内容量时,效果最佳,这在字幕、命令和听写等场景中很常见。
测量设备上的实时因子
对于所有嵌入式语音支持的平台,GitHub 上提供了一个代码示例,其中包含性能度量模式。 在此模式下,目标是通过控制尽可能多的变量来度量设备的实时因子 (RTF):
模型 - 英语(美国)模型用于度量。 所有其他受支持的区域设置的模型遵循类似的性能特征,因此通过英语(美国)模型进行测量就足够了。
音频输入 - 专为 RTF 度量设计的预生成音频文件作为示例代码的补充下载提供。
度量机制 - 在示例中预配置了时间度量的开始和停止标记,以确保在不同设备和测试迭代之间比较结果的准确性和简便性。
此度量应使用直接在目标设备上运行的示例来完成,除了指定模型路径和加密密钥之外,不做代码更改。 设备所处的状态应代表使用嵌入式语音时最终用户的真实状态(例如,其他活动应用程序、CPU 和内存负载等)。
运行示例将生成输出到控制台的性能指标。 完整的指标套件包括实时因子以及其他属性,例如 CPU 使用率和内存消耗。 下面定义和说明了每个指标。
指令集指标
指标 | 说明 | 说明 |
---|---|---|
AVX512Supported | 如果 CPU 支持 AVX512 指令集,则为 True。 | 此标志适用于 X64 平台。 ONNX 运行时对各种指令集进行了优化,此信息有助于诊断不一致的情况。 |
AVXSupported | 如果 CPU 支持 AVX 指令集,则为 True。 | 此标志适用于 X64 平台。 ONNX 运行时对各种指令集进行了优化,此信息有助于诊断不一致的情况。 |
AVX2Supported | 如果 CPU 支持 AVX2 指令集,则为 True。 | 此标志适用于 X64 平台。 ONNX 运行时对各种指令集进行了优化,此信息有助于诊断不一致的情况。 |
SSE3Available | 如果 CPU 支持 SSE3 指令集,则为 True。 | 此标志适用于 X64 平台。 ONNX 运行时对各种指令集进行了优化,此信息有助于诊断不一致的情况。 |
NEONAvailable | 如果 CPU 支持 NEON 指令集,则为 True。 | 此标志适用于 ARM 处理器平台。 ONNX 运行时对各种指令集进行了优化,此信息有助于诊断不一致的情况。 |
NPU | 神经网络处理单元的名称,如果未找到,则为 N/A。 | 此标志适用于硬件加速。 |
内存指标
跃点数 | 说明 | 说明 |
---|---|---|
PagefileUsage | 进程使用的页文件量。 为 Linux 和 Windows 实现。 | 值相对于计算机配置。 |
WorkingSetSize | 用于进程的内存量。 | |
ProcessCPUUsage | 进程的 CPU 使用率的聚合。 | 包括进程中的所有线程,包括语音 SDK 和 UI 线程。 跨所有核心聚合。 |
ThreadCPUUsage | 语音识别或语音翻译线程的 CPU 使用率的聚合。 |
性能指标
指标 | 说明 | 说明 |
---|---|---|
RealTimeFactor | 测量嵌入式语音引擎处理音频的速度比实时快多少。 包括音频加载时间。 | 值大于 1 表示引擎处理音频的速度比实时慢。 值小于 1 表示引擎处理音频的速度比实时快。 此值应仅在基于文件的输入模式下进行分析。 不应在流式处理输入模式下分析它。 |
StreamingRealTimeFactor | 测量引擎处理音频的速度比实时快多少。 排除音频加载时间。 | 值大于 1 表示引擎处理音频的速度比实时慢。 值小于 1 表示引擎处理音频的速度比实时快。 |