SteamVR image translation, voice input, live subtitles, and spatial utility overlays for Windows.
C#
6
39 commits
updated Sep 21, 2026
SteamVRTranslator.exe。650 ms,打开或关闭 VR 控制面板。在“图像翻译 → 叠加层配色”中选择“经典绿色”“浅色”或“黑白”。经典绿色保留原有外观;浅色使用浅底、深色文字和蓝色强调色;黑白使用黑底、白字和灰阶边框及强调色。每项颜色旁均有“选择颜色”按钮,点击打开系统颜色选择器,可在任意预设的基础上修改背景、文字、强调色和边框。点击“应用配色”后自动切换为“自定义”并保存;取消颜色选择不会修改原值。切换预设会保留已保存的自定义颜色。
配色会即时应用到管理器、VR 控制面板、翻译与对话窗口、字幕、语音回显、截图工具栏和手机镜像的窗口边框,无需重启或重建浮窗。截图、手机画面和 HTML 排版翻译的内容保留自身颜色。
可选的“在面前显示语音文本回显(VR)”可在桌面语音设置或 VR 控制面板的“回显”开关中启用,默认关闭。回显使用大字和宽幅长行,首次显示时放在前方约 1.2 米、略低于眼睛的位置,随后固定在 SteamVR 空间中,不随头部移动或转动。宽高随内容自适应:短句收紧,长句先加宽至最多约 1.6 米,再换行增加高度;文字的实际字号不随框体尺寸缩小。左上角保持固定,面板向右下方伸缩。浮窗只显示识别结果和实际通过 OSC 发送的当前文本段,没有文本时隐藏。
浮窗仅用于显示,不响应点击、滚动、抓取或拖动,也没有可操作的控制栏。仅自己可见,完成后保留 12 秒;显示期间再次录音会立即清空旧内容并复用同一个浮窗及空间定位,新的结果完成后重新计时。自动隐藏或关闭开关后,下一次输入才重新放置到当前面前,仍复用同一个浮窗。没有有效头显定位时等待定位恢复再显示。关闭开关会立即隐藏,启用后从下一次输入开始显示,无需重新加载模型。回显以本机 OSC 发出内容为准,不代表 VRChat 已确认接收。
127.0.0.1:9000。Ctrl,可在管理器中重新捕获并绑定其他按键。sounds/voice-cues 中,原文件可以移动或删除。提示音和回响默认关闭,设置随启动服务保存,修改或卸载驱动前请先停止服务。回响使用 Windows 默认扬声器或耳机,音量与提示音一致;本机播放失败不会中断游戏通道。在同一区域点击“卸载”会调用官方卸载程序,也会影响其他使用 VB-CABLE 的程序。安装或卸载后请重启 Windows。设备不可用时,启用开关和发送测试按钮会禁用,正在发送的提示音也会停止;仍可本机试听。
更新或搬移程序时,请保留 appsettings.json 和 sounds 文件夹。自定义文件缺失或损坏时,试听会提示原因;正式服务会为该阶段回退到内置音效并记录日志,语音识别继续运行。
VB-CABLE 安装可能让 Windows 自动改变默认音频设备。程序会记录安装前的默认设备,并在发现它们被改为 VB-CABLE 时尝试恢复;如果恢复失败会提示检查声音设置。游戏麦克风设置仍由游戏管理。游戏降噪或语音门限可能过滤白噪声,可使用测试播放检查接收效果。
VB-CABLE 由 VB-Audio Software 提供,采用 Donationware 模式,欢迎捐赠支持。软件使用和分发适用其许可条款。下载、验证和设备连接说明见 VB-CABLE 集成文档。本项目不再构建或分发自研音频驱动。
监听会先在后台准备识别引擎,再连接当前 SteamVR 场景进程。语音输入、字幕和文件重放在模型、运行时、语言及 CPU/GPU 配置相同时共用常驻 SenseVoice;语音输入已预热时,字幕开启或重启不会重复加载。识别请求串行执行,语音输入优先于等待中的字幕。停止字幕只取消它自己的任务,最后一个使用者退出后才卸载模型。设置变更在当前音频段处理结束后生效。状态说明及排查方法见 字幕生命周期与诊断。
Pyannote 说话人分段和 ERes2Net 声纹模型由字幕模块单独常驻管理,语音输入不加载它们。首次使用时加载,连续分段和暂停后重启监听均可复用;关闭字幕功能、停止服务或退出程序时释放。
程序配置、运行时、模型、截图和日志都保存在安装目录内:
appsettings.json
captures/
logs/
models/
runtimes/
runtime-data/
vibevoice-service/data/
构建环境:
在仓库根目录执行:
./build.ps1
发布包不捆绑 VB-CABLE 二进制文件;用户可在程序中从官网下载。构建无需 WDK、C++ 编译器或自购驱动签名证书。
默认生成依赖 .NET 8 Desktop Runtime 的版本:
artifacts/win-x64/SteamVRTranslator.exe
artifacts/win-x64/vibevoice-service/SteamVRTranslator.VibeVoice.Server.exe
artifacts/SteamVRTranslator-win-x64.zip
生成自包含版本:
./build.ps1 -SelfContained
执行全部自动化测试:
dotnet test SteamVRTranslator.sln
仅验证 Release 构建:
dotnet build SteamVRTranslator.sln -c Release
构建脚本会通过 fetch-openvr.ps1 获取并校验固定版本的 Valve OpenVR 原生运行时。原生 DLL、模型、运行时、构建产物和捕获图片不会提交到 Git。
C#
97.4%
Python
1.7%
SteamVR image translation, voice input, live subtitles, and spatial utility overlays for Windows.
C#
6
39 commits
updated Sep 21, 2026
SteamVRTranslator.exe。650 ms,打开或关闭 VR 控制面板。在“图像翻译 → 叠加层配色”中选择“经典绿色”“浅色”或“黑白”。经典绿色保留原有外观;浅色使用浅底、深色文字和蓝色强调色;黑白使用黑底、白字和灰阶边框及强调色。每项颜色旁均有“选择颜色”按钮,点击打开系统颜色选择器,可在任意预设的基础上修改背景、文字、强调色和边框。点击“应用配色”后自动切换为“自定义”并保存;取消颜色选择不会修改原值。切换预设会保留已保存的自定义颜色。
配色会即时应用到管理器、VR 控制面板、翻译与对话窗口、字幕、语音回显、截图工具栏和手机镜像的窗口边框,无需重启或重建浮窗。截图、手机画面和 HTML 排版翻译的内容保留自身颜色。
可选的“在面前显示语音文本回显(VR)”可在桌面语音设置或 VR 控制面板的“回显”开关中启用,默认关闭。回显使用大字和宽幅长行,首次显示时放在前方约 1.2 米、略低于眼睛的位置,随后固定在 SteamVR 空间中,不随头部移动或转动。宽高随内容自适应:短句收紧,长句先加宽至最多约 1.6 米,再换行增加高度;文字的实际字号不随框体尺寸缩小。左上角保持固定,面板向右下方伸缩。浮窗只显示识别结果和实际通过 OSC 发送的当前文本段,没有文本时隐藏。
浮窗仅用于显示,不响应点击、滚动、抓取或拖动,也没有可操作的控制栏。仅自己可见,完成后保留 12 秒;显示期间再次录音会立即清空旧内容并复用同一个浮窗及空间定位,新的结果完成后重新计时。自动隐藏或关闭开关后,下一次输入才重新放置到当前面前,仍复用同一个浮窗。没有有效头显定位时等待定位恢复再显示。关闭开关会立即隐藏,启用后从下一次输入开始显示,无需重新加载模型。回显以本机 OSC 发出内容为准,不代表 VRChat 已确认接收。
127.0.0.1:9000。Ctrl,可在管理器中重新捕获并绑定其他按键。sounds/voice-cues 中,原文件可以移动或删除。提示音和回响默认关闭,设置随启动服务保存,修改或卸载驱动前请先停止服务。回响使用 Windows 默认扬声器或耳机,音量与提示音一致;本机播放失败不会中断游戏通道。在同一区域点击“卸载”会调用官方卸载程序,也会影响其他使用 VB-CABLE 的程序。安装或卸载后请重启 Windows。设备不可用时,启用开关和发送测试按钮会禁用,正在发送的提示音也会停止;仍可本机试听。
更新或搬移程序时,请保留 appsettings.json 和 sounds 文件夹。自定义文件缺失或损坏时,试听会提示原因;正式服务会为该阶段回退到内置音效并记录日志,语音识别继续运行。
VB-CABLE 安装可能让 Windows 自动改变默认音频设备。程序会记录安装前的默认设备,并在发现它们被改为 VB-CABLE 时尝试恢复;如果恢复失败会提示检查声音设置。游戏麦克风设置仍由游戏管理。游戏降噪或语音门限可能过滤白噪声,可使用测试播放检查接收效果。
VB-CABLE 由 VB-Audio Software 提供,采用 Donationware 模式,欢迎捐赠支持。软件使用和分发适用其许可条款。下载、验证和设备连接说明见 VB-CABLE 集成文档。本项目不再构建或分发自研音频驱动。
监听会先在后台准备识别引擎,再连接当前 SteamVR 场景进程。语音输入、字幕和文件重放在模型、运行时、语言及 CPU/GPU 配置相同时共用常驻 SenseVoice;语音输入已预热时,字幕开启或重启不会重复加载。识别请求串行执行,语音输入优先于等待中的字幕。停止字幕只取消它自己的任务,最后一个使用者退出后才卸载模型。设置变更在当前音频段处理结束后生效。状态说明及排查方法见 字幕生命周期与诊断。
Pyannote 说话人分段和 ERes2Net 声纹模型由字幕模块单独常驻管理,语音输入不加载它们。首次使用时加载,连续分段和暂停后重启监听均可复用;关闭字幕功能、停止服务或退出程序时释放。
程序配置、运行时、模型、截图和日志都保存在安装目录内:
appsettings.json
captures/
logs/
models/
runtimes/
runtime-data/
vibevoice-service/data/
构建环境:
在仓库根目录执行:
./build.ps1
发布包不捆绑 VB-CABLE 二进制文件;用户可在程序中从官网下载。构建无需 WDK、C++ 编译器或自购驱动签名证书。
默认生成依赖 .NET 8 Desktop Runtime 的版本:
artifacts/win-x64/SteamVRTranslator.exe
artifacts/win-x64/vibevoice-service/SteamVRTranslator.VibeVoice.Server.exe
artifacts/SteamVRTranslator-win-x64.zip
生成自包含版本:
./build.ps1 -SelfContained
执行全部自动化测试:
dotnet test SteamVRTranslator.sln
仅验证 Release 构建:
dotnet build SteamVRTranslator.sln -c Release
构建脚本会通过 fetch-openvr.ps1 获取并校验固定版本的 Valve OpenVR 原生运行时。原生 DLL、模型、运行时、构建产物和捕获图片不会提交到 Git。
C#
97.4%
Python
1.7%