如何提升性能
Windows 平台使用 Vulkan 进行 GPU 加速,这显著提升了识别过程的速度。在其他平台上,该插件使用 CPU + intrinsics 进行加速。然而,您可以通过以下建议进一步提高插件的性能:
-
减少步长(Step Size)
默认情况下,步长为 5000 毫秒(5 秒),意味着音频数据每 5 秒被识别一次。如果希望更频繁地识别音频数据,可以减少步长,例如设为 500 毫秒(0.5 秒)。
-
使用更小的语言模型
您可以考虑使用更小的语言模型,例如
Tiny Quantized (Q5_1)
,以减少模型大小并提高性能。如何选择语言模型的说明可以在这里找到。 -
优化识别状态管理
在处理麦克风输入时,避免不必要地停止和启动语音识别器。频繁调用
StopSpeechRecognition
和StartSpeechRecognition
需要重新分配资源,因此建议直接控制音频输入。例如,使用可捕获音波时,可以调用StopCapture
和StartCapture
来管理音频流,同时保持识别线程活跃。 -
修改 CPU 指令集
插件使用的底层库是 whisper.cpp,该库利用 CPU 指令集来提升识别性能。目前,由于 UE 限制了编译器标志的传递,插件代码中的指令集是硬编码的,并依据不同的宏进行近似/概率性定义。您可以手动修改 SpeechRecognizerPrivate.h 文件,指定目标平台支持的指令集。以下是 whisper.cpp 目前使用的指令集,您可以在 SpeechRecognizerPrivate.h 文件中手动定义:
-
AVX 和 AVX2 系列:
__AVX__
__AVXVNNI__
__AVX2__
__AVX512F__
__AVX512VBMI__
__AVX512VNNI__
__AVX512BF16__
-
浮点和 SIMD 扩展:
__FMA__
__F16C__
__SSE3__
__SSSE3__
-
ARM 架构扩展:
__ARM_NEON
__ARM_FEATURE_SVE
__ARM_FEATURE_FMA
__ARM_FEATURE_FP16_VECTOR_ARITHMETIC
__ARM_FEATURE_MATMUL_INT8
-
POWER 架构扩展:
__POWER9_VECTOR__
-
-
使用加速库
whisper.cpp 支持使用以下库来加速识别过程:
- Core ML,用于 Apple Silicon 设备
- OpenVINO,适用于 x86 CPU 和 Intel GPU 设备
- Nvidia GPU Cuda,适用于 Windows 或 Linux
- BLAS CPU 支持(通过 OpenBLAS)
- BLAS CPU 支持(通过 Intel MKL)
请注意,这些库默认不包含在插件中,您需要按照 whisper.cpp 的说明手动安装它们。