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로 합성되고, 어디서 자르냐는 겉치레가 아냐 — prosody, 쉼, 숨을 빚어. Bellows의 chunker는 몇 개 명확한 규칙을 따라. newline은 hard 경계야: 텍스트의 줄바꿈이 말의 진짜 끊김이야. 그리고 홀로 선, 앞, 뒤 영어가 detach돼 — 한국어 문장 가장자리의 영어 덩어리가 자기 chunk가 돼. 이끄는 원리는 "단어는 온전하게, 문장은 detach"야: 절대 단어 중간에서 쪼개지 마, 근데 깨끗한 이음새는 경계가 되게 해.

자르기가 identity의 일부야

여기 트랙 4로 이어지는 연결이 있어: chunk 경계가 오디오를 바꾸니까, cache identity에 접혀 들어가. 같은 입력이, 같게 chunk되면, 같은 split을 내고 같은 캐시를 맞혀. chunking이 비결정론적이면 — 실행마다 다른 경계 — '똑같은' 요청이 매번 재합성하고, 캐시가 절대 안 맞아. 결정론적 chunking이 긴 오디오를 애초에 캐시 가능하게 만드는 거야.

결제 전에 preview해

split이 결정론적이고 중요하니까, Bellows가 그걸 너한테 보여줄 수 있어. Speak가 커밋 전에 정확한 chunk 경계를 preview해 — 텍스트가 어디서 끊길지 봐서, 이미 결제한 뒤에 생각 중간에 떨어지는 놀라운 자르기가 없어. 루프를 닫아: preview에서 보는 chunking이 합성되고, 키 매겨지고, 캐시되는 그 chunking이야.

Code

결정론적 split: newline hard-break, 가장자리 영어 detach·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

줄바꿈 몇 개랑 품은 영어가 좀 있는 짧은 혼합 언어 문단을 잡아. 두 규칙으로 손수 chunk해: newline은 hard 경계, 가장자리 영어는 detach. 모든 경계를 표시해. 그다음 같은 텍스트의 다른 chunking이 오디오를 어떻게 바꿀지 보이고 — 그게 왜 chunk 경계가 cache 키에 있어야 한다는 뜻인지 설명해.
Hint
먼저 newline에서 자르고, 그다음 가장자리 영어를 벗겨. 이제 한 문장을 다른 데서 자른다고 상상해: 쉼이 움직이니까 오디오가 달라져. '같은' 텍스트에서 다른 오디오가, 정확히 자르기가 identity의 일부여야 하는 이유야.

Progress

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

댓글 0

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

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