资讯动态

LiveCaptions-Translator 实战指南:基于 Windows 实时字幕与多翻译引擎的实时语音翻译工具

发布时间:2026/10/15 5:46:42 来源:尧图企业网站定制
桌面应用语音AI 应用【免费下载链接】LiveCaptions-TranslatorLightweight and powerful real-time audio/speech translation tool based on Windows LiveCaptions.项目地址https://gitcode.com/gh_mirrors/li/LiveCaptions-Translator点击查看免费下载LiveCaptions-Translator 是一个基于 Windows 11 内置 LiveCaptions实时字幕能力的轻量级实时语音翻译工具它把「本地高精度语音识别」与「云端或本地 LLM 翻译」无缝拼接识别由 Windows 完成翻译交给 API 完成因此不需要 Copilot PC 也能获得接近同传的体验。本文以项目官方 README 为主线结合仓库源码src/目录讲解其运行原理、环境准备、功能特性、翻译引擎配置与数据存储机制读完你即可上手安装配置并理解其底层「三循环 UIAutomation 读字幕」的实现骨架。项目定位Windows LiveCaptions Translate APIREADME 开篇用一句话概括了本项目的本质LiveCaptions Translator Windows LiveCaptions Translate APIWindows 内置的实时字幕LiveCaptions自 Windows 11 22H2 起可用简单易用、资源占用低且在设备端完成语音识别、准确率极高。项目所做的工作就是通过 UI Automation 自动启动并读取 LiveCaptions 的识别文本再把句子交给可插拔的翻译引擎尤其推荐 LLM实时翻译最终在主窗口、悬浮窗口等多个界面呈现双语结果。核心工程入口位于 src/Translator.cs它是一个贯穿全局的静态枢纽负责窗口句柄、字幕单例、设置对象、文本队列与翻译任务队列的协调。系统要求与前置条件根据 README 的「Prerequisites」章节运行环境有两条硬性约束要求说明Windows 1122H2必须支持 LiveCaptions 功能.NET 8.0推荐安装未在更早版本上测试本项目基于 Windows LiveCaptions该功能自Windows 11 22H2开始提供更早的系统无法使用。建议安装.NET 运行时 8.0或更高版本如果无法安装可从发布页面下载with runtime版本文件体积更大但免安装运行时。工程文件 LiveCaptionsTranslator.csproj 确认目标框架为net8.0-windows输出WinExe使用 WPFUseWPF并声明了win-x64;win-arm64两个运行时标识说明项目同时面向 x64 与 ARM64 平台发布。快速开始首次运行前的两步准备README 特别强调首次运行 LiveCaptions-Translator 之前必须先完成以下两个步骤。步骤 1验证 Windows LiveCaptions 可用性用以下任意一种方式确认系统可用 LiveCaptions在快速设置Quick settings中切换实时字幕按下Win Ctrl L通过快速设置 辅助功能 实时字幕访问打开开始 所有应用 辅助功能 实时字幕导航至设置 辅助功能 字幕并启用实时字幕。步骤 2配置 Windows LiveCaptions首次启动 LiveCaptions 时Windows 会请求你同意在设备上处理语音数据并提示下载用于设备端语音识别的语言文件见下图属于语音识别所需组件。启动 Windows LiveCaptions 后点击⚙️ 齿轮图标打开设置菜单然后选择位置 覆盖在屏幕上Overlaid on screen。⚠️非常重要必须选择「覆盖在屏幕上」否则程序隐藏 LiveCaptions 窗口后屏幕上会出现显示 BUG。完成上述配置后关闭 Windows LiveCaptions再启动 LiveCaptions Translator 即可开始使用。首次启动流程源码侧首次使用时会自动完成 LiveCaptions 的接管。在 src/Translator.cs 的静态构造函数中可以看到LiveCaptionsHandler.LaunchLiveCaptions()自动拉起 LiveCaptions 进程FixLiveCaptions()对异常窗口位置做修复例如窗口坐标或尺寸异常时调用MoveWindow重置为 800×600/600×200见 src/utils/LiveCaptionsHandler.csHideLiveCaptions()通过SetWindowLong为窗口附加WS_EX_TOOLWINDOW样式并最小化使其从任务栏/Alt-Tab 中消失若当前目录不存在setting.jsonmodels.Setting.FILENAME则置FirstUseFlag true主窗口加载后会导航到设置页并弹出 src/windows/WelcomeWindow.xaml 欢迎窗口同时恢复显示 LiveCaptions 供用户核对。退出程序时App.OnProcessExit见 src/App.xaml.cs程序会先RestoreLiveCaptions还原窗口再KillLiveCaptions关闭 LiveCaptions 进程避免残留。功能特性与界面一览无缝集成自动接管实时字幕程序运行后会自动调用 Windows LiveCaptions无需用户手动打开单独窗口为实时音频/语音翻译提供统一体验。首次使用后Windows LiveCaptions 默认被隐藏你可以在设置页Setting 页面的LiveCaptions区域点击Show / Hide按钮随时显示或再次隐藏它。实现实时语音翻译的关键在 Windows LiveCaptions 自己的设置中启用包含麦克风音频Include microphone audio选项即可让系统识别你麦克风中的语音实现实时语音翻译。⚠️重要必须在 Windows LiveCaptions 中更改源语言Source Language使其与你实际使用的语言一致。设置页中的 Flyout 也提示Windows 11 24H2 之后只能在 LiveCaptions 内部修改源语言。识别文本由 src/utils/LiveCaptionsHandler.cs 通过 UI Automation 查找AutomationId CaptionsTextBlock的元素读取GetCaptions这是整个「读字幕」链路的核心。主界面预览如下图所示现代化 Fluent UI 与主题跟随界面采用易于使用的简洁 Fluent UI与现代 Windows 美学保持一致并且会根据系统设置自动在浅色/深色主题间切换。源码层面src/windows/MainWindow.xaml.cs 在窗口加载时调用ApplicationThemeManager.ApplySystemTheme()并SystemThemeWatcher.Watch(this, WindowBackdropType.Mica, true)监听系统主题所有窗口MainWindow、OverlayWindow、WelcomeWindow、SettingWindow都使用 WPF-UI 的FluentWindow Mica 背景。多种翻译服务含开箱即用的谷歌翻译项目支持多种翻译引擎其中Google 与 Google2 两个谷歌翻译接口开箱即用无需任何配置。完整支持清单如下来自 README 的功能表格API类型托管方式Ollama基于 LLM自托管OpenAI 兼容 API基于 LLM在线OpenRouter基于 LLM在线Google Translate传统翻译在线DeepL传统翻译在线有道翻译传统翻译在线百度翻译传统翻译在线MTranServer传统翻译自托管LibreTranslate传统翻译自托管强烈推荐使用基于 LLM的翻译引擎LLM 擅长处理不完整的句子并能很好地理解上下文这对口语化、被打断的语音识别文本至关重要。在代码中LLM 类引擎还支持「上下文感知」翻译见下文这是传统机器翻译接口不具备的能力。引擎注册表的实现位置在 src/apis/TranslateAPI.csTRANSLATE_FUNCTIONS字典以「引擎名 → 翻译函数」的方式登记了全部 11 个引擎Google、Google2、Ollama、OpenAI、LMStudio、DeepL、OpenRouter、Youdao、MTranServer、Baidu、LibreTranslate设置页的引擎下拉框即来源于此字典的键。悬浮窗口Overlay Window沉浸式字幕悬浮窗口是一个无边框、透明的 Overlay 窗口用于显示字幕适合游戏、视频、直播等场景。你甚至可以开启「点击穿透」使其完全嵌入屏幕、成为屏幕的一部分不影响任何鼠标操作——对游戏玩家非常友好。从 src/windows/OverlayWindow.xaml.cs 可以看到它提供了极其细粒度的可调参数字体字号FontSize默认 15翻译行自动放大为 1.25 倍、粗细FontBold支持无/仅译文/仅字幕/全部四种、描边FontStroke0.0–7.5颜色字体颜色与背景颜色均支持 White/Yellow/LimeGreen/Aqua/Blue/DeepPink/Red/Black 八种Color枚举见 src/utils/StyleEnums.cs透明度背景透明度Opacity1–251步进 25显示模式OnlyMode可切换为「双语 / 仅译文 / 仅字幕」SwitchMode可交换译文与字幕的上下位置点击穿透通过SetWindowLong设置WS_EX_TRANSPARENT扩展样式实现见ClickThrough_Click。以上所有调整都会实时写入setting.json并立即生效鼠标悬停时悬浮窗口会显示临时控制面板。另外设置页中的Overlay SentencesDisplay Sentences控制悬浮窗口同时显示的句子数量范围 0–6该值同时决定主窗口日志卡片的显示数量。灵活控制置顶、暂停与一键复制窗口置顶主窗口标题栏的 Pin 按钮切换Topmost默认开启MainWindowState.Topmost true翻译暂停/恢复标题栏的 Pause 按钮切换LogOnlyFlag——开启后只记录识别文本而不调用翻译 API译文区域显示[Paused]提示见 src/Translator.cs一键复制点击主窗口中的原文/译文文本块即可复制到剪贴板并弹出 Snackbar 提示见 src/pages/CaptionPage.xaml.cs。历史记录管理与 CSV 导出程序会记录原文与翻译文本适合会议、讲座、重要讨论等场景并且可以将全部记录导出为 CSV 文件。历史记录界面支持分页浏览每页 30 条可调、按原文/译文关键字搜索、一键清空以及导出 CSV默认文件名形如exported_2026-10-14_13-39-05.csv保存到「我的文档」目录。底层存储为 SQLite连接串Data Sourcetranslation_history.db见 src/utils/HistoryLogger.cs。首次启动会自动建表CREATE TABLE IF NOT EXISTS TranslationHistory ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Timestamp TEXT, SourceText TEXT, TranslatedText TEXT, TargetLanguage TEXT, ApiUsed TEXT );时间戳以 Unix 秒存储读取时转换为本地时间显示为yyyy-MM-dd HH:mm导出功能使用 CsvHelper按Timestamp DESC全量导出为 UTF-8 带 BOM 的 CSVExportToCSV写入与查询全部基于Microsoft.Data.Sqlite共享连接加锁保证并发安全。日志卡片Log Cards把握上下文最近的转录记录可以以「日志卡片」的形式显示在主界面帮助你更好地把握当前对话上下文。你可以在主页面标题栏的 History 按钮上启用它并在设置页的Log Cards / Display Sentences区域调整卡片数量。每次完整翻译写入历史后最新一条记录会被加入Caption.Contexts队列容量上限MAX_CONTEXTS 10见 src/models/Caption.cs并在界面实时刷新。源码级原理三大循环 UIAutomation 读字幕要理解这个工具「实时」的本质需要看 src/App.xaml.cs应用启动即通过Task.Run并行拉起三个常驻后台循环分工如下。循环方法位于 src/Translator.cs职责SyncLoopSyncLoop()每 25ms 从 LiveCaptions 拉取识别文本预处理、切句、入队TranslateLoopTranslateLoop()每 40ms 从待翻译队列取句调度翻译任务DisplayLoopDisplayLoop()每 40ms 读取翻译结果队列刷新主窗口与悬浮窗口识别文本获取SyncLoop先检查 LiveCaptions 进程是否存活捕获ElementNotAvailableException然后调用LiveCaptionsHandler.GetCaptions()读取字幕元素文本单次读取耗时约 10–20ms。文本预处理管线对识别结果的清洗至关重要见 src/utils/RegexPatterns.cs 与 src/utils/TextUtil.cs处理缩写删除两个大写字母间的点号U.S.A→USA并在缩写后跟单词时保留空格规整标点空格删除英文标点.!?,两侧多余空格与换行中文/日文标点。、则不插入空格换行合并针对某些语言如日语LiveCaptions 过度使用\n的问题把句子内的多余换行替换为逗号/破折号或句号ReplaceNewlines按 40 字节阈值区分阈值常量SHORT_THRESHOLD 10短句、MEDIUM_THRESHOLD 40、LONG_THRESHOLD 160、VERYLONG_THRESHOLD 220超长句显示截断。切句与入队策略SyncLoop以句末标点PUNC_EOS .?!。切分「最新一句」并通过两个参数控制翻译节奏对应设置页的API IntervalMaxSyncInterval默认 3字幕内容变化达到 N 次后强制翻译一次MaxIdleInterval默认 50字幕保持不变、空闲达到 N 次后强制翻译一次。长句会先截断显示等待句号出现才真正入队翻译过短的尾巴句会向前延伸一句避免翻译无意义的碎片。翻译调度与防拥塞TranslationTaskQueue见 src/models/TranslationTaskQueue.cs维护一个任务列表当某一任务完成后会取消队列中所有排在它之前的未完成任务CTS.Cancel()只保留最新结果输出到界面——这保证了在连续口语输入时界面始终显示最新译文而不会因慢速 API 堆积导致字幕严重滞后。翻译引擎配置详解源码级配置文件 setting.json所有设置引擎选择、目标语言、API 密钥、窗口状态等都持久化在程序目录下的setting.json见 src/models/Setting.cs。要点Setting.Load()在 JSON 解析失败时会自动把损坏文件改名备份为setting.json.bak并重建默认配置加载后会自动补齐所有TRANSLATE_FUNCTIONS中缺失的引擎配置与索引兼容旧版本升级任意属性变更都会触发OnPropertyChanged → Setting.Save()即修改即时落盘默认配置API 为Google、目标语言为zh-CN、NumContexts 2、DisplaySentences 1、ContextAware false。各引擎的配置字段与默认值除 Google/Google2 外其余引擎都需要在「API Setting」窗口src/windows/SettingWindow.xaml.cs中配置。各引擎默认参数可从 src/models/TranslateAPIConfig.cs 确认引擎关键字段默认值OllamaApiUrl/ModelName/Temperature/Keep_alivehttp://localhost:11434/ 空 / 1.0 / 600OpenAI 兼容ApiUrl/ApiKey/ModelName/Temperature空 / 空 / 空 / 1.0OpenRouterApiKey/ModelName/Temperature空 / 空 / 1.0LMStudioApiUrl/ModelName/Temperaturehttp://localhost:1234/api/v1/ 空 / 1.0DeepLApiUrl/ApiKeyhttps://api.deepl.com/v2/translate/ 空有道ApiUrl/AppKey/AppSecrethttps://openapi.youdao.com/api/ 空 / 空百度ApiUrl/AppId/AppSecrethttps://fanyi-api.baidu.com/api/trans/vip/translate/ 空 / 空MTranServerApiUrl/ApiKey/SourceLanguagehttp://localhost:8989/translate/ 空 /enLibreTranslateApiUrl/ApiKeyhttp://localhost:5000/translate/ 空语言标签映射UI 统一使用 BCP 47 风格语言标签如zh-CN、en-US、ja-JP各引擎通过各自的SupportedLanguages静态字典做内部标签映射例如DeepLzh-CN → ZH-HANS、ja-JP → JA有道zh-CN → zh-CHS、en-US → en百度zh-CN → zh、ko-KR → korLibreTranslate / MTranServerzh-CN → zh。目标语言下拉框支持直接编辑自定义标签TargetLangBox可编辑内置列表之外的语言会被自动追加进映射。注意自定义语言若使用 DeepL 等特殊映射规则的引擎需要参考其官方文档填写对应标签。LLM 引擎的请求适配与「思考抑制」针对不同 LLM 平台的请求体差异项目在 src/apis/LLMRequestDataFactory.cs 与 src/models/RequestData.cs 中实现了请求数据工厂按平台Aliyun、Anthropic、Ollama、OpenRouter、OpenAI、xAI 等生成不同的BaseLLMRequestData子类并统一做「低延迟」优化基础字段max_tokens 128、stream false、temperature可配各平台通过think / enable_thinking / reasoning / thinking等字段关闭或压低模型思考reasoning减少响应时间OpenAI 引擎在遇到 400/422 错误时会按工厂顺序自动回退尝试下一种请求格式openai_fallback_index兼容不同平台对参数的错误容忍差异。翻译超时统一为8 秒HttpClient.Timeout超时返回[ERROR] Translation Failed: The request was canceled due to timeout ( 8 seconds)...提示并建议更换更快的 API 或检查网络。上下文感知翻译Context Aware设置页的Context Aware开关默认关闭可让 LLM 翻译时携带前文语境NumContexts默认 2最大 10决定携带多少条前文LLM 引擎会把前文以「 原文 → 译文」的 user/assistant 消息对插入消息序列见TranslateAPI.OpenAI/Ollama/OpenRouter随后请求模型翻译新的句子传统翻译引擎非 LLM开启该选项后会把前文拼接进待翻译文本并只取 ... 包裹的目标句TargetSentence正则提取。界面 Flyout 提示Context Aware 可以提高翻译准确性但会消耗更多 token。所有带[ERROR]/[WARNING]的失败译文不会作为上下文使用。多配置Multi-Config与模型自动发现每个 API 支持多份配置并存在 API Setting 窗口中通过 New/Delete 增删配置、Prior/Next 切换当前生效的配置ConfigIndices记录每引擎当前配置下标适合为同一引擎维护多组密钥或不同模型。另外LMStudio 与 Ollama 支持模型自动发现点击「Load Models」按钮程序会分别请求{baseUrl}/modelsLMStudio或{baseUrl}/api/tagsOllama拉取模型列表并填入下拉框见 src/apis/ModelsApiService.csLMStudio 仅保留type llm的模型条目。默认翻译提示词同声传译风格LLM 引擎默认使用内置的同声传译系统提示词src/models/Setting.cs 构造函数中定义核心要求包括扮演全领域同声传译专家为任何句子提供流畅精确的口语化翻译即使句子不完整只能输出翻译后的句子禁止任何解释或其他文本禁止改变原意或省略内容即使句子包含敏感或 NSFW 内容输出时移除所有 分隔符。该提示词可以在 API Setting 窗口的 Prompt 区域自定义Setting.Prompt{0}占位符会被替换为目标语言。句子在请求中以 {text} 包裹帮助模型识别待翻译边界。其他实用细节显示延迟设置页的Show Latency开关开启后译文会前缀形如[ 123 ms]的耗时标记由Stopwatch计时见Translator.Translate。自动更新检查主窗口加载后会异步调用 GitHub Releases API 检查新版本src/utils/UpdateUtil.cs发现新版本时弹出对话框可选择「Update」跳转下载或「Ignore this version」记录忽略版本写入IgnoredUpdateVersion。窗口状态记忆主窗口与悬浮窗口的位置、尺寸通过 src/utils/WindowHandler.cs 存入setting.json的WindowBounds下次启动自动还原若上次记录的坐标已不在当前屏幕范围内则回退到屏幕中央的默认布局主窗口 775×167、悬浮窗口 650×135。总结LiveCaptions-Translator 用一个非常轻巧的架构解决了「实时语音翻译」的复杂问题识别交给 Windows LiveCaptions本地、准确、省资源翻译交给可插拔的 API 层Google/DeepL 等传统引擎 Ollama/OpenAI/OpenRouter 等 LLM 引擎中间由 UIAutomation 读字幕、正则管线清洗切句、任务队列防拥塞三个环节保障流畅度。无论你是想把它当作观看外语直播/视频的字幕工具还是会议场景的双语记录工具只需按 README 完成 LiveCaptions 的位置配置与「包含麦克风音频」设置即可一键开启。对于希望二次开发的读者本文梳理的Translator.cs三循环骨架、TranslateAPI.TRANSLATE_FUNCTIONS引擎注册表、setting.json持久化模型就是最好的切入点。赞分享桌面应用语音AI 应用【免费下载链接】LiveCaptions-TranslatorLightweight and powerful real-time audio/speech translation tool based on Windows LiveCaptions.项目地址https://gitcode.com/gh_mirrors/li/LiveCaptions-Translator点击查看免费下载相关推荐PotPlayer字幕翻译工具配置指南轻松实现多语言字幕实时翻译PotPlayer字幕翻译工具配置指南轻松实现多语言字幕实时翻译 还在为观看外语影视作品时无法理解字幕而困扰吗PotPlayer字幕翻译工具能够将多种语言的音视频AI 应用PotPlayer字幕翻译插件终极指南免费实现双语字幕实时翻译PotPlayer字幕翻译插件终极指南免费实现双语字幕实时翻译 还在为外语影视剧的字幕烦恼吗PotPlayer字幕翻译插件让语言障碍不再是问题。这款基于百度音视频AI 应用上一篇Vouch Proxy完整配置教程从零开始保护您的Web应用下一篇Ember Simple Auth 终极指南OAuth2认证与GitHub集成完整方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