"어디서 자르냐가 어떻게 들리냐를 바꿔. 그러니까 자르는 방식이 늘 같아야 하고, cache 키에도 들어가야 해."
긴 텍스트는 잘라야 해
긴 글은 chunk 단위로 합성돼. 어디서 자르느냐는 사소한 문제가 아니야. 억양이랑 쉼, 숨 쉬는 자리를 그게 빚거든. Bellows의 chunker는 규칙 몇 개를 또렷하게 지켜. 줄바꿈은 단단한 경계야. 글에서 줄이 바뀌면 말에서도 진짜로 끊겨. 그리고 홀로 서거나 앞뒤에 붙은 영어는 떼어내. 한국어 문장 가장자리에 붙은 영어 덩어리가 자기 chunk가 되는 거지. 밑에 깔린 원칙은 하나야. 단어는 온전히 두고, 문장은 깔끔하게 떨어뜨려. 단어 한복판을 자르는 일은 절대 없고, 대신 이음새가 깨끗한 자리는 경계로 삼아.
자르는 방식도 identity의 일부야
여기서 트랙 4랑 이어져. 경계가 달라지면 소리가 달라지니까, 그 경계도 cache identity에 접혀 들어가. 같은 입력을 같은 방식으로 자르면 같은 조각이 나오고 같은 캐시를 맞혀. 만약 chunking이 실행할 때마다 달라진다면, '똑같은' 요청이 매번 다시 합성되고 캐시는 영영 안 맞아. 자르는 방식이 늘 같다는 게, 긴 오디오를 애초에 캐시할 수 있게 만드는 조건이야.
결제 전에 미리 보여줘
자르는 방식이 정해져 있고 결과를 바꾸니까, Bellows는 그걸 미리 보여줄 수 있어. Speak가 확정 전에 chunk 경계를 그대로 펼쳐 보여줘. 텍스트가 어디서 끊길지 눈으로 확인하니까, 돈을 낸 뒤에야 생각 한복판에서 뚝 끊긴 걸 발견하는 일이 없어. 그렇게 고리가 닫혀. 미리 본 그 chunking이 곧 합성되고 키가 매겨지고 캐시되는 그 chunking이야.