음성을 어디서든 가져가세요, YOUR 하드웨어에서 전사하세요.
Source: Dev.to
이것은 GitHub Copilot CLI 챌린지를 위한 제출물입니다
GitHub Copilot CLI를 사용하여 기존 오픈소스 Windows 데스크톱 앱을 단 3시간 만에 전체 규모의 크로스 플랫폼 모바일 생태계로 변환했습니다.
The Challenge: 휴대폰에서 고성능 음성‑텍스트 변환을 사용하면서 오디오 데이터를 100 % 비공개로 유지하고 비싼 클라우드 API 비용을 피하려면 어떻게 해야 할까요?
The Solution: 가정용 PC의 GPU 성능을 보안 메쉬 네트워크를 통해 활용하는 자체 호스팅 모바일 아키텍처입니다.
Metrics
| 지표 | 결과 |
|---|---|
| 빌드 시간 | ~3 시간 |
| 코드 라인 수 | ~6,500개의 프로덕션 라인 |
| 생성된 파일 수 | 50개 이상 파일 |
| 아키텍처 | 8단계 (Backend → Docker → Mobile → Docs) |
| 상태 | 프로덕션 준비 완료 |
아키텍처
프론트엔드: Flutter (Material Design 3) + gRPC 클라이언트
백엔드: Python 3.13 + FastAPI + gRPC + Protocol Buffers
추론: faster‑whisper + Ollama (NVIDIA CUDA 12.4)
네트워킹: Tailscale 메쉬 네트워크 (암호화된 터널)
DevOps: GPU 패스스루가 포함된 Docker
┌─────────────────┐
│ 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 │
│ └──────────────────┘ │
└──────────────────────────────────────────┘
Features
- Push‑to‑Talk: 간단하고 직관적인 녹음 인터페이스.
- AI Improvement: 전사 품질을 다듬는 Gemini 통합 지원.
- Onboarding Wizard: 권한 및 연결 테스트를 위한 4‑페이지 설정 흐름.
- History & Clipboard: 세션 기반 기록과 한 번 탭으로 복사.
- Privacy‑First: 음성은 절대 클라우드에 전송되지 않음 – Phone → Tailscale → Your PC.
- Hardware Ownership: 자체 NVIDIA GPU를 사용해 초고속 로컬 전사.
- Web Admin: 브라우저 기반 모니터링 및 구성 – SSH 필요 없음.
- One‑Command Deploy:
docker‑compose up -d로 바로 실행.
CLI 영향
- Windows 전용 데스크톱 앱에서 크로스‑플랫폼 확장을 계획하고, 8단계 아키텍처를 설계하여 모든 단계를 실행했습니다.
- 2~3주가 걸렸을 연구 및 프로토타이핑을 단 한 번의 세션으로 줄였습니다.
- 엄격한 린팅 규칙(ruff ALL 활성화)과 Google 형식 docstring을 자동으로 적용했습니다.
- Python 3.10+ 타입 힌트 요구사항을 별도 요청 없이 처리했습니다.
- 코드와 함께 포괄적인 문서(Docker, 백엔드, 사용자 가이드, QA 절차)를 생성했습니다.
- 병렬 툴 호출, 단계 간 컨텍스트 유지, 자동 수정 제안을 통한 오류 복구를 시연했습니다.
코드 예시
# 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 절차를 다루는 7개의 포괄적인 가이드를 생성했습니다. 이 가이드들은 코드베이스와 동기화되어 개발자들이 항상 최신 참고 자료를 사용할 수 있도록 보장합니다.
라이선스
MIT
최종 평결
Copilot CLI는 개발자의 판단을 대체하지 않습니다—그것을 강화합니다. 기계적인 보일러플레이트를 피로 없이 처리해 주어, 저는 프라이버시 아키텍처와 사용자 경험에 전적으로 집중할 수 있었습니다.
실험 코드: GitHub Repository (Mobile Branch) (replace with actual URL)