Files
2026-09-01 22:37:25 +08:00

92 lines
3.3 KiB
Markdown
Raw Permalink 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.
# TamaASR
TamaASR 是面向 Linux/Fcitx5 的桌面语音输入工具。
和常规ASR软件不同,本软件不运行本地模型或要求用户提供ASR api进行调用,而是通过将语音输入转发到支持语音识别的AI网页对话助手,再将识别到的文字抓取并发送到fcitx5完成输入。
您需要在本软件的内置浏览器里登录对应的AI助手平台,然后在外部按住快捷键即可进行输入。
从官方渠道(Github Releases,星火商店等)获取到的本软件,不会获取您的任何个人信息、AI平台账户信息、对话记录或语音输入记录
如果您是从其它渠道获取,且无法确认来源可信,请立即卸载并更换为官方来源的版本以防止个人信息泄露
本项目遵循MPL-2.0许可证开源
当前支持的可作为输入源的后端:
- 千问
- 元宝
### 出于个人原因(多次尝试后效果不符合预期,个人设备不兼容等),本项目暂不考虑迁移到Tauri或QtWebEngine。
## 架构
```text
网页后端适配器
→ Electron 后端窗口与登录会话
→ 会话状态机
→ $XDG_RUNTIME_DIR/tama-asr/fcitx5.sock
→ Fcitx5 常驻 addon
→ 当前应用的 preedit / commit
```
`src/main/index.ts` 只负责应用启动与依赖组合。主要模块位于:
- `src/backends/`:后端定义、DOM 适配器和注册表;
- `src/main/backend-manager.ts`:后端窗口、登录状态和就绪状态;
- `src/main/session-controller.ts`:语音会话状态机;
- `src/main/fcitx-bridge.ts`:本地 JSONL 协议;
- `src/main/settings-store.ts`:设置持久化;
- `src/main/tray-controller.ts`:托盘生命周期和就绪颜色;
- `src/main/overlay-controller.ts`:悬浮球显示与位置;
- `src/renderer/`、`src/preload/`:设置页、悬浮球和安全 IPC。
## 本地开发
依赖:Node.js 22+、CMake 3.16+、支持 C++20 的编译器、Fcitx5 Core/Utils 开发包、nlohmann-json。
```bash
pnpm install --frozen-lockfile
pnpm test
pnpm run build:fcitx5
./linux/fcitx5/install-user.sh
fcitx5 -r
pnpm start
```
应用默认由托盘常驻,设置页与后端调试窗口默认隐藏。首次打开某个后端的调试窗口时,应用会提示登录;登录状态保存在该后端自己的 persistent partition 中。
默认按住 `Ctrl+Shift+Space` 开始录音,松开后停止。快捷键可在设置页修改,并通过本地协议同步给 Fcitx5 addon。悬浮球常驻时,点击可开始或停止录音。
## 后端扩展
新增后端时需要:
1. 添加 `BackendDefinition`;
2. 实现 `BackendWebAdapter`;
3. 在注册表中注册定义和网页适配器;
4. 添加注册、URL 归属和 DOM 探测测试。
网页编辑器中的当前完整文本是唯一可信结果。不要自行拼接服务端 partial/final,也不要在 Fcitx5 层加入厂商判断。
## Linux 分发
```bash
pnpm run build:linux:dir
pnpm run package:deb
pnpm run package:rpm
```
Arch/pacman 配置位于 `packaging/arch/`,Nix 入口为 `flake.nix`。详细依赖、验证状态和发布前替换项见 `packaging/README.md`。
## Nix Cachix缓存源
缓存源:https://meloasr.cachix.org
公钥:meloasr.cachix.org-1:oMmpfj7D1pQTtJx6cHYupvPDJPFlkBB0JIpJYvkR5hc=
## 验证
```bash
pnpm test
pnpm run build
pnpm run build:fcitx5
ctest --test-dir linux/fcitx5/build --output-on-failure
```