Files
calx/README.md
2026-07-18 16:48:41 +08:00

85 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🦉 乘法口诀大闯关
小学生乘法口诀语音背诵小程序:**自动读题 → 小朋友开口说答案 → 离线语音识别判分**,全程免手。
支持顺序闯关 / 随机挑战(错题动态加权,练熟自动减少),限时作答、正/负反馈动效音效。
语音识别用 **whisper.cpp 本地离线模型**,不联网、不花钱、不上传任何数据到云端。
---
## 一、迁移到新电脑需要的文件
```
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 后重新生成)
```
`certs/``node_modules` 不用拷(没有 node_modules`models/` 必须一起拷,或到新机器重新下载(见下)。
## 二、新电脑需要的运行环境
```bash
# 1) Node.jsv16+ 即可,本项目用 v22 验证)
node -v
# 2) 系统命令ffmpeg转码+ whisper-cli识别
brew install ffmpeg whisper-cpp
# 3) 模型(若没一起拷贝 models/
mkdir -p models && cd models
curl -L -o ggml-small.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin
curl -L -o ggml-base.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin
cd ..
```
## 三、启动
```bash
bash start.sh
# 或: node server.js
```
启动后终端会打印:
```
HTTP : http://localhost:8000 http://<你的IP>:8000
HTTPS: https://<你的IP>:8443
```
- **电脑本机浏览器**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`(读题开关、限时秒数、随机题数、错题加权、静音检测灵敏度等),或首页「⚙️ 家长设置」里直接改常用项。
- 后端模型:默认 `ggml-small.bin`。想更快可切 base
```bash
WHISPER_MODEL=models/ggml-base.bin node server.js
```
- 端口:`PORT=8000 HTTPS_PORT=8443`(环境变量可改)。
## 六、常见问题
- **点“开始”没弹麦克风授权**:多半不是 HTTPS 或证书没「完全信任」→ 重做第四节。
- **识别不准 / 没反应**:确认终端有 `[stt] ... -> "xxx"` 日志;模型加载 `✅`;小朋友吐字清楚、环境别太吵。
- **iOS 上没声音读题**iOS 要求首次交互才解锁语音,点过“开始”后即正常。
- **完全不想用语音**:点游戏里「⌨️ 用手写」,或环境不支持时会自动切数字键盘。