OpenTypeless 소개: 진짜 작동하는 음성 입력

·tover0314·10분 소요

음성 입력은 수년 전부터 존재했지만, 제가 원하는 방식으로 작동한 적은 없었습니다. 기본 받아쓰기는 하나의 제공자에 종속되어 있고, 서드파티 도구는 구독이 필요하며, 결과물은 항상 많은 수정이 필요했습니다. 저는 근본적으로 더 나은 것을 원했습니다 — 음성-텍스트 파이프라인의 모든 부분을 완전히 제어할 수 있는 도구를요.

음성 입력의 문제점

개발자로서 하루의 대부분을 타이핑에 보냅니다. 음성 입력은 반복적인 작업 시간을 크게 줄여줄 수 있지만, 기존 솔루션들은 핵심적인 부분에서 부족했습니다. 하나의 음성 인식 엔진에 고정되어 전환할 방법이 없었고, 결과물을 다듬어주지 못해 군더더기와 구두점이 빠진 원시 변환 결과를 그대로 받아야 했습니다. 전문 용어도 제대로 처리하지 못해서 'PostgreSQL'이 매번 'post gress sequel'로 변환되곤 했습니다.

찾을 수 있는 모든 음성 입력 도구를 시도해 봤습니다. macOS 받아쓰기는 일상적인 텍스트에는 괜찮았지만 코드 관련 대화에는 형편없었습니다. Windows 음성 인식은 2005년의 유물 같았습니다. Otter.ai나 Whisper 기반 도구 같은 서드파티 앱들이 더 나았지만, 모두 같은 근본적인 문제가 있었습니다: 파이프라인을 커스터마이즈할 수 없다는 것이었습니다. 그들이 선택한 STT 엔진, 그들이 구현한 후처리, 그들이 부과한 제한에 그대로 묶여 있어야 했습니다.

  • STT 제공자 선택 불가 — 하나의 엔진에 종속
  • AI 다듬기 없음 — 군더더기와 문법 오류가 포함된 원시 변환 결과
  • 전문 용어 처리 미흡 — 'React'가 'react'로, 'PostgreSQL'이 알아볼 수 없는 텍스트로 변환
  • 사용자 사전 없음 — 프로젝트별 용어를 학습시킬 수 없음
  • 구독 요금제 — 유틸리티 수준의 도구에 매달 비용 지불

OpenTypeless를 만든 이유

제가 필요했던 것은 직접 제공자를 선택하고, 음성을 자동으로 다듬어주며, 데스크톱의 어떤 앱에서든 작동하는 도구였습니다. 웹 앱도, 브라우저 확장 프로그램도 아닌 — 전역적으로 오디오를 캡처하고 다듬어진 텍스트를 어디든 붙여넣을 수 있는 진정한 네이티브 데스크톱 앱이요. 핵심 통찰은 음성 입력이 사실 파이프라인 문제라는 것이었습니다: 마이크 캡처, 음성-텍스트 변환, AI 텍스트 다듬기, 클립보드 출력. 각 단계가 독립적으로 설정 가능해야 합니다.

💡OpenTypeless의 핵심 철학: 자신의 API 키를 사용하고, 원하는 제공자를 선택하며, 완전한 제어권을 유지합니다. 중간자 없음, 구독 없음, 종속 없음.

아키텍처 심층 분석

OpenTypeless는 성능과 확장성을 위해 설계된 최신 데스크톱 기술 스택 위에 구축되었습니다. 아키텍처는 관심사를 깔끔하게 분리합니다: 네이티브 셸이 시스템 통합을 담당하고, UI 레이어가 사용자 상호작용을 처리하며, 제공자 시스템이 모든 외부 API 통신을 관리합니다.

Tauri 셸, React UI, 제공자 시스템을 보여주는 OpenTypeless 아키텍처 다이어그램
OpenTypeless의 계층형 아키텍처: Tauri 데스크톱 셸, React UI, 모듈식 제공자 시스템

Tauri 데스크톱 셸

Tauri는 네이티브 데스크톱 셸을 제공합니다 — 백엔드에 Rust를 사용하여 뛰어난 성능, 작은 바이너리 크기(10MB 미만), 견고한 보안을 실현합니다. Electron과 달리 Tauri는 Chromium을 번들링하는 대신 시스템의 네이티브 웹뷰를 사용하여 메모리 사용량이 획기적으로 줄어듭니다. Rust 백엔드는 오디오 캡처, 글로벌 단축키 등록, 클립보드 관리, 시스템 트레이 통합을 담당합니다. 이 모든 작업은 네이티브 OS 접근이 필요하며 Rust의 성능 특성이 큰 이점을 제공합니다.

