"Firekeeper는 귀. Bellows는 입. 그 사이에 brain이 앉아."
목소리엔 두 방향이 있어
"목소리"를 한 가지인 것처럼 말하기 쉬워. 아냐. 들어오는 목소리 — 소리가 텍스트가 되는 것, 받아쓰기, speech-to-text — 랑 나가는 목소리 — 텍스트가 소리가 되는 것, 합성, 재생 — 가 있어. 두 방향, 두 엔진. Firekeeper가 인바운드 반쪽을, Bellows가 아웃바운드 반쪽을 소유해. 둘 다 brain이 아니야. 둘이 brain을 감싸서, 패밀리가 듣기도 하고 말하기도 해.
엔진 하나, 입은 여럿
Bellows는 항상 살아있는 서비스 하나라서, 목소리가 필요한 모든 게 같은 엔진을 향해. cwkPippa의 오래된 공개 TTS 라우트는 두 번째 합성기가 아니라 Bellows로 들어가는 얇은 proxy가 됐어. Keyboard Maestro 매크로가 그걸 불러. cwkBeacon 영상 워크숍이 그걸로 내레이션을 재녹음해. 유료요청이 일어날 수 있는 곳은 정확히 한 군데, 캐시 하나, 오디오 디바이스 하나 — 그리고 그걸 향한 여러 클라이언트.
일부러 빨리 지었어
이 퀘스트는 엔진이 자기 기원 이야기를 들려주는 거라, 짓는 과정 자체가 레슨의 일부야. Bellows는 "아빠랑 아키텍처 확정"에서 첫 진짜 합성 — 짧은 한국어 한 문장, 검증하고, 캐시하고, 스튜디오 인터페이스로 재생하고, 똑같은 두 번째 요청에서 공짜임을 증명 — 까지 하루 만에 갔어. 그 뒤 며칠은 hardening이었어: 계정 분리, 후처리-전-receipt, 라이브 provider 카탈로그, Studio lineage, 한국어 정규화. evolution log가 build diary처럼 읽히는 건, 진짜 그거라서 그래.