diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..4f3c4c5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Chen Janai
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index cedbaa8..8e93ff9 100644
--- a/README.md
+++ b/README.md
@@ -2,19 +2,24 @@
auto-caption
Auto Caption 是一个跨平台的视频播放和字幕显示软件。
- 项目还在初步开发阶段。
+ 项目初版已经开发完毕。
-
+
## 📥 下载
-暂无
+[GitHub Releases](https://github.com/HiMeditator/auto-caption/releases)
## 📚 用户手册
暂无
+### 基本使用
+
+目前仅提供 Windows 平台的可安装版本。如果使用默认的 Gummy 字幕引擎,需要获取阿里云百炼平台的 API KEY 并配置到环境变量中才能正常使用该模型相关教程:[获取API KEY](https://help.aliyun.com/zh/model-studio/get-api-key)、[将API Key配置到环境变量](https://help.aliyun.com/zh/model-studio/configure-api-key-through-environment-variables)。
+
+对于开发者,可以自己创建新的字幕引擎。具体通信规范请参考源代码。
## ✨ 特性
- 丰富的字幕样式设置
@@ -39,7 +44,7 @@ npm install
>
> 所谓的字幕引擎实际上是一个子程序,它会实时获取系统音频输入(录音)或输出(播放声音)的流式数据,并调用音频转文字的模型生成对应音频的字幕。生成的字幕通过 IPC 输出为转换为字符串的 JSON 数据,并返回给主程序。主程序读取字幕数据,处理后显示在窗口上。
>
->目前项目默认使用[阿里云 Gummy 模型](https://help.aliyun.com/zh/model-studio/gummy-speech-recognition-translation/),需要获取阿里云百炼平台的 API KEY 并配置到环境变量中才能正常使用该模型,相关介绍:[获取API KEY](https://help.aliyun.com/zh/model-studio/get-api-key)、[将API Key配置到环境变量](https://help.aliyun.com/zh/model-studio/configure-api-key-through-environment-variables)。
+>目前项目默认使用[阿里云 Gummy 模型](https://help.aliyun.com/zh/model-studio/gummy-speech-recognition-translation/),需要获取阿里云百炼平台的 API KEY 并配置到环境变量中才能正常使用该模型,相关教程:[获取API KEY](https://help.aliyun.com/zh/model-studio/get-api-key)、[将API Key配置到环境变量](https://help.aliyun.com/zh/model-studio/configure-api-key-through-environment-variables)。
>
> 本项目的 gummy 字幕引擎是一个 python 子程序,通过 pyinstaller 打包为可执行文件。 运行字幕引擎子程序的代码在 `src\main\utils\engine.ts` 文件中。
@@ -55,10 +60,10 @@ python -m venv subenv
# Windows
subenv/Scripts/activate
# Linux
-source myenv/bin/activate
+source subenv/bin/activate
```
-然后安装依赖:
+然后安装依赖(注意如果是 Linux 环境,需要注释调 `requirements.txt` 中的 `PyAudioWPatch`,该模块仅适用于 Windows 环境):
```bash
pip install -r requirements.txt
diff --git a/assets/01.png b/assets/01.png
new file mode 100644
index 0000000..2945123
Binary files /dev/null and b/assets/01.png differ
diff --git a/package.json b/package.json
index bb7e4c5..9b6493f 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,10 @@
{
"name": "auto-caption",
"version": "0.0.1",
- "description": "A cross-platform video playback and subtitle display software.",
+ "description": "A cross-platform subtitle display software.",
"main": "./out/main/index.js",
"author": "himeditator",
- "homepage": "https://electron-vite.org",
+ "homepage": "https://github.com/HiMeditator/auto-caption",
"scripts": {
"format": "prettier --write .",
"lint": "eslint --cache .",
diff --git a/python-subprocess/requirements.txt b/python-subprocess/requirements.txt
index 82df817..7276312 100644
Binary files a/python-subprocess/requirements.txt and b/python-subprocess/requirements.txt differ
diff --git a/src/main/control.ts b/src/main/control.ts
index aa828fd..a1f9faa 100644
--- a/src/main/control.ts
+++ b/src/main/control.ts
@@ -5,6 +5,7 @@ import icon from '../../resources/icon.png?asset'
import { captionWindow } from './caption'
import {
captionEngine,
+ captionLog,
controls,
setStyles,
sendStyles,
@@ -98,6 +99,10 @@ class ControlWindow {
captionEngine.stop()
this.window?.webContents.send('control.engine.stopped')
})
+ // 清空字幕记录
+ ipcMain.on('control.caption.clear', () => {
+ captionLog.splice(0)
+ })
}
}
diff --git a/src/main/utils/engine.ts b/src/main/utils/engine.ts
index 56992c7..0b26779 100644
--- a/src/main/utils/engine.ts
+++ b/src/main/utils/engine.ts
@@ -15,16 +15,26 @@ export class CaptionEngine {
this.command = [ controls.customizedCommand ]
}
else if(controls.engine === 'gummy'){
+ let gummyName = ''
+ if(process.platform === 'win32'){
+ gummyName = 'main-gummy.exe'
+ }
+ else if(process.platform === 'linux'){
+ gummyName = 'main-gummy'
+ }
+ else{
+ throw new Error('Unsupported platform')
+ }
if(is.dev){
this.appPath = path.join(
app.getAppPath(),
- 'python-subprocess', 'dist', 'main-gummy.exe'
+ 'python-subprocess', 'dist', gummyName
)
}
else{
this.appPath = path.join(
process.resourcesPath,
- 'python-subprocess', 'dist', 'main-gummy.exe'
+ 'python-subprocess', 'dist', gummyName
)
}
this.command = []
diff --git a/src/renderer/src/components/CaptionData.vue b/src/renderer/src/components/CaptionData.vue
index d40fcac..029dcaf 100644
--- a/src/renderer/src/components/CaptionData.vue
+++ b/src/renderer/src/components/CaptionData.vue
@@ -34,11 +34,18 @@
字幕记录
导出字幕记录
+
+ 清空字幕记录
+