refactor: 移除自签名证书方案,服务只跑 HTTP
麦克风安全上下文改由部署方案解决:本机用 localhost, 对外部署挂 HTTPS 反向代理。删除 certs/、gen-cert.sh、 /cert 路由与 HTTPS server 分支,文档同步更新。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
48
README.md
48
README.md
@@ -1,7 +1,7 @@
|
||||
# 🦉 乘法口诀大闯关
|
||||
|
||||
小学生乘法口诀语音背诵小程序:**自动读题 → 小朋友开口说答案 → 离线语音识别判分**,全程免手。
|
||||
支持顺序闯关 / 随机挑战(错题动态加权,练熟自动减少),限时作答、正/负反馈动效音效。
|
||||
支持顺序闯关 / 随机挑战(错题动态加权,练熟自动减少)/ 双人抢答,限时作答、正/负反馈动效音效。
|
||||
|
||||
语音识别用 **whisper.cpp 本地离线模型**,不联网、不花钱、不上传任何数据到云端。
|
||||
|
||||
@@ -14,14 +14,14 @@ calx/
|
||||
├── index.html # 前端(单页面)
|
||||
├── server.js # 后端(零 npm 依赖,纯 Node)
|
||||
├── start.sh # 一键启动
|
||||
├── gen-cert.sh # 生成自签名 HTTPS 证书
|
||||
├── models/
|
||||
│ ├── ggml-small.bin # 中文识别模型(默认,较准,465MB)
|
||||
│ └── ggml-base.bin # 备用模型(较快,141MB)
|
||||
└── certs/ # HTTPS 证书(换电脑/换 IP 后重新生成)
|
||||
├── bootstrap.sh # 新机一键部署
|
||||
├── grammar/ # whisper 解码语法约束
|
||||
└── models/
|
||||
├── ggml-small.bin # 中文识别模型(默认,较准,465MB)
|
||||
└── ggml-base.bin # 备用模型(较快,141MB)
|
||||
```
|
||||
|
||||
`certs/` 和 `node_modules` 不用拷(没有 node_modules)。`models/` 必须一起拷,或到新机器重新下载(见下)。
|
||||
没有 `node_modules`。`models/` 建议一起拷,或到新机器重新下载(见下)。
|
||||
|
||||
## 二、新电脑需要的运行环境
|
||||
|
||||
@@ -39,46 +39,28 @@ curl -L -o ggml-base.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/m
|
||||
cd ..
|
||||
```
|
||||
|
||||
## 三、启动
|
||||
## 三、启动与访问
|
||||
|
||||
```bash
|
||||
bash start.sh
|
||||
# 或: node server.js
|
||||
```
|
||||
|
||||
启动后终端会打印:
|
||||
```
|
||||
HTTP : http://localhost:8000 http://<你的IP>:8000
|
||||
HTTPS: https://<你的IP>:8443
|
||||
```
|
||||
- **本机运行**:浏览器打开 `http://localhost:8000`,麦克风直接可用(localhost 是浏览器认可的安全上下文)。
|
||||
- **对外部署**:浏览器只在安全上下文里放行麦克风,把服务挂在支持 **HTTPS 的反向代理**(如 nginx / Caddy / 云平台)后面即可,其余零改动。
|
||||
|
||||
- **电脑本机浏览器**(Chrome/Edge/Safari):直接开 `http://localhost:8000`,麦克风可用。
|
||||
- **iPhone / iPad**:必须用 HTTPS,见下一节。
|
||||
## 四、参数配置
|
||||
|
||||
## 四、iPhone / iPad 用语音(一次性设置)
|
||||
|
||||
iOS 只有在「HTTPS + 受信任证书」下才允许网页用麦克风。步骤(用 **Safari**):
|
||||
|
||||
1. 手机和电脑连**同一 Wi-Fi**(或你自己的远程方式能到 `8443` 端口)。
|
||||
2. Safari 打开 `https://<电脑IP>:8443/cert` → 提示下载描述文件 → 允许。
|
||||
3. **设置 → 通用 → VPN 与设备管理** → 安装刚下载的 `calx-local` 描述文件。
|
||||
4. **设置 → 通用 → 关于本机 → 证书信任设置** → 打开对 `calx-local` 的**完全信任**。
|
||||
5. Safari 打开 `https://<电脑IP>:8443/` → 点“开始” → **允许麦克风** → 之后听题、答题全程免手。
|
||||
|
||||
> 换电脑或电脑 IP 变了:重新 `bash gen-cert.sh` 生成证书,手机重做第 2~4 步。
|
||||
|
||||
## 五、参数配置
|
||||
|
||||
- 前端:`index.html` 顶部 `CONFIG`(读题开关、限时秒数、随机题数、错题加权、静音检测灵敏度等),或首页「⚙️ 家长设置」里直接改常用项。
|
||||
- 前端:`index.html` 顶部 `CONFIG`(读题开关、限时秒数、口诀范围、随机题数、错题加权、抢答参数、静音检测灵敏度等),或首页「⚙️ 家长设置」里直接改常用项。
|
||||
- 后端模型:默认 `ggml-small.bin`。想更快可切 base:
|
||||
```bash
|
||||
WHISPER_MODEL=models/ggml-base.bin node server.js
|
||||
```
|
||||
- 端口:`PORT=8000 HTTPS_PORT=8443`(环境变量可改)。
|
||||
- 端口:环境变量 `PORT`(默认 8000)。
|
||||
|
||||
## 六、常见问题
|
||||
## 五、常见问题
|
||||
|
||||
- **点“开始”没弹麦克风授权**:多半不是 HTTPS 或证书没「完全信任」→ 重做第四节。
|
||||
- **点“开始”没弹麦克风授权**:不是安全上下文——本机请用 `http://localhost:8000`,对外部署须走 HTTPS 反向代理。
|
||||
- **识别不准 / 没反应**:确认终端有 `[stt] ... -> "xxx"` 日志;模型加载 `✅`;小朋友吐字清楚、环境别太吵。
|
||||
- **iOS 上没声音读题**:iOS 要求首次交互才解锁语音,点过“开始”后即正常。
|
||||
- **完全不想用语音**:点游戏里「⌨️ 用手写」,或环境不支持时会自动切数字键盘。
|
||||
|
||||
Reference in New Issue
Block a user