Skip to content

SNTube/Streaming-Captions

 
 

Repository files navigation

Streaming Captions

Streaming Captions 基于 streaming-sensevoice 项目,实现类似win11的 LiveCaptions 的实时字幕,加入 kernel32.dll 处理文本以适配 LunatranslatorHook 模式 。

PS: 因为不会用 python 实现 捕获内录音 ,所以需要安装 Virtual Audio Cable (VAC) Lite版 作为 内录音输入设备

使用

克隆项目

git clone -b dev/gui-development https://github.com/SNTube/Streaming-Captions.git

安装依赖

cd 到 项目目录 下,执行

pip install -r requirements.txt

安装VAC作为内录

  1. Virtual Audio Cable (VAC)作为内录接口,下载安装包。 ( Virtual Audio Cable这东西不好卸载,卸载时到安装目录内,以管理员权限运行 delete_service.cmd ,然后在用GeekUninstaller之类的卸载工具正常卸载 )

  2. 把安装后显示的播放设备 Line 1 设置为默认设备 ( 即 设为默认值 ) 。

  3. 安装后显示的录制设备 Line 1 ,选中并点开 属性 ,在 侦听 分页中,勾选 侦听此设备通过此设备播放 选择 原本的扬声器设备应用确定

  4. 显示的录制设备中,选择 实际存在的麦克风设备 作为默认设备 ( 即 设为默认值 ) 。

PS: 如果没有麦克风设备只想用内录模式,请先安装VAC并将安装后显示的录制设备 Line 1 设为默认的麦克风设备。

运行脚本

python StreamingCaptions.py
  • 界面一览无遗,简洁大方,清晰明了。

  • 现在通过 kernel32.dll 摸一下文本,可以被 LunatranslatorHook 模式搜到了。

  • 功能包括界面宽度、字号大小、优先语言、VAC模式(VAC专用模式)、标点恢复、文本居中与靠左、隐藏界面、隐藏按钮、热词增强、快捷键、复制当前显示文本、更改字体。

热词增强

SimplePage文件夹 下放一个 hotwords.txt ,一行一个词,可以提升对指定词的准确率。

如有 Bug 请提 Issues ,我编程水平靠AI,能不能解决只能是看情况。

清除用户配置

把下方代码保存 .bat 文件,运行即可。

@echo off
chcp 65001 >nul
echo 正在尝试清除注册表中 StreamingCaptions用户配置项 ...
reg delete "HKEY_CURRENT_USER\Software\SNTube\SNTrealtimeSubtitles" /f
if %errorlevel% equ 0 (
    echo 用户配置项已成功清除。
) else (
    echo 清除用户配置项失败。请检查 是否已经清除 或是 是否有权限问题。
)
pause

【美化】加载界面背景图片设定

  • 优先级 在线方案本地方案 都设定的情况下会使用 在线方案。可以都没有,也就是不设定加载界面,不妨碍运行。

  • 本地方案

新建 SimplePage/LoadImg 文件夹,可以支持自定义背景,只要名字带 load ,gif、png、jpg、bmp等格式均可。

  • 在线方案

SimplePage 文件夹中,建一个 load_url.txt ,里面可以放 图片链接 ,或是 图片API ,一行一个链接(也是随机一行)。只要是 GET请求直接显示图片 或是 返回URL图片链接 的都可以兼容。

使用 Lunatranslator 翻译字幕

Lunatranslator 如何使用不做赘述,仅说明相关部分

Lunatranslator 设置

  1. 点开 Lunatranslator设置 (齿轮图标)

  2. 核心设置 分栏中,找到 文本输入 ,开启 HOOK 开关。HOOK设置 下,默认设置代码页UTF8_(CP65001)

  3. HOOK设置 下,选择游戏 齿轮 ,点击此按钮后点击游戏窗口 后,点击本实时字幕的界面并·OK选择文本 齿轮,等待识别文字后,激活字幕所在行的前方开关。

  4. 文本处理 分栏中,开启并从上到下排序 过滤历史重复LRU去除重复字符AAAABBBBCCCC->ABC去除重复行AABABCABCD->ABCD过滤换行符自定义python处理

  5. 自定义python处理 的齿轮点开,输入下方代码,保存

def POSTSOLVE(line):
    # 请在这里编写自定义处理
    lines = line.splitlines()
    ll = lines-1return ll

协议声明

本项目基于streaming-sensevoice 项目,原项目采用了 Apache License 2.0 许可。

  • 所以本项目声明如下
  1. 本项目采用了 Apache License 2.0 许可

  2. 本项目中,保留的所有原始文件,已保留其中所有的版权声明、专利声明、商标声明及归属声明。

  3. 说明修改与新增内容

    • 删去了没有使用的运行文件、演示音频、演示图片
    • 增加一个SC_SNTube.ico图标作为窗口图标
    • StreamingCaptions.py为GUI界面,并在其中包含声明

About

基于Streaming-SenseVoice项目的伪流式实时字幕界面

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%