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 是一个跨平台的视频播放和字幕显示软件。

- 项目还在初步开发阶段。 + 项目初版已经开发完毕。 -
+![](./assets/01.png) ## 📥 下载 -暂无 +[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 @@ 字幕记录 导出字幕记录 + + 清空字幕记录 +