말하는 대로
대본이 따라 흐른다
음성 인식으로 대본이 자동 스크롤되는 텔레프롬프터입니다. 발표자 폰·키보드·오퍼레이터가 한 대본을 함께 넘기고, 네트워크가 끊겨도 대본은 기기에서 그대로 열립니다. 카메라 녹화와 맞춤법 AI 교정까지 한 앱에 있습니다.

소개 화면과 프롬프터 화면
// the brief
텔레프롬프터는 '읽어주는 속도'와 싸운다
대부분의 텔레프롬프터는 정해진 속도로 대본을 올립니다. 그러면 사람이 기계 속도에 맞춰야 합니다. 조금 빨라지거나 한 박자 쉬면 대본이 혼자 앞서가고, 따라잡느라 말이 흔들립니다. 발표나 촬영처럼 다시 찍기 어려운 순간일수록 이 어긋남이 큽니다.
현장 조건도 까다롭습니다. 발표자와 오퍼레이터가 한 대본을 동시에 넘기고, 대본은 보통 PDF나 워드 파일로 옵니다. 촬영장 와이파이는 끊기기 쉽고, 녹화물은 폰에 바로 저장돼야 합니다. 목소리를 따라가는 스크롤에 더해 이 조건들이 함께 맞아야 현장에서 쓸 수 있는 도구가 됩니다.
// approach
접근
핵심은 스크롤 속도를 사람에게 맞추는 것입니다. 지금 읽고 있는 위치를 실시간으로 대본 위 좌표에 붙여, 그 지점이 늘 화면의 시선 높이에 오도록 대본을 흘립니다. 화면은 React 19와 Vite로, 서버는 Cloudflare Workers와 D1으로, 오프라인 저장은 기기 안 데이터베이스로 만들었습니다.
실사용자가 있는 앱이라, 화면 위치 계산과 기기 사이 동기화처럼 빌드만으로는 확인되지 않는 부분은 실제 브라우저로 재고, 계산 로직은 자동 테스트로 고정했습니다.
// key decisions
핵심 결정
여럿이 동시에 눌러도 같은 결과로
라이브 현장에서는 발표자 폰·오퍼레이터 노트북·키보드가 한 대본을 같이 제어합니다. '재생/정지 바꾸기' 같은 명령은 두 사람이 거의 동시에 누르면 서로 상쇄돼 상태가 뒤집힙니다. 그래서 원격 명령을 '재생'과 '정지'처럼 결과가 정해진 명령으로 나눠, 같은 명령이 겹쳐 도착해도 상태가 뒤집히지 않게 했습니다. 오퍼레이터가 손으로 넘기면 4초 동안 음성 추적을 멈췄다가 지금 위치에서 다시 이어받아, 사람과 음성 추적이 부딪히지 않습니다.
쓸수록 비용이 드는 인식은 Pro에만
서버에서 돌리는 음성 인식은 쓴 만큼 비용이 듭니다. 무료 사용자에게까지 열면 사용자가 늘수록 비용이 커져 무료 플랜을 유지할 수 없습니다. 그래서 무료 플랜은 브라우저에 내장된 음성 인식을 쓰고, 서버 음성 인식은 Pro 전용 '정밀 음성 인식'으로 둡니다. 음성이 들어오는 입구를 한 곳으로 좁혀 두어, 새 인식 엔진을 붙여도 대본을 따라가는 부분은 고치지 않습니다. 이용 자격과 월 사용량은 서버가 확인해 브라우저에는 15분짜리 일회용 열쇠만 주고, 거부되거나 3분 넘게 인식 결과가 없으면 안내와 함께 기본 인식으로 돌아갑니다.
네트워크가 끊겨도 대본은 그대로
촬영장 네트워크는 끊기기 쉽습니다. 그래서 대본은 기기 안에 먼저 저장하고, 연결되면 서버와 맞춥니다. 편집 중에 화면을 떠나도 마지막 입력까지 저장하고, 실제로 저장된 문서만 '반영됨'으로 표시하며, 큰 문서는 나눠 보냅니다.
세 결정의 기준은 현장에서 깨지지 않는 것입니다. 텔레프롬프터는 생방송과 촬영처럼 되돌릴 수 없는 순간에 쓰이기 때문입니다.
// voice
음성 추적: 지금 읽는 자리를 정확히
음성 추적에서 어려운 부분은 말을 알아듣는 것보다, 지금 대본의 어디를 읽고 있는지 정확히 잡는 것입니다. 다음 문단에 비슷한 단어 세 개가 우연히 나오면 스크롤이 엉뚱한 곳으로 튀어 발표자를 놓칩니다. 그래서 평소에는 한 번에 12단어 넘게 앞으로 건너뛰지 않게 막고, 발표자가 실제로 몇 줄을 건너뛰었을 때만 넓게 다시 찾습니다. 우연한 일치 무시·실제 건너뜀 따라잡기·연속 추적 안정성은 자동 테스트로 지킵니다.
17개 언어를 지원하려고 두 가지를 따로 설계했습니다. 하나는 띄어쓰기가 없는 일본어·중국어·태국어입니다. 이 문자들은 글자 하나를 낱말처럼 세어 맞추고, 한 글자짜리는 정확히 같을 때만 맞는 것으로 봐 엉뚱한 일치를 막았습니다. 다른 하나는 숫자입니다. 대본의 '두 시'와 인식 결과의 '2시', 'twenty-four'와 '24'가 서로 맞도록 숫자를 같은 값으로 바꿔 비교하는데, 대본과 인식 결과 양쪽에 같은 방식을 적용해 한쪽만 어긋나지 않게 했습니다.
// billing
결제·환불·탈퇴를 약관대로
정기결제는 토스페이먼츠로 붙였습니다. 갱신 예정 안내는 앱을 열지 않는 사람에게도 닿게 했고, 환불은 약관에 적은 대로 실제로 실행되는 경로를 따로 만들었습니다. 회원 탈퇴도 앱 안에서 끝나며, 남은 이용 기간이 사라진다는 사실을 먼저 알리고 확인받습니다.
결제는 실수의 대가가 큰 영역이라, 배포할 때마다 결제와 로그인 시험을 모두 돌리고 결제 설정이 잘못된 판은 배포되지 않게 막습니다. 요금과 환불 규정은 가입하지 않아도 볼 수 있게 열어 두었습니다.
iOS 앱이 나오면서 결제 경로가 둘이 됐습니다. 웹 결제는 토스로 청구하고, App Store 구독은 애플이 청구합니다. 두 경로를 섞지 않고, App Store 구독의 이용 권한은 애플에 직접 확인한 결과로 정합니다. 해지·환불 안내도 구매한 곳에 맞춰 나눴고, App Store 구독은 계정을 지워도 해지되지 않아 탈퇴 전에 그 사실부터 알립니다.
// result
결과
frompter.com에서 운영 중이고, App Store에도 출시했습니다(2026-10-03 · 17개 언어). 발표·촬영 현장에서 목소리로 대본을 넘기고, 폰이나 애플워치를 리모컨으로 쓰며, 네트워크 없이도 씁니다. PDF·워드 대본을 그대로 가져와 바로 올리고, 녹화물은 공유 시트로 내보냅니다. 로그인은 패스키로 간편하게 하고, 대본은 기기와 서버가 알아서 맞춥니다. 핵심 기능은 무료로 두고, 정밀 음성 인식처럼 쓸수록 비용이 드는 기능과 고화질 녹화·2차 화면 출력 같은 제작용 기능을 Pro(연 99,000원)로 나눴습니다.
// 이런 걸 만들어 드립니다.