Skip to content

DSSH v1.0 — 语音输入 🎤

Choose a tag to compare

@Fishason Fishason released this 07 May 07:11
· 32 commits to main since this release

v1.0 是 DSSH 的"功能完整"里程碑——上屏 ANSI 终端、下屏拼音 IME、物理键
完整映射、语音输入全部跑通了。从 v0.4.0 以来唯一的核心新增是 语音输入,
但这是个把 3DS 从"能打字" → "能开口说"的质变功能。


🎤 语音输入(v1.0 新增)

按 START → 说一句中文 → 再按 START → 转写文字直接进 SSH 终端。
端到端约 1-2 秒。

3DS 麦克风 ─ 16 kHz PCM ─► libssh2 第二 channel ─► dssh-whisper-shim
                                                    │
                                                    ▼
                                           OpenRouter Whisper Turbo
                                          (或自部署 whisper.cpp)
                                                    │
                                                    ▼
                                          返回 UTF-8 中文 → SSH 终端
  • 零新端口、零新认证:复用现有 SSH session 开第二个 libssh2 channel
  • 默认走云端 OpenRouter Whisper Large V3 Turbo:~1-2 秒响应、$0.04/小时
  • 可切自部署 whisper.cpp:装 dual track 后一行 dssh-whisper switch local
  • 状态指示:软键盘左上角 红 "REC" 脉冲 → 青色 Braille 旋转 → 完成上屏

详见 README 中的 语音输入 章节。

快速开始

到 openrouter.ai/settings/keys
拿一个 API key,然后在服务器:

git clone https://github.com/Fishason/DSSH.git ~/dssh-repo
bash ~/dssh-repo/tools/install_whisper_api.sh
# 按提示粘贴 API key

然后把新版 DSSH.cia 装到 3DS,连上 SSH,按 START 说话即可。

dssh-whisper CLI

dssh-whisper status     # 当前 track + key 是否在
dssh-whisper switch     # toggle api ↔ local
dssh-whisper start      # 启动本地 daemon(双轨装态)
dssh-whisper stop       # 停 daemon(也叫 close)
dssh-whisper logs -f    # tail 日志
dssh-whisper uninstall  # 全卸

两种安装方式对比

API 轨(推荐) 双轨
推理位置 OpenRouter 云端 云端默认 + 本地 fallback
服务器占用 ~30 KB ~600 MB(含 small.zh 模型)
4 秒音频延迟 ~1-2 秒 API: ~1-2s · 本地 2-30s
费用 $0.04/音频小时 按 track 算
隐私 音频上云 本地轨音频不出服务器

🛠 其它 polish(自 v0.4.0)

  • font_atlas.c fallback_alias() 扩展 ~30 条 emoji 等价映射:✅→✔
    ❌→✖ 🟢🔵🔴→● 🚀→↗ 等。Lazy.nvim / Mason / lspstatus 用 emoji 标注
    状态时不再显示 ?。
  • 3DS 顶屏 banner 更新:去掉残留的 "M7" milestone 文字,改成
    "DSSH ● pinyin IME (R toggle) ● voice (START to record)"。
  • 物理键 START 重绑定:原本是 "退出程序",由于 3DS HOME 按钮已可
    退出任何 homebrew,START 退出冗余;现在 START 是语音输入开关。
  • 新增 ssh_client aux channel API:libssh2 多 channel 包装,未来
    其它"通过 SSH 调远端命令"的功能(文件浏览、剪贴板同步等)可直接复用。

📦 安装

想要的 下载
Homebrew Launcher 启动 `3dssh.3dsx`
HOME 菜单图标启动(推荐) `DSSH.cia`(用 FBI 安装)
完整演示视频(v0.3 拼音 IME,v1.0 也兼容) `demo.mp4`

SD 卡部署:私钥 `id_rsa` 和 `config.ini` 放 `/3ds/3dssh/`(详见 README)。

🔄 从 v0.4.0 升级

3DS 端:直接用新 `.cia` 覆盖安装。

服务器端(如果想用语音输入):

git clone https://github.com/Fishason/DSSH.git ~/dssh-repo
bash ~/dssh-repo/tools/install_whisper_api.sh

不想用语音也完全不影响——v1.0 客户端可以连任何标准 SSH 服务器,
START 键不按就什么都不做。

🐛 已知边界

  • 单次录音上限 ~7 秒(受 256 KB mic buffer 限制)。再长可以拆两次。
  • 服务器需要外网出口才能用 API 轨;如果服务器在内网/无外网环境,
    装 dual track 即可全离线运行。
  • OpenRouter audio API 计费有 10 秒下限(4 秒音频也按 10 秒收费),
    但单价就 $0.000111,完全不影响个人使用。