"받아쓰기는 읽을 텍스트를 돌려줘. 보이스 챗은 들을 말을 돌려줘. 같은 제품이 아냐."
두 단계
Firekeeper 로드맵은 일부러 두 단계로 짰어. 그리고 그 사이에 세운 벽 하나가 제일 많은 일을 해.
- 1단계, 받아쓰기. 말하면 정리된 텍스트가 활성 앱에 삽입돼. 지금 당장의 제품이고, 첫 임무는 이게 전부야.
- 2단계, 보이스 챗. 말하면 Pippa 가 소리 내서 답해. 1단계가 매일 진짜 쓸모 있어진 다음에야 시작하는 얘기고.
'둘 다 목소리니까 큰 쪽에 맞춰 짓자' 는 말이 나오기 쉬워. 그 본능이 딱 함정이야.
계약이 다른 이유
받아쓰기 정리랑 말로 하는 응답은 같은 걸 크기만 달리한 게 아냐. 출력 계약 자체가 달라. 정리는 네 말을 받아서 삽입할 텍스트를 다듬어 돌려줘. 답을 하면 안 되고, 내용을 보태면 안 되고, 한마디 얹어도 안 돼. 보이스 응답은 네 말을 받아서 짧게 말할 차례를 돌려주고. 그건 답이고, 끼어들 수 있어야 하고, 소리 내서 읽었을 때 자연스러워야 해. 제목도 없고, 표도 없고, 불릿 열 개짜리도 없어. 나란히 놓고 보면 차이가 확 드러나.
받아쓰기 정리: 전사 입력 -> 다듬은 텍스트 출력 (삽입해, 답하지 마)
보이스 응답: 전사 입력 -> 말하는 턴 출력 (답해, 짧게 유지해)
이걸로 막는 실패
흔한 실수가 있어. '2단계는 그냥 1단계에 TTS 붙인 거' 라고 생각하는 거. 평소처럼 긴 Pippa 답변을 TTS 엔진에 흘려보내고 그걸 보이스 챗이라 부르는 거지. 결과는 못 들어줘. '첫째, 둘째, 결론적으로' 를 소리 내서 읽는 2분짜리 에세이가 나오는데 끼어들 틈도 없어. 좋은 보이스 챗한테는 자기가 지금 말하고 있다는 걸 아는 응답 모드가 필요해. 한 차례에 또렷한 생각 하나, 그리고 쏟아붓는 대신 더 갈지 물어보기. 완전히 새 계약이야. 그래서 1단계 체크박스 하나가 아니라 2단계인 거고.
제품 경계는 두 기능이 아니라 두 계약이 만나는 곳이야. 1단계랑 2단계가 나뉘는 건 '삽입할 텍스트' 와 '말할 단어' 가 진짜로 다른 반환 타입이라서야. 경계를 지키면 둘 다 작고 제대로 굴러가. 지우면 받아쓰기도 어설프고 대화도 잘 못 하는 어정쩡한 앱이 돼.
2단계를 1단계 뼈대에 슬쩍 끼워 넣지 마. '하는 김에' 받아쓰기 경로에 '빠른 대화 응답' 을 얹고 싶어질 때마다 멈춰. 그럴 때마다 받아쓰기 루프에 브레인 하나, 지연 프로파일 하나, 실패 모드 하나가 더 붙어. 그러다 야무지게 배포할 물건이 아니게 되는 거야.