mirror of
https://github.com/Melorise/TamaASR.git
synced 2026-11-07 14:39:32 +00:00
92 lines
3.3 KiB
Markdown
92 lines
3.3 KiB
Markdown
# 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
|
||
```
|