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

이음매가 기능이야

~11 min · constraints, craft, parameters, silence

Level 0불 꺼진 작업장
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

기술이 되어버린 제약

언어 경계에서 합성을 쪼개면 오디오에 작은 틈이 남아. 한 요청이 끝나고 다음이 시작된 자리들. 본능은 그걸 없애는 쪽이야. 무음을 잘라내고, 구간을 딱 붙이고, 호출 하나였으면 그랬을 것처럼 내레이션이 끊김 없이 흐르게 만들기.

이 설계는 반대로 해. 이음매를 남기고, 조율해. 근거는 쪼개는 자리가 무작위로 안 떨어진다는 거야. 언어 전환은 전부 뜻의 경계에서 일어나거든. 인용이 들어오거나 나갈 때, 수정이 도착할 때. 그래서 틈이 어차피 쉼이 있어야 할 자리에 정확히 떨어져. 인용을 앞뒤 내레이션에 딱 붙이면 그게 인용처럼 안 들려.

그래서 기술적 제약이 표현 장치가 됐어. 흐뭇한 결말이고, 살짝 위험한 이야기이기도 해. 여기서 통한 건 특정한 정렬 덕분이야. 제약의 경계가 내용이 원하던 경계랑 겹쳤거든. 그게 보장되는 게 아니고, 이음매가 아무 데나 떨어지는 제약은 그냥 손상이야.

틈 길이는 상수가 아니라 매개변수야

틈을 찌꺼기가 아니라 내용으로 취급하기 시작하면 구현 하나가 따라와. 길이가 구간마다 달라져. 인용이 들어올 때 필요한 쉼이랑 평범한 문장 사이의 쉼이 다르고, 수정이 끼어들 때는 또 달라.

전역 상수 대신 구간별 매개변수로 만드는 건 작은 변경인데 뒤에 일반적인 교훈이 있어. 잘 맞춘 상수 하나는 뭔가를 '최소화할 골칫거리'로 볼 때 쓰는 거야. 사례별 매개변수는 그걸 '쓰고 있을' 때 쓰는 거고. 코드의 형태가 그 둘 중 뭐로 정했느냐에서 따라 나와. 그리고 보통 그 질문을 정하는 게 조율 자체보다 값어치가 커.

이런 뒤집기는 코드 밖에서도 알아볼 만해. 로딩 표시가 '기다림을 가리는 가림막'에서 '얼마나 남았는지 알려주는 장치'가 되는 순간, 애니메이션 길이는 최소화할 상수가 아니라 진행 상황에 묶인 값이 돼. 여백이 '남은 자리'에서 '읽는 속도를 정하는 장치'가 되면, 값은 하나가 아니라 자리마다 달라지고. 매번 같은 전환이야. 골칫거리에서 재료로.

제약이 남긴 흔적을 없애기 전에, 그게 어디 떨어지는지 봐. 내용이 이미 가진 경계에 떨어지면 남기고 다듬을 값어치가 있을 수 있어. 아무 데나 떨어지면 없애. 질문은 그 흔적이 의도된 거였냐가 아냐. 그 위치가 정보를 싣고 있냐야. 그건 우아함을 놓고 논쟁하는 대신 들여다보면 답이 나오고.

Code

내용으로서의 무음, 뜻을 가진 길이·python
@dataclass
class Segment:
    key: str
    lang: str            # exactly one script per segment
    text: str
    gap_after: float     # NOT a constant - this is authored


# a quote entering wants air around it;
# an ordinary sentence break wants much less.
SEGMENTS = [
    Segment("s07", "en", "...and then he said something I did not expect.",
            gap_after=0.55),          # <- setting up a quotation
    Segment("s08", "ko", "<the quoted line, in its own language>",
            gap_after=0.60),          # <- letting it land before returning
    Segment("s09", "en", "He was right, and I had it backwards.",
            gap_after=0.18),          # <- ordinary continuation
]

# The gaps are not what is left over after cutting.
# They are authored, and they are part of the performance.

External links

Exercise

네가 만드는 것에서 기술적 제약이 남긴 흔적을 하나 찾아봐. 페이지 경계, 배치 가장자리, 페이지 나눔, 문서 파이프라인의 청크 경계 같은 거. 그 경계들이 내용 자체의 구조에 견줘 실제로 어디 떨어지는지 봐. 진짜 구분이랑 겹치면 눈에 보이게 만들고 의도적으로 다룰 생각을 해봐. 아무 데나 떨어지면, 그건 네가 그동안 한계라고 불러온 결함이야.
Hint
검색용 문서 청킹이 요즘 제일 선명한 사례야. 고정 크기로 자른 청크는 문장 한가운데, 논지 한가운데 떨어지고, 어떻게 포장해도 그게 기능이 되진 않아. 반면 제목에서 자른 청크는 저자가 이미 만들어둔 구분이랑 겹치고, 독자한테 구조로 내보일 수도 있고.

Progress

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

댓글 0

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

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