diff --git a/docs/TODO.md b/docs/TODO.md
index 9fcc06a..ce8876c 100644
--- a/docs/TODO.md
+++ b/docs/TODO.md
@@ -14,10 +14,11 @@
- [x] 字幕窗口右上角图标改为竖向排布 *2025/07/14*
- [x] 可以调整字幕时间轴 *2025/07/14*
- [x] 可以导出 srt 格式的字幕记录 *2025/07/14*
+- [x] 可以获取字幕引擎的系统资源消耗情况 *2025/07/15*
## 待完成
-- [ ] 可以获取字幕引擎的系统资源消耗情况
+- [ ] 探索更多的语音转文字模型
## 后续计划
diff --git a/docs/api-docs/electron-ipc.md b/docs/api-docs/electron-ipc.md
index 2dbc3e9..7678f0b 100644
--- a/docs/api-docs/electron-ipc.md
+++ b/docs/api-docs/electron-ipc.md
@@ -57,6 +57,19 @@
- 发送:无数据
- 接收:`string`
+### `control.engine.info`
+
+**介绍:** 获取字幕引擎的资源消耗情况
+
+**发起方:** 前端控制窗口
+
+**接收方:** 后端控制窗口实例
+
+**数据类型:**
+
+- 发送:无数据
+- 接收:`EngineInfo`
+
## 前端 ==> 后端
### `control.uiLanguage.change`
diff --git a/package-lock.json b/package-lock.json
index 574e1ca..8f9dfea 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@electron-toolkit/preload": "^3.0.1",
"@electron-toolkit/utils": "^4.0.0",
"ant-design-vue": "^4.2.6",
+ "pidusage": "^4.0.1",
"pinia": "^3.0.2",
"vue-i18n": "^11.1.9",
"vue-router": "^4.5.1"
@@ -7742,6 +7743,18 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pidusage": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-4.0.1.tgz",
+ "integrity": "sha512-yCH2dtLHfEBnzlHUJymR/Z1nN2ePG3m392Mv8TFlTP1B0xkpMQNHAnfkY0n2tAi6ceKO6YWhxYfZ96V4vVkh/g==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/pinia": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-3.0.2.tgz",
@@ -8292,7 +8305,6 @@
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
"funding": [
{
"type": "github",
diff --git a/package.json b/package.json
index 0ce4bd7..8190e42 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"@electron-toolkit/preload": "^3.0.1",
"@electron-toolkit/utils": "^4.0.0",
"ant-design-vue": "^4.2.6",
+ "pidusage": "^4.0.1",
"pinia": "^3.0.2",
"vue-i18n": "^11.1.9",
"vue-router": "^4.5.1"
diff --git a/src/main/ControlWindow.ts b/src/main/ControlWindow.ts
index 0e73586..10ad2ca 100644
--- a/src/main/ControlWindow.ts
+++ b/src/main/ControlWindow.ts
@@ -1,5 +1,7 @@
import { shell, BrowserWindow, ipcMain, nativeTheme, dialog } from 'electron'
import path from 'path'
+import { EngineInfo } from './types'
+import pidusage from 'pidusage'
import { is } from '@electron-toolkit/utils'
import icon from '../../build/icon.png?asset'
import { captionWindow } from './CaptionWindow'
@@ -81,6 +83,20 @@ class ControlWindow {
return result.filePaths[0];
})
+ ipcMain.handle('control.engine.info', async () => {
+ const info: EngineInfo = {
+ pid: 0, ppid: 0, cpu: 0, mem: 0, elapsed: 0
+ }
+ if(captionEngine.processStatus !== 'running') return info
+ const stats = await pidusage(captionEngine.process.pid)
+ info.pid = stats.pid
+ info.ppid = stats.ppid
+ info.cpu = stats.cpu
+ info.mem = stats.memory
+ info.elapsed = stats.elapsed
+ return info
+ })
+
ipcMain.on('control.uiLanguage.change', (_, args) => {
allConfig.uiLanguage = args
if(captionWindow.window){
diff --git a/src/main/types/index.ts b/src/main/types/index.ts
index 59ca5a4..eb4ed5b 100644
--- a/src/main/types/index.ts
+++ b/src/main/types/index.ts
@@ -54,3 +54,11 @@ export interface FullConfig {
controls: Controls,
captionLog: CaptionItem[]
}
+
+export interface EngineInfo {
+ pid: number,
+ ppid: number,
+ cpu: number,
+ mem: number,
+ elapsed: number
+}
\ No newline at end of file
diff --git a/src/renderer/src/components/CaptionLog.vue b/src/renderer/src/components/CaptionLog.vue
index c435fd7..b8ab316 100644
--- a/src/renderer/src/components/CaptionLog.vue
+++ b/src/renderer/src/components/CaptionLog.vue
@@ -59,6 +59,14 @@