본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

텍스트가 끊기는 자리

~9 min · chunking, cache-identity, prosody

Level 0침묵
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"어디서 자르냐가 어떻게 들리냐를 바꿔. 그러니까 자르는 방식이 늘 같아야 하고, cache 키에도 들어가야 해."

긴 텍스트는 잘라야 해

긴 글은 chunk 단위로 합성돼. 어디서 자르느냐는 사소한 문제가 아니야. 억양이랑 쉼, 숨 쉬는 자리를 그게 빚거든. Bellows의 chunker는 규칙 몇 개를 또렷하게 지켜. 줄바꿈은 단단한 경계야. 글에서 줄이 바뀌면 말에서도 진짜로 끊겨. 그리고 홀로 서거나 앞뒤에 붙은 영어는 떼어내. 한국어 문장 가장자리에 붙은 영어 덩어리가 자기 chunk가 되는 거지. 밑에 깔린 원칙은 하나야. 단어는 온전히 두고, 문장은 깔끔하게 떨어뜨려. 단어 한복판을 자르는 일은 절대 없고, 대신 이음새가 깨끗한 자리는 경계로 삼아.

자르는 방식도 identity의 일부야

여기서 트랙 4랑 이어져. 경계가 달라지면 소리가 달라지니까, 그 경계도 cache identity에 접혀 들어가. 같은 입력을 같은 방식으로 자르면 같은 조각이 나오고 같은 캐시를 맞혀. 만약 chunking이 실행할 때마다 달라진다면, '똑같은' 요청이 매번 다시 합성되고 캐시는 영영 안 맞아. 자르는 방식이 늘 같다는 게, 긴 오디오를 애초에 캐시할 수 있게 만드는 조건이야.

결제 전에 미리 보여줘

자르는 방식이 정해져 있고 결과를 바꾸니까, Bellows는 그걸 미리 보여줄 수 있어. Speak가 확정 전에 chunk 경계를 그대로 펼쳐 보여줘. 텍스트가 어디서 끊길지 눈으로 확인하니까, 돈을 낸 뒤에야 생각 한복판에서 뚝 끊긴 걸 발견하는 일이 없어. 그렇게 고리가 닫혀. 미리 본 그 chunking이 곧 합성되고 키가 매겨지고 캐시되는 그 chunking이야.

Code

늘 같은 쪼개기, 줄바꿈은 딱 끊고 가장자리 영어는 떼어내고·python
def chunk(text: str) -> list[str]:
    chunks = []
    for line in text.split("\n"):          # 1. a newline is a HARD boundary
        # 2. detach standalone / leading / trailing English so a run of English
        #    at a sentence edge becomes its own chunk (words stay whole).
        for piece in detach_edge_english(line):
            chunks.append(piece)
    return chunks

# Chunk boundaries CHANGE the audio (prosody, pauses), so they ride in the
# cache identity. Same text -> same split -> same cached audio.
# Speak previews the exact boundaries BEFORE you pay: no surprise cuts.

External links

Exercise

줄바꿈 몇 개랑 영어가 섞인 짧은 문단을 하나 잡아. 규칙 둘로 직접 잘라봐. 줄바꿈은 단단한 경계, 가장자리 영어는 떼어내기. 경계마다 표시해두고. 그다음 같은 텍스트를 다르게 잘랐을 때 소리가 어떻게 달라질지 보여주고, 그게 왜 경계가 cache 키에 들어가야 한다는 뜻인지 설명해봐.
Hint
먼저 줄바꿈에서 자르고, 그다음 가장자리 영어를 벗겨내. 이제 한 문장을 다른 데서 잘랐다고 쳐봐. 쉼이 옮겨가니까 소리가 달라지지. '같은' 텍스트에서 다른 소리가 나는 것, 그게 자르는 방식이 identity에 들어가야 하는 이유야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.