随时随地使用你的声音,在你的硬件上转录。
Source: Dev.to
这是针对 GitHub Copilot CLI 挑战的提交
我在一次 3 小时的会话中,使用 GitHub Copilot CLI 将一个已有的开源 Windows 桌面应用转变为完整的跨平台移动生态系统。
挑战: 如何在手机上使用高端语音转文字功能,同时保证音频数据 100 % 私密,且避免昂贵的云 API 费用?
解决方案: 一个自托管的移动架构,利用家庭 PC 的 GPU 能力,通过安全的网状网络进行调用。
指标
| 指标 | 结果 |
|---|---|
| 构建时间 | ~3 小时 |
| 代码行数 | ~6,500 行生产代码 |
| 创建的文件 | 50+ 个文件 |
| 架构 | 8 个阶段(后端 → Docker → 移动端 → 文档) |
| 状态 | 生产就绪 |
Architecture
前端: Flutter (Material Design 3) + gRPC 客户端
后端: Python 3.13 + FastAPI + gRPC + Protocol Buffers
推理: faster‑whisper + Ollama (NVIDIA CUDA 12.4)
网络: Tailscale 网状网络(加密隧道)
DevOps: Docker + GPU 直通
┌─────────────────┐
│ Android Phone │ Push‑to‑talk recording
│ Flutter App │ Real‑time transcription
└────────┬────────┘
│
│ gRPC over Tailscale (E2E Encrypted)
▼
┌──────────────────────────────────────────┐
│ Docker Container │
│ ┌──────────────────┐ │
│ │ gRPC Server │ Port 50051 │
│ │ (Transcription) │ │
│ └──────────────────┘ │
│ ┌──────────────────┐ │
│ │ Web Admin Panel │ Port 8080 │
│ │ (Configuration) │ │
│ └──────────────────┘ │
│ ┌──────────────────┐ │
│ │ Whisper AI │ Utilizes Home GPU │
│ │ faster‑whisper │ via NVIDIA CUDA │
│ └──────────────────┘ │
└──────────────────────────────────────────┘
功能
- Push‑to‑Talk: 推送对讲:简洁直观的录音界面。
- AI Improvement: AI 改进:集成 Gemini 支持,优化转录结果。
- Onboarding Wizard: 入职向导:四页设置流程,用于权限和连接测试。
- History & Clipboard: 历史与剪贴板:基于会话的历史记录,一键复制。
- Privacy‑First: 隐私优先:语音永不上传云端 – 手机 → Tailscale → 您的电脑。
- Hardware Ownership: 硬件所有权:使用您自己的 NVIDIA GPU,实现极速本地转录。
- Web Admin: Web 管理:基于浏览器的监控和配置,无需 SSH。
- One‑Command Deploy: 一键部署:
docker‑compose up -d即可上线。
CLI 影响
- 规划了从仅限 Windows 的桌面应用到跨平台的扩展,设计了 8 阶段的架构并执行了每个阶段。
- 将原本需要 2–3 周的调研和原型制作压缩到一次会议完成。
- 强制执行严格的 lint 规则(ruff 开启 ALL)并自动使用 Google 格式的 docstring。
- 在不提示的情况下处理 Python 3.10+ 的类型提示要求。
- 与代码同步生成了完整的文档(Docker、后端、用户指南、质量保证流程)。
- 展示了并行工具调用、跨阶段的上下文保持以及带自动修复建议的错误恢复。
代码示例
# Generated by Copilot CLI to match project standards
from typing import Iterator
import logging
logger = logging.getLogger(__name__)
def transcribe(self, audio: bytes) -> str:
"""Transcribes audio using faster‑whisper.
Args:
audio: Raw audio bytes in WAV format.
Returns:
Transcribed text string.
"""
logger.info("Processing audio: %s", audio_id) # Validated for lazy logging
文档
CLI 生成了七个全面的指南,涵盖 Docker 设置、后端服务、用户说明和 QA 程序。这些指南与代码库保持同步,确保开发者始终拥有最新的参考资料。
许可证
MIT
最终判定
Copilot CLI 并不取代开发者的判断——它是对判断的放大。它零疲劳地处理了机械化的模板代码,使我能够全身心专注于隐私架构和用户体验。
实验代码: GitHub Repository (Mobile Branch) (请替换为实际的 URL)