Vosk 扩展
默认情况下,Runtime Speech Recognizer 插件使用 whisper.cpp 进行识别。在 whisper.cpp 不支持 GPU 加速的平台上,最典型的是 Android 以及基于 Android 的平台(如 Meta Quest),识别会回退到 CPU + 内部指令集,速度较慢且更耗电。Vosk 扩展插件提供了一种基于 Vosk 的替代提供程序,Vosk 是一个轻量级语音识别工具包,在硬件受限的设备上表现出色,在 Meta Quest 上表现尤为出色。
在 whisper.cpp 和 Vosk 之间切换只需要几个 Blueprint 节点,切换回来也同样简单,因此你可以同时保留这两个选项,并在需要时按平台选择提供商。
安装
要使用Vosk扩展:
-
确保主要的 Runtime Speech Recognizer 插件已安装在您的项目中。
-
从这里下载 Vosk 扩展插件
-
将下载的压缩包中的文件夹解压到您项目的
Plugins文件夹中(如果该文件夹不存在,请创建它)。 -
重新生成你的项目(此扩展需要 C++ 项目)
-
Vosk 扩展支持 Unreal Engine 5.0 至 5.8。
-
此扩展以源代码形式提供,需要使用 C++ 项目。
-
如需了解如何手动构建插件的更多信息,请参阅构建插件教程
切换到 Vosk 提供商
安装插件后,将语音识别器切换为 Vosk 只需三个节点,就在 CreateSpeechRecognizer 之后:

- 调用 Set Speech Recognizer Provider,传入 Vosk 提供程序类。
- 对结果执行 Cast To Runtime Vosk Speech Recognizer Provider。
- 对转换结果调用 Set Vosk Model Path (By Name),从下拉菜单中选择一个已下载的模型。
您现有设置中的其他所有内容(Start Speech Recognition、Process Audio Data、委托、VAD 等)均保持原样工作,无需修改。要切换回 whisper.cpp,请移除这三个节点,或者完全不调用 Set Speech Recognizer Provider,因为 whisper.cpp 是默认选项。
正在下载 Vosk 模型
Vosk 模型从项目设置 -> 插件 -> Runtime Speech Recognizer Vosk中下载和管理。该面板按语言分组列出预定义的模型目录,每个条目都有一个下载按钮,在下载和解压过程中会显示进度条,当模型已保存在磁盘上后,会出现一个删除按钮。

下载的模型会解压到 Content/RuntimeSpeechRecognizerVosk/Models 下,插件会自动处理将该文件夹暂存以用于打包。你也不仅限于使用单个打包模型:任何下载的模型都会保持可用,并且可以在运行时通过 Set Vosk Model Path (By Name) 进行选择。在 Android 上,模型文件随打包应用一同发布,首次使用时会被复制到持久存储中;这一过程在模型被选中时由插件内部自动处理。
支持的语言(点击展开)
预定义目录包含以下语言的模型:英语、印度英语、中文、俄语、法语、德语、西班牙语、葡萄牙语/巴西葡萄牙语、希腊语、土耳其语、越南语、意大利语、荷兰语、加泰罗尼亚语、阿拉伯语、突尼斯阿拉伯语、波斯语、菲律宾语、乌克兰语、哈萨克语、瑞典语、日语、世界语、印地语、捷克语、波兰语、乌兹别克语、韩语、布列塔尼语、古吉拉特语、塔吉克语、泰卢固语、吉尔吉斯语和格鲁吉亚语,以及一个专用的说话人识别模型。
有些语言在面板中有多种变体(例如,一个适合移动设备硬件的小型模型,外加一个更大、更精确的模型),因此值得直接在项目设置面板中查看目标语言可用的选项,而不是假设只有一种。请参阅完整的 Vosk 模型列表,了解各变体在准确性、大小和许可方面的详细信息。
参数和行为
Vosk 是一个与 whisper.cpp 根本不同的识别器,因此 识别参数列表 中的大多数条目都不适用于它。在 Vosk 提供程序上调用不支持的 setter 不会产生任何效果,因此为 whisper.cpp 编写的 Blueprint 逻辑在切换提供程序后无需修改即可继续正常工作。确实对 Vosk 产生作用的函数有:
- 设置语言:选择使用哪种语言的模型。Vosk 不支持自动语言检测,因此如果您将语言设置为“自动”,该设置会被忽略。
- 设置步长:在发送识别之前累积多少音频,机制与 whisper.cpp 相同。由于 Vosk 是流式识别器,较小的值(Vosk 提供程序默认为 200 毫秒)可保持部分结果的响应速度。
- 设置最大 Token 数:在 Vosk 中被重新定义用途,详见下文。
设置 Max Tokens 和流式输出
Set Max Tokens 参数控制 Vosk 提供程序如何通过 On Recognized Text Segment 传递识别文本:
- 0(默认):文本在内部累积,并在识别完成后作为一个完整的片段交付,要么通过 VAD 触发的停止(如 语音激活命令识别 或 自动初始化语音识别 示例),要么通过你项目中调用 Stop Speech Recognition 或强制传递最后一个音频块的任何逻辑。这与 whisper.cpp 使用的基于片段的行为一致。
- 大于 0:提供程序切换到流式模式。它不再等待完整片段,而是在识别过程中广播部分结果,每次都用同一短语的更长版本替换上一次的结果,直到该片段完成,文本重置以用于下一个片段。一个简短的语音在 On Recognized Text Segment 的多次广播中可能如下所示:
"The"
"The cat"
"The cat is"
"The cat is sleeping"
确切的数值对 Vosk 本身来说并不重要,因为它没有内置的 token 限制。任何大于 0 的值都会启用流式传输。
由于部分结果仅按音频入队的频率到达(由 Set Step Size 控制),请将较低的 Max Tokens 与较小的 Step Size 搭配使用,以获得响应灵敏的实时输出。
平台支持
Vosk 扩展可在 Windows、Android 以及 Meta Quest 等基于 Android 的平台上运行。它在 Android 和 Meta Quest 上最为实用,因为 whisper.cpp 在这些平台上没有 GPU 加速路径,而且它在 Meta Quest 上表现尤其出色。如果你已经在使用 Windows 或其他支持 Vulkan 或 Metal 加速的桌面平台,whisper.cpp 可能是更好的默认选择。Vosk 旨在作为 whisper.cpp 表现最弱的平台上的替代方案。
高级:直接使用模型
项目设置面板涵盖了大多数项目的模型下载和删除。如果你的项目需要直接处理模型,而不是依赖编辑器面板,例如在运行时检查可用性或管理文件,插件会公开底层库函数:
- Get Available Vosk Model Names:返回当前即可使用的模型名称,无论这些模型是已经解压到磁盘,还是仅打包完成并等待首次使用。这就是 Set Vosk Model Path (By Name) 下拉列表中选项的来源。
- Is Vosk Model Available:与上述检查相同,按 ID 对单个模型进行检查。
- Get Vosk Models Directory:返回运行时读取模型所在目录的绝对路径。
- Get Vosk Model Folder Path:返回磁盘上特定模型文件夹的绝对路径。
- Delete Vosk Model Files:从磁盘删除模型的已解压文件。