React + TypeScript 프론트엔드

UI는 React와 TypeScript로 구축되어 완전한 타입 안전성과 함께 익숙한 개발 경험을 제공합니다. 프론트엔드는 녹음 컨트롤, 설정 패널, 텍스트 미리보기, 제공자 설정을 처리합니다. 상태 관리는 간단합니다 — React의 내장 훅이 로컬 상태를 관리하고, Tauri의 IPC 브릿지가 시스템 작업을 위해 Rust 백엔드와 통신합니다.

제공자 시스템

제공자 시스템은 OpenTypeless의 가장 중요한 아키텍처 결정입니다. 단일 STT 엔진이나 LLM을 하드코딩하는 대신, OpenTypeless는 어떤 제공자든 구현할 수 있는 깔끔한 인터페이스를 정의합니다. 새로운 제공자를 추가하는 것은 간단한 어댑터를 구현하는 것으로 충분하며 — 파이프라인의 나머지 부분은 변경할 필요가 없습니다.

현재 OpenTypeless는 6개의 STT 제공자(Deepgram Nova-3, OpenAI Whisper, Groq Whisper, GLM-ASR, AssemblyAI, SiliconFlow)와 11개의 LLM 제공자를 지원합니다. 각 제공자마다 강점이 다릅니다 — Deepgram은 영어 정확도가 뛰어나고, Groq는 가장 낮은 지연 시간을 제공하며, GLM-ASR은 중국어에 최적화되어 있고, Ollama는 완전히 오프라인으로 로컬에서 실행됩니다.

음성 입력 워크플로: 마이크에서 STT, LLM을 거쳐 클립보드까지
음성 입력 파이프라인: 마이크 → STT 제공자 → LLM 다듬기 → 클립보드

AI 텍스트 다듬기

원시 음성-텍스트 변환 결과는 본질적으로 지저분합니다. 사람들은 '음', '그러니까', '있잖아' 같은 말을 하는데 — 대화에서는 괜찮지만 글로 쓰면 좋지 않습니다. OpenTypeless의 AI 다듬기 단계는 원시 변환 결과를 선택한 LLM에 정교하게 설계된 프롬프트와 함께 전송하여 문법을 교정하고, 구두점을 추가하고, 군더더기를 제거하고, 텍스트를 자연스럽게 서식화합니다. 사용자 사전 기능은 전문 용어가 정의한 그대로 정확히 보존되도록 합니다.

Loading animation…

설계 단계부터 고려한 프라이버시

OpenTypeless에서 프라이버시는 나중에 추가된 것이 아니라 핵심 설계 원칙입니다. API 키는 여러분의 기기에 로컬로 저장되며 저희 서버로 전송되지 않습니다. 오디오는 여러분의 컴퓨터에서 선택한 STT 제공자에게 직접 전송됩니다 — 중간에 OpenTypeless 서버가 없습니다. 텔레메트리를 수집하지 않고, 사용량을 추적하지 않으며, 변환 결과에 접근하지 않습니다. 코드는 완전히 오픈소스이므로 모든 주장을 직접 검증할 수 있습니다.

💡데이터 흐름: 여러분의 마이크 → 선택한 STT 제공자 → 선택한 LLM → 여러분의 클립보드. OpenTypeless는 여러분의 오디오나 텍스트를 절대 보지 않습니다.

오픈소스 철학

OpenTypeless는 MIT 라이선스이며 영원히 무료입니다. 훌륭한 도구는 모든 사람이 접근할 수 있어야 한다고 믿습니다. 오픈소스 모델은 커뮤니티가 제공자를 추가하고, 버그를 수정하고, 기능을 확장할 수 있다는 것을 의미합니다. 또한 종속될 일이 없다는 뜻이기도 합니다 — OpenTypeless가 내일 사라지더라도 코드는 여전히 남아 있습니다. 이미 여러 기여자들이 제공자 어댑터와 UI 개선을 추가했으며, 프로젝트는 누구의 풀 리퀘스트든 환영합니다.

제대로 작동하지 않는 음성 입력에 지치셨다면, OpenTypeless를 한번 사용해 보세요. 웹사이트에서 다운로드하고, 자신의 API 키를 설정한 후, 음성으로 타이핑을 시작하세요 — 어디서든. 사용하는 언어와 용도에 맞는 최적의 결과를 얻으려면 올바른 STT 제공자 선택 가이드를 확인해 보세요.