ScreenSubtitleReader 0.1.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ScreenSubtitleReader/__init__.py +1 -0
- ScreenSubtitleReader/__main__.py +10 -0
- ScreenSubtitleReader/core/__init__.py +0 -0
- ScreenSubtitleReader/core/__main__.py +10 -0
- ScreenSubtitleReader/core/ocr_fither.py +72 -0
- ScreenSubtitleReader/core/screen_reader.py +32 -0
- ScreenSubtitleReader/core/string_fither.py +5 -0
- ScreenSubtitleReader/ocr_module/__init__.py +1 -0
- ScreenSubtitleReader/ocr_module/angnet/__init__.py +1 -0
- ScreenSubtitleReader/ocr_module/angnet/angle.py +59 -0
- ScreenSubtitleReader/ocr_module/config.py +34 -0
- ScreenSubtitleReader/ocr_module/crnn/CRNN.py +102 -0
- ScreenSubtitleReader/ocr_module/crnn/__init__.py +1 -0
- ScreenSubtitleReader/ocr_module/crnn/keys.py +1 -0
- ScreenSubtitleReader/ocr_module/crnn/util.py +89 -0
- ScreenSubtitleReader/ocr_module/dbnet/dbnet_infer.py +97 -0
- ScreenSubtitleReader/ocr_module/dbnet/decode.py +125 -0
- ScreenSubtitleReader/ocr_module/model.py +128 -0
- ScreenSubtitleReader/ocr_module/models/__init__.py +1 -0
- ScreenSubtitleReader/ocr_module/models/angle_net.onnx +0 -0
- ScreenSubtitleReader/ocr_module/models/crnn_lite_lstm.onnx +0 -0
- ScreenSubtitleReader/ocr_module/models/dbnet.onnx +0 -0
- ScreenSubtitleReader/ocr_module/utils.py +173 -0
- ScreenSubtitleReader/setting/setting.py +98 -0
- ScreenSubtitleReader/speaker/speaker.py +60 -0
- ScreenSubtitleReader/ui/ui.py +101 -0
- screensubtitlereader-0.1.3.dist-info/METADATA +21 -0
- screensubtitlereader-0.1.3.dist-info/RECORD +31 -0
- screensubtitlereader-0.1.3.dist-info/WHEEL +5 -0
- screensubtitlereader-0.1.3.dist-info/entry_points.txt +2 -0
- screensubtitlereader-0.1.3.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import tkinter as tk
|
|
2
|
+
from ..setting.setting import AppConfig
|
|
3
|
+
from ..speaker.speaker import Speaker
|
|
4
|
+
from ..core.__main__ import main as main_ocr_loop
|
|
5
|
+
|
|
6
|
+
class APP(tk.Tk):
|
|
7
|
+
def __init__(self):
|
|
8
|
+
super().__init__()
|
|
9
|
+
|
|
10
|
+
self.sp = Speaker()
|
|
11
|
+
self.config_manager = AppConfig()
|
|
12
|
+
|
|
13
|
+
# 1. 启动默认全屏
|
|
14
|
+
self.attributes("-fullscreen", True)
|
|
15
|
+
|
|
16
|
+
# 绑定 ESC 键退出程序(强烈建议保留,防止全屏后无法退出)
|
|
17
|
+
self.bind("<Escape>", lambda event: self.destroy())
|
|
18
|
+
|
|
19
|
+
# 2. 配置网格布局,使 2x3 的网格均匀填满整个窗口
|
|
20
|
+
self.grid_rowconfigure(0, weight=1)
|
|
21
|
+
self.grid_rowconfigure(1, weight=1)
|
|
22
|
+
self.grid_columnconfigure(0, weight=1)
|
|
23
|
+
self.grid_columnconfigure(1, weight=1)
|
|
24
|
+
self.grid_columnconfigure(2, weight=1)
|
|
25
|
+
|
|
26
|
+
# 3. 设置超大字体与统一样式
|
|
27
|
+
huge_font = ("SimHei", 160, "bold")
|
|
28
|
+
|
|
29
|
+
# 使用字典统一定义按钮样式,方便维护
|
|
30
|
+
btn_style = {
|
|
31
|
+
"font": huge_font,
|
|
32
|
+
"bg": "#E0E0E0", # 常态背景颜色 (浅灰色)
|
|
33
|
+
"activebackground": "#000000", # 按下时的背景颜色 (亮蓝色,体现按下效果)
|
|
34
|
+
"fg": "#333333", # 常态文字颜色
|
|
35
|
+
"activeforeground": "#FFFFFF" # 按下时的文字颜色
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# 4. 创建并放置六个按钮
|
|
39
|
+
# 增加了 padx 和 pady 留下按钮间隙,让按下时的颜色变化更加分明
|
|
40
|
+
|
|
41
|
+
# 左上角:语速+
|
|
42
|
+
self.btn_speed_add = tk.Button(self, text="语速+", command=self.on_speed_add, **btn_style)
|
|
43
|
+
self.btn_speed_add.grid(row=0, column=0, sticky="nsew", padx=5, pady=5)
|
|
44
|
+
|
|
45
|
+
# 中上角:音量+
|
|
46
|
+
self.btn_vol_add = tk.Button(self, text="音量+", command=self.on_volume_add, **btn_style)
|
|
47
|
+
self.btn_vol_add.grid(row=0, column=1, sticky="nsew", padx=5, pady=5)
|
|
48
|
+
|
|
49
|
+
# 右上角:开始
|
|
50
|
+
self.btn_start = tk.Button(self, text="开始", command=self.on_start, **btn_style)
|
|
51
|
+
self.btn_start.grid(row=0, column=2, sticky="nsew", padx=5, pady=5)
|
|
52
|
+
|
|
53
|
+
# 左下角:语速-
|
|
54
|
+
self.btn_speed_sub = tk.Button(self, text="语速-", command=self.on_speed_sub, **btn_style)
|
|
55
|
+
self.btn_speed_sub.grid(row=1, column=0, sticky="nsew", padx=5, pady=5)
|
|
56
|
+
|
|
57
|
+
# 中下角:音量-
|
|
58
|
+
self.btn_vol_sub = tk.Button(self, text="音量-", command=self.on_volume_sub, **btn_style)
|
|
59
|
+
self.btn_vol_sub.grid(row=1, column=1, sticky="nsew", padx=5, pady=5)
|
|
60
|
+
|
|
61
|
+
# 右下角:退出 (直接调用自带的 self.destroy 方法关闭窗口)
|
|
62
|
+
self.btn_exit = tk.Button(self, text="重置", command=self.on_reset, **btn_style)
|
|
63
|
+
self.btn_exit.grid(row=1, column=2, sticky="nsew", padx=5, pady=5)
|
|
64
|
+
self.sp.add_sentence(f"当前参数(音量{self.config_manager.volume},速度{self.config_manager.speed})")
|
|
65
|
+
self.sp.add_sentence("注意,更改后的语速在重新启动后生效,设置过程中读出的语音提示并没有反映实时设置的语速")
|
|
66
|
+
|
|
67
|
+
# --- 按钮对应的功能回调函数 ---
|
|
68
|
+
|
|
69
|
+
def on_speed_add(self):
|
|
70
|
+
self.config_manager.speed += 5
|
|
71
|
+
self.sp.add_sentence(f"设置语速: {self.config_manager.speed}")
|
|
72
|
+
|
|
73
|
+
def on_speed_sub(self):
|
|
74
|
+
self.config_manager.speed -= 5
|
|
75
|
+
self.sp.add_sentence(f"设置语速: {self.config_manager.speed}")
|
|
76
|
+
|
|
77
|
+
def on_volume_add(self):
|
|
78
|
+
self.config_manager.volume += 5
|
|
79
|
+
self.sp.add_sentence(f"设置音量: {self.config_manager.volume}")
|
|
80
|
+
|
|
81
|
+
def on_volume_sub(self):
|
|
82
|
+
self.config_manager.volume -= 5
|
|
83
|
+
self.sp.add_sentence(f"设置音量: {self.config_manager.volume}")
|
|
84
|
+
|
|
85
|
+
def on_start(self):
|
|
86
|
+
# 此处可以替换为实际的启动逻辑
|
|
87
|
+
self.sp.add_sentence("5秒钟后开始")
|
|
88
|
+
self.destroy()
|
|
89
|
+
|
|
90
|
+
def on_reset(self):
|
|
91
|
+
self.config_manager.volume = 100
|
|
92
|
+
self.config_manager.speed = 200
|
|
93
|
+
self.sp.add_sentence(f"参数重设(音量{self.config_manager.volume},速度{self.config_manager.speed})")
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
if __name__ == "__main__":
|
|
99
|
+
app = APP()
|
|
100
|
+
app.mainloop()
|
|
101
|
+
main_ocr_loop()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ScreenSubtitleReader
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: 自动识别屏幕上正在放映视频的字幕并读出来
|
|
5
|
+
Requires-Python: >=3.12
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: numpy>=2.4.4
|
|
8
|
+
Requires-Dist: onnxruntime>=1.26.0
|
|
9
|
+
Requires-Dist: opencv-python>=4.13.0.92
|
|
10
|
+
Requires-Dist: pillow>=12.2.0
|
|
11
|
+
Requires-Dist: platformdirs>=4.10.0
|
|
12
|
+
Requires-Dist: pyclipper>=1.4.0
|
|
13
|
+
Requires-Dist: python-levenshtein>=0.27.3
|
|
14
|
+
Requires-Dist: pyttsx3==2.91
|
|
15
|
+
Requires-Dist: shapely>=2.1.2
|
|
16
|
+
Requires-Dist: tornado>=6.5.5
|
|
17
|
+
|
|
18
|
+
## 一个自动阅读字幕的小工具
|
|
19
|
+
|
|
20
|
+
先安装:`uv tool install --upgrade screenreaderhyt`
|
|
21
|
+
之后用`scsrt`启动
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
ScreenSubtitleReader/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
2
|
+
ScreenSubtitleReader/__main__.py,sha256=yxKs0CCpbO9P08JiYfbl2e1NMBmFfSbKsKRf3cKRVy0,190
|
|
3
|
+
ScreenSubtitleReader/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
ScreenSubtitleReader/core/__main__.py,sha256=T7mftf9YojD7plMWnNTRX93IWjCUkiFZD9rxk-ylfOU,178
|
|
5
|
+
ScreenSubtitleReader/core/ocr_fither.py,sha256=6HJNpZC3pYzcInRnMlWZvow1VECnLVvlkLkyLG6StE4,2421
|
|
6
|
+
ScreenSubtitleReader/core/screen_reader.py,sha256=3wZBp65Q1RPXsQrbkbbPnA2Dkyj0f6zbz6V1p64ngBI,935
|
|
7
|
+
ScreenSubtitleReader/core/string_fither.py,sha256=2FsrufUZbJkfuRKPp-9ELt9zRnNIJmS3RfosLu5qLWg,126
|
|
8
|
+
ScreenSubtitleReader/ocr_module/__init__.py,sha256=V_rlM4OMG-TwO2W6KuHelNZK9PORY4tg8fJvfT_aJJg,28
|
|
9
|
+
ScreenSubtitleReader/ocr_module/config.py,sha256=BORGUXsz2ppDBF_uxmAsdKv9sVgHlZRZnvFi7hVOLqk,764
|
|
10
|
+
ScreenSubtitleReader/ocr_module/model.py,sha256=KTtvYtEodstF8_PZqrSFbKWbYmUUimqXPt6T1EEoZ5Q,4329
|
|
11
|
+
ScreenSubtitleReader/ocr_module/utils.py,sha256=l6ILMdwYs27eOX-H-_1fG8V38dgJeKVcGiR4tZwQErE,6257
|
|
12
|
+
ScreenSubtitleReader/ocr_module/angnet/__init__.py,sha256=kOv159o_x3qifFGVdtMNv7Cj-O9MtDymlRZC8RaZ8uA,35
|
|
13
|
+
ScreenSubtitleReader/ocr_module/angnet/angle.py,sha256=fIAdfpKWBWk8X35V4ORzllUd_xABBNvj6YPMqu_gbk8,1731
|
|
14
|
+
ScreenSubtitleReader/ocr_module/crnn/CRNN.py,sha256=FnJD5P3XA9wbYmwRIKjfJSMNsIQ9J67MUG9aYGQ-6Ls,2592
|
|
15
|
+
ScreenSubtitleReader/ocr_module/crnn/__init__.py,sha256=yMl-1JLBPKu3rx5VfgDI6CE5jr6W71GAkSVZm2gURK4,30
|
|
16
|
+
ScreenSubtitleReader/ocr_module/crnn/keys.py,sha256=zG-pKIG5Ius2uP6-7sWEecBZMYNpsSlTms3MnjOGHh4,16418
|
|
17
|
+
ScreenSubtitleReader/ocr_module/crnn/util.py,sha256=6vsc0-ZV8GuVUJiKrizljvIuS6SEdKGnVQxSY-8XSuE,2244
|
|
18
|
+
ScreenSubtitleReader/ocr_module/dbnet/dbnet_infer.py,sha256=6NaDMNKesTpf5A4dxmoVAZuV3mTIBroZtNei_FspsJI,2902
|
|
19
|
+
ScreenSubtitleReader/ocr_module/dbnet/decode.py,sha256=c3pNpoo_jMI75GjajYdBJTD95XqqarG1fHyegXzIqnY,5156
|
|
20
|
+
ScreenSubtitleReader/ocr_module/models/__init__.py,sha256=IWPxtc05aEZId3L0wHo8BiSN-8l7klTu6MnYUQAynzI,54
|
|
21
|
+
ScreenSubtitleReader/ocr_module/models/angle_net.onnx,sha256=PHD3hzPITJzAiBTlX-5RzxX74z4jRgua8DAuCoTZ9uA,778127
|
|
22
|
+
ScreenSubtitleReader/ocr_module/models/crnn_lite_lstm.onnx,sha256=l8-dzbekcGO-pCByN66SIjH1EihSn_UZjZWKyZ4oBOg,5293632
|
|
23
|
+
ScreenSubtitleReader/ocr_module/models/dbnet.onnx,sha256=7DHrK32qOcTgMH67KQBF3uzVFfTpZW1dmH64IUiuqGc,3637234
|
|
24
|
+
ScreenSubtitleReader/setting/setting.py,sha256=ZBznPw62c-QYwuuUgxjo0EIeFwI2W5tQSW1x5Hireys,3606
|
|
25
|
+
ScreenSubtitleReader/speaker/speaker.py,sha256=OBI625tWokKQcT-HUVqECDRmqQzj_VmBgevc2vJings,2103
|
|
26
|
+
ScreenSubtitleReader/ui/ui.py,sha256=LMq7_1AxXk81VsKmh3Dkyzec5GT3YXr3hONfG5WlHjI,4334
|
|
27
|
+
screensubtitlereader-0.1.3.dist-info/METADATA,sha256=pxpX2TEc-DtEUcPUyv1behLb3uUimvhYWLGojWWlZbo,674
|
|
28
|
+
screensubtitlereader-0.1.3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
29
|
+
screensubtitlereader-0.1.3.dist-info/entry_points.txt,sha256=nGgF4IKkgNoGMkSPlKDf3Rz916i3l8DPIYAbKNi3f2I,61
|
|
30
|
+
screensubtitlereader-0.1.3.dist-info/top_level.txt,sha256=k6OvgrAxmjczfuISVFPI1Gw81ttC_KCvTBosP8uW_eI,21
|
|
31
|
+
screensubtitlereader-0.1.3.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ScreenSubtitleReader
|