speakdrill 0.1.1 → 0.2.0
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.
- package/README.md +12 -2
- package/bin/speakdrill-gui.js +29 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -16,12 +16,22 @@ speakdrill doctor
|
|
|
16
16
|
|
|
17
17
|
安裝時會從 GitHub Releases 下載原生二進位(`speakdrill.exe` / `speakdrill-gui.exe`)。
|
|
18
18
|
|
|
19
|
+
|
|
20
|
+
## 重開機需求
|
|
21
|
+
|
|
22
|
+
> 安裝/變更虛擬音效驅動後,**請重新開機**再跑 `speakdrill init`。
|
|
23
|
+
> 只重啟 App 不夠。`doctor` 會檢查:
|
|
24
|
+
> - 迴路能不能實際開啟
|
|
25
|
+
> - App 的每應用程式麥克風綁定是否一致
|
|
26
|
+
> - 是否選到真正可用的迴路
|
|
27
|
+
|
|
19
28
|
## 快速開始
|
|
20
29
|
|
|
21
30
|
```bash
|
|
22
31
|
speakdrill init # 偵測裝置、寫設定、設 VoiceMeeter 路由、拉音量
|
|
23
32
|
speakdrill doctor # 檢查環境
|
|
24
|
-
speakdrill
|
|
33
|
+
speakdrill # 終端機介面(預設)
|
|
34
|
+
speakdrill list # 列出課程
|
|
25
35
|
speakdrill-gui # 原生 GUI
|
|
26
36
|
speakdrill run --lesson <ID> --course <ID>
|
|
27
37
|
speakdrill batch --code <CODE> --limit 5
|
|
@@ -31,7 +41,7 @@ speakdrill reset # 還原音訊路由
|
|
|
31
41
|
## 前置需求
|
|
32
42
|
|
|
33
43
|
1. **VoiceMeeter**(Banana 或 Potato)
|
|
34
|
-
2.
|
|
44
|
+
2. **不需要額外裝 TTS**:`speakdrill init` 自動下載 Piper
|
|
35
45
|
3. 目標 App 需開啟 debug port:
|
|
36
46
|
`--remote-debugging-port=9222 --remote-allow-origins=*`
|
|
37
47
|
4. 在 `ms-settings:apps-volume` 把目標 App 的**輸入裝置**設成 `Voicemeeter Out B1`
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* GUI 啟動器:把 `speakdrill-gui` 轉給原生 egui 視窗。
|
|
4
|
+
*/
|
|
5
|
+
const { spawn } = require('child_process');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
|
|
9
|
+
const exe = process.platform === 'win32' ? 'speakdrill-gui.exe' : 'speakdrill-gui';
|
|
10
|
+
const dir = `${process.platform}-${process.arch}`;
|
|
11
|
+
const candidates = [
|
|
12
|
+
path.join(__dirname, 'binaries', dir, exe),
|
|
13
|
+
path.join(__dirname, '..', '..', 'target', 'release', exe),
|
|
14
|
+
path.join(__dirname, '..', '..', 'target', 'debug', exe),
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const bin = candidates.find((p) => fs.existsSync(p));
|
|
18
|
+
|
|
19
|
+
if (!bin) {
|
|
20
|
+
console.error(
|
|
21
|
+
`[speakdrill] 找不到 GUI 執行檔(${dir})。\n` +
|
|
22
|
+
` 請重新安裝:npm rebuild speakdrill\n` +
|
|
23
|
+
` 或從 https://github.com/thumb2086/speakdrill/releases 下載`
|
|
24
|
+
);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const child = spawn(bin, process.argv.slice(2), { stdio: 'inherit', detached: false });
|
|
29
|
+
child.on('exit', (code) => process.exit(code ?? 0));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "speakdrill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "口說課程自動化練習:TTS 產生示範語音、逐句驅動課程演練、輸出分數報告(Rust,含 TUI / 原生 GUI)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"speaking",
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
},
|
|
22
22
|
"homepage": "https://github.com/thumb2086/speakdrill#readme",
|
|
23
23
|
"bin": {
|
|
24
|
-
"speakdrill": "bin/speakdrill.js"
|
|
24
|
+
"speakdrill": "bin/speakdrill.js",
|
|
25
|
+
"speakdrill-gui": "bin/speakdrill-gui.js"
|
|
25
26
|
},
|
|
26
27
|
"files": [
|
|
27
28
|
"bin/",
|