ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

LunaTranslator 语音识别(Speech Recognition)功能实战指南:Windows 语音识别两种模式详解

LunaTranslator 语音识别(Speech Recognition)功能实战指南:Windows 语音识别两种模式详解 LunaTranslator 语音识别Speech Recognition功能实战指南Windows 语音识别两种模式详解【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator导读本文聚焦 LunaTranslator 的语音识别SR文本源功能它利用 Windows 10 / Windows 11 系统自带的语音识别能力将视频、游戏或系统播放的语音实时转写为文字再交给翻译引擎处理从而为没有文本挂钩Hook支持的游戏或视频场景提供听译能力。读完本文你将掌握直接调用模式与间接读取模式的原理、部署方法、配置参数和排障思路能够在自己的 Windows 机器上快速启用语音识别翻译。功能定位为什么需要语音识别文本源LunaTranslator 的文本来源体系以 textsourcebase.py 为基类包含文本挂钩texthook、OCR、剪贴板、文件翻译等来源。语音识别sourcestatus2.mssr是其中的一个特殊来源当游戏或播放器不提供可挂钩的文字、OCR 又难以处理动态视频画面时直接对声音进行语音识别是最后的兜底方案。它把听到的内容实时送入翻译流程再叠加 语音合成TTS 即可实现听译一体的完整体验。核心实现位于 mssr.py其文本源类mssr继承了basetext同时内部封装了两种完全不同的引擎实现直接调用模式通过MSSR类直接调用 Windows 嵌入式语音识别模型间接读取模式通过LiveCaptions类读取系统实时字幕Live Captions窗口的文字。两种模式在mssr.init()中按条件自动切换mssr.py当系统存在C:\Windows\System32或 Sysnative\LiveCaptions.exe且配置的mode为indirect时走间接读取否则尝试直接调用模式失败则给出错误提示。两种模式对比与选择对比维度直接调用模式间接读取模式支持系统Windows 10、Windows 11仅 Windows 11需 LiveCaptions实现方式直接调用嵌入式语音识别模型本地识别读取 LiveCaptions 窗口实时字幕文字性能更好本地模型直算稍差依赖字幕窗口刷新兼容性受语言包加密、运行时版本影响无 License 与运行时兼容性问题部署要求可能需要额外运行时与识别模型无需额外部署系统自带默认配置中mode为indirect见 config.json即优先使用更省事的间接模式需要更高性能或使用 Windows 10 时再切换到直接调用模式。直接调用模式直接使用 Windows 语音识别模型使用前提与重要警告直接调用模式会加载系统中的嵌入式语音识别embedded SR模型因此在 Windows 10 和 Windows 11 上均可用且性能更好。但请注意文档中的明确警告由于微软更改了较新版本语言包的加密方法系统中安装的语言包和下载的较新版本语言包无法直接使用。这意味着部分新语言包无法被该功能直接加载。遇到无法使用语言的情况时需要寻找配套版本的识别模型或参考相关社区文章B 站专栏 cv42198812获取解决方法。Windows 11直接检测系统语言在 Windows 11 上LunaTranslator 可以直接检测到系统内已安装的语言及其语音识别模型。操作路径为打开核心设置 → 其他 → 语音识别在语言下拉框中选择要识别的语言打开使用开关激活功能即可开始使用。如果需要的语言没有出现在选项中有两种处理方式在系统内安装对应语言设置 → 时间和语言 → 语言和区域自行寻找对应语言的识别模型将其解压到软件目录中软件启动时会扫描该目录。从源码看模型扫描逻辑位于MSSR.findallmodel()mssr.py它会依次检查用户配置中指定的path系统已安装的、以MicrosoftWindows.Speech.开头的应用包通过NativeUtils.FindPackages底层实现见 NativeUtils.py软件目录当前工作目录下所有以MicrosoftWindows.Speech.开头的文件夹。每个候选模型目录中必须包含一个sr.ini文件MSSR.getlocaleandlv()会解析其中的locale-id转为区域名称和license-version字段mssr.pylicense-version不为0时表示该模型需要额外的 License 授权对应全局配置MicrosoftWindows.Speech.License见 mssr.py。Windows 10部署运行时与识别模型Windows 10 系统内缺少必要的运行时Runtime和识别模型Windows 11 版本过低时系统自带的运行时版本也可能过低。此时需要手动部署下载作者打包好的运行时 中日英语言识别模型压缩包名称为 DirectLiveCaptions 相关资源包将其解压到软件目录中重新启动/刷新后软件即可识别到打包好的运行时和识别模型从而启用该功能。从源码可见运行时探测逻辑MSSR.finddlldirectory()mssr.py会按顺序查找包含核心 DLLMicrosoft.CognitiveServices.Speech.extension.embedded.sr.dll的目录系统固定路径C:\Windows\SystemApps\MicrosoftWindows.Client.Core_cw5n1h2txyewy\LiveCaptions软件目录下任意包含该 DLL 的文件夹C:\Windows\SystemApps目录下的其他位置。获取其他语言的识别模型如果需要中日英之外的识别模型可以自行下载对应语言的识别模型包具体方法如下打开store.rg-adguard.net站点使用PackageFamilyName搜索以下格式的包名MicrosoftWindows.Speech.{LANGUAGE}.1_cw5n1h2txyewy其中{LANGUAGE}是你需要的语言标记例如法语为MicrosoftWindows.Speech.fr-FR.1_cw5n1h2txyewy在搜索结果中下载最新版本的 msix 文件将 msix 解压到软件目录中即可。解压后目录名会以MicrosoftWindows.Speech.开头从而被findallmodel()的目录扫描逻辑识别。注意源码中对路径有 ASCII 校验mssr.py请勿使用非英文路径否则会抛出请勿使用非英文路径异常。底层实现原理从命名管道到嵌入式识别直接调用模式的完整链路如下Python 侧MSSR.__init__完成模型定位findallmodel与运行时定位finddlldirectory后通过LunaSubProcess.mssr(path, source, dll, lic)LunaSubProcess.py启动原生子进程原生侧 mssr.cpp 创建两条命名管道结果管道与指令管道调用EmbeddedSpeechConfig::FromPath从模型目录加载配置并通过SetSpeechRecognitionModel绑定识别模型子进程通过loopbackaudio/LoopbackCapture进行系统环回音频采集将识别结果按result类型消息写回管道Python 侧MSSR.listen()mssr.py循环read_record()读取管道消息error类型显示错误信息若错误以??开头则进一步解析 HRESULT 错误码并调用FormatMessage翻译为可读文本常见情况是系统不支持环回录制result类型将识别文字通过dispatchtext送入翻译流程updateTranslateTrue同时通过updaterawtext更新原始文字显示status类型4表示正在加载语音识别模型1表示加载完毕用于界面状态提示。间接读取模式读取 LiveCaptions 实时字幕原理与适用场景间接读取模式不调用识别模型而是通过读取 Windows 11 系统应用LiveCaptions实时字幕窗口中的文字来间接实现语音识别。由于系统会在后台完成语音转写该模式仅能用于 Windows 11系统自带 LiveCaptions性能稍差取决于字幕窗口的刷新节奏不会有 License 和运行时兼容性问题几乎开箱即用。使用方法在 Windows 11 上进入核心设置 → 其他 → 语音识别将模式切换为间接读取并激活使用即可。软件会自动处理 LiveCaptions 进程的启动、隐藏与退出无需手动打开系统设置。底层实现原理间接模式对应LiveCaptions类mssr.py其核心机制包括进程定位findlcpid()通过NativeUtils.ListProcesses遍历进程匹配livecaptions.exe并校验其完整路径必须是C:\Windows\System32或 Sysnative\LiveCaptions.exe按程序位数选择见lcexe字段自动托管atendrestorwindow类在退出时自动还原而非杀死LiveCaptions 窗口根据配置autokill决定是否在退出时结束该进程窗口隐藏首次成功读取到文字后通过NativeUtils.ShowLiveCaptionsWindow(pid, False)隐藏字幕窗口配置项hidewindow避免遮挡游戏画面文字读取轮询NativeUtils.GetLiveCaptionsText(pid)NativeUtils.py获取字幕窗口最新文本取最后一行作为有效内容增量翻译__dointernal循环中按refreshinterval2默认 1.5 秒节奏调用dispatchtext触发翻译更新文字变化时立即调用updaterawtext刷新原文兼顾流畅度与翻译触发频率。界面配置与参数详解语音识别设置在核心设置 → 其他 → 语音识别页面由 textinput.py 的getsrgrid()动态生成。当系统检测不到LiveCaptions.exe时模式切换控件会被隐藏仅显示直接调用模式的参数textinput.py。相关配置项与默认值如下默认值来源config.json配置项默认值说明界面控件usefalse总开关是否启用语音识别文本源使用开关modeindirect模式direct直接调用/indirect间接读取模式下拉框path直接模式下选择的语言对应识别模型目录/包路径语言下拉框sourceloopback音源环回录制 / 麦克风 / 扬声器音源下拉框refreshinterval1.5直接模式下识别结果的刷新/翻译间隔秒步进框范围 0–10步长 0.1refreshinterval21.5间接模式下字幕文字的刷新间隔秒步进框范围 0.1–10步长 0.1hidewindowtrue间接模式是否隐藏 LiveCaptions 窗口开关autokilltrue间接模式退出时是否自动结束 LiveCaptions 进程开关各控件由 textinput.py 的hhfordirect/hhforindirect分别渲染直接模式提供语言、刷新间隔、音源三项间接模式提供刷新间隔、隐藏窗口、自动结束进程三项。切换模式或修改语言/音源后会立即触发文本源重新初始化gobject.base.textsource.init()因此修改参数即时生效无需重启软件。音源Audio Source选择说明直接调用模式下可指定音频输入来源源码MSSR.getsource()mssr.py与界面sources()textinput.py共同构建选项环回录制loopback录制系统正在播放的声音适合识别视频、游戏语音等输出音频是默认选项麦克风i从默认麦克风输入采集适合识别环境人声扬声器o从默认扬声器输出采集具体音频端点Endpoint通过NativeUtils.ListEndpoints(isinput)NativeUtils.py枚举系统全部输入/输出设备可精确选择某个声卡。音源选择会持久化到配置并在切换时重建识别引擎方便在不同场景看番、玩 Galgame、开会间快速切换。常见问题与排障要点提示无可用语言直接模式下未能找到任何MicrosoftWindows.Speech.*模型。请检查软件目录下是否已解压模型包或系统是否安装了对应语言提示找不到运行时缺少包含Microsoft.CognitiveServices.Speech.extension.embedded.sr.dll的运行时目录。Windows 10 用户需下载并解压作者提供的运行时与模型资源包提示请勿使用非英文路径模型或软件路径包含非 ASCII 字符请将软件与模型放置在纯英文路径下提示系统不支持环回录制直接模式下环回录制初始化失败HRESULT 错误码会一并显示。可尝试切换到其他音源麦克风/扬声器/具体端点规避较新语言包无法使用微软更改了新版语言包的加密方式请参考文档警告中提及的社区文章B 站专栏 cv42198812获取解决思路或改用间接读取模式间接模式无输出确认系统为 Windows 11 且存在LiveCaptions.exe检查隐藏窗口与自动结束进程配置必要时关闭隐藏观察 LiveCaptions 是否正常显示字幕。相关文件速查文本源实现两种模式核心逻辑textio/textsource/mssr.py文本源基类textio/textsource/textsourcebase.py界面配置模式、语言、音源、间隔等gui/setting/textinput.py默认配置项defaultconfig/config.json的sourcestatus2.mssr节点原生识别子进程模型加载与音频采集NativeImpl/LunaSubprocess/mssr.cpp环回音频采集实现NativeImpl/NativeUtils/loopbackaudio/LoopbackCapture.cpp原生辅助接口进程/端点/字幕窗口枚举NativeUtils.py【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表