환영합니다

데스크톱 앱

Vocal Teleprompter

TauriReactTypeScriptRustWeb Speech APITailwind CSS

말하는 사람의 목소리를 실시간으로 듣고 그에 맞춰 대본을 자동으로 스크롤하는 데스크톱 앱입니다. Tauri(Rust + React)로 만든 가벼운 네이티브 바이너리에 웹 기반 UI를 갖추었습니다. Web Speech API와 퍼지 단어 매칭으로 텍스트 속 현재 위치를 추적합니다.

문제

대본을 읽으며 영상을 녹화하려면 대본을 외우거나 직접 스크롤해야 하는데, 둘 다 읽는 흐름을 끊습니다. 시선을 돌리거나 키보드를 만지지 않아도 되도록 목소리를 따라 자동으로 스크롤되는 텔레프롬프터를 원했습니다. 어려운 부분은 스크롤이 아니라, 음성과 위치 추적이 어긋나지 않을 만큼 안정적으로 만드는 것이었습니다.

주요 결정

데스크톱 셸로 Electron 대신 Tauri

Electron은 Chromium 전체를 포함하기 때문에 바이너리가 100MB를 넘고, 메모리 사용량도 브라우저 탭 하나와 맞먹습니다. Tauri는 운영체제의 네이티브 웹뷰(Windows의 WebView2, macOS의 WKWebView)를 사용해 바이너리가 약 3MB이고 RAM 사용량도 훨씬 적습니다. 녹화 중 백그라운드에서 돌아가는 간단한 유틸리티에는 이 무게 차이가 중요합니다.

로컬 Whisper나 클라우드 STT 대신 Web Speech API

사용 사례는 실시간 낭독이므로, 정확도보다 지연 시간이 가장 중요한 제약입니다. 로컬 Whisper는 오디오 조각마다 1~2초의 처리 지연이 생겨 스크롤이 눈에 띄게 목소리보다 늦어집니다. 클라우드 서비스는 네트워크 왕복 지연과 분당 비용이 더해집니다. Web Speech API는 스트리밍 방식이라 말하는 대로 단어 단위로 결과를 내주므로 텔레프롬프터에 딱 맞습니다. 인터넷 연결이 필요하다는 단점이 있지만 감수할 만합니다.

위치 추적에 정확한 문자열 매칭 대신 퍼지 단어 매칭

정확한 매칭은 실제로는 계속 깨집니다. 말하는 사람이 머뭇거리거나, 군말을 넣거나, 전문 용어를 잘못 발음하거나, STT가 거의 맞는 전사를 돌려주기 때문입니다. 다음에 나올 단어들의 슬라이딩 윈도에 레벤슈타인 거리를 적용한 퍼지 매처는 전사가 완벽하지 않아도 가장 가능성 높은 현재 위치를 찾아냅니다. 이것이 이상적인 조건에서만 되는 데모와 실제 녹화에서 쓸 수 있는 도구의 차이였습니다.

결과

앱은 안정적이며 제 녹화에 직접 사용하고 있습니다. 퍼지 매칭은 가장 중요한 설계 결정이었습니다. 정확한 매칭이었다면 실제 세션에서 처음 30초 안에 추적이 어긋났을 것입니다. 이 프로젝트는 Tauri 구조와 Rust 백엔드와 React 프런트엔드 사이의 경계를 실제로 익히는 계기도 되었습니다.

주요 특징

  • —Web Speech API를 이용한 실시간 음성 인식
  • —퍼지 단어 매칭 — 잘못된 발음과 변형에도 강함
  • —부드러운 자동 스크롤과 단어 단위 하이라이트
  • —다국어 지원과 마이크 선택
  • —Tauri 데스크톱 앱: 네이티브 바이너리, Electron의 무게 없음

함께 일해요