Open Source, Free Tier Capable Whispr Using Cloudflare AI

개요

Whispr는 사용자의 음성을 캡처하여 Whisper STT 및 LLM 포매터를 통해 텍스트로 변환하고, 해당 텍스트를 클립보드에 복사하거나 자동으로 붙여넣는 오픈소스 무료 티어 지원 도구입니다.

주요 내용

* 작동 방식: Wails 데스크톱 앱(Go + React WebView)에서 PCM 청크 오디오 데이터를 WebSocket을 통해 Cloudflare Worker(Durable Object)로 스트리밍합니다. Worker는 Whisper STT로 음성을 텍스트로 변환하고 LLM 포매터를 사용하여 텍스트를 다듬은 후, 결과 텍스트를 클립보드에 복사하고 자동 붙여넣기 기능을 수행합니다.
* 사용자 인터페이스: Ctrl+Cmd와 같은 핫키를 누르면 녹음이 시작되며, 음성 레벨 미터가 표시됩니다. 핫키를 다시 누르면 음성 스트림이 클라우드로 전송되고, 변환된 텍스트는 클립보드에 복사됩니다. macOS에서는 접근성 권한이 필요하며, 설정을 위한 별도의 창도 제공됩니다.
* 프로젝트 구조: 데스크톱 앱은 Wails 프레임워크를 사용하며, 오디오 캡처, 파이프라인, 접근성, 설정, 핫키, STT/포매터 인터페이스 등의 내부 모듈과 React 기반의 프론트엔드 UI를 포함합니다. Cloudflare Worker는 TypeScript로 작성되었으며, 오디오 누적 및 AI 파이프라인 처리를 담당하는 Durable Object를 활용합니다.
* 클라우드 백엔드: STT는 @cf/openai/whisper-large-v3-turbo를, 포매터는 @cf/qwen/qwen3-30b-a3b-fp8를 사용합니다.
* 로컬 백엔드 (2단계): 향후 faster-whisper STT와 Ollama 포매터를 로컬에서 지원할 계획입니다.
* 오디오 사양: 16kHz 샘플 레이트, 모노, PCM signed 16-bit LE, 약 4096 바이트 청크 크기(약 128ms)를 사용하며, 최대 녹음 시간은 약 13분입니다.
* 개발 환경: Go 1.24+, Node.js + pnpm, Wails v2 CLI, Cloudflare 계정 및 Workers AI 접근 권한이 필요합니다. macOS에서는 자동 붙여넣기를 위한 접근성 권한이 필수입니다.
* 배포: Cloudflare Worker를 먼저 배포한 후, 데스크톱 클라이언트를 설정하고 빌드 및 실행합니다. 설정은 TOML 형식으로 저장됩니다.
* WebSocket 프로토콜: 클라이언트와 Worker 간 통신은 /ws 엔드포인트를 통해 이루어지며, 초기 ready 메시지 후 configure 메시지로 오디오 파라미터와 포커스된 요소 컨텍스트를 전달하고 PCM 청크를 스트리밍합니다.

시사점

Whispr는 오픈소스와 무료 티어 지원을 통해 Whisper STT 및 LLM 기반의 강력한 음성-텍스트 변환 기능을 개인 사용자에게 제공하며, 자동 붙여넣기와 같은 편의 기능을 통해 생산성 향상에 기여할 수 있습니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions