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

예열은 은퇴했어

~14 min · tts, workarounds, measurement, evolution

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

잰 이유가 있던 우회책

두 강의 앞에서 테이크 파이프라인은 테이크마다 예열을 하고 시작했어. 첫 테이크 앞엔 담백한 큐 하나를 붙이고, 그 뒤 테이크들은 바로 앞 테이크의 마지막 큐를 빌려 왔지. 예열 문장은 합성 요청 글과 캐시 키에만 실렸고, 오디오를 받아써서 찾아낸 자리에서 잘라내서 아무도 못 듣게 했어. 장식이 아니었어. 예전 음성 모형에선 예열 없이 차갑게 시작한 테이크가 첫 구간을 통째로 뻣뻣한 로봇 톤으로 읽을 수 있었고, 방송 인사처럼 들리는 예열을 붙이면 모형이 테이크 전체를 인트로처럼 읽었어. 둘 다 재본 거야. 그 주위에 지은 장치들은 진짜 결함에 대한 꼼꼼한 대답이었어. 첫머리 큐, 빌려 온 꼬리, 경계 찾기, 자르고 다시 자르기까지.

그런데도 예열은 끝내 깔끔하게 사라지진 않았어. 테이크 여럿에서 예열 조각이 자르기 뒤에도 살아남았고, 받아쓰기 검사가 첫머리가 깨끗하다고 보고했는데 남은 단어가 여전히 들린 적도 있어. 기준 에피소드의 마지막 시청에서 잡힌 유일한 지적도 딱 그런 단어 하나였고.

그 밑의 전제가 바뀌었어

9월 말에 기본 음성 모형이 바뀌었어. 새 테이크는 이제 음성 엔진이 프로필마다 정한 모형을 물려받고, 피파 목소리는 새 모형으로 돌아. 그 모형으로 만든 첫 에피소드는 두 번 렌더했어. A 판은 전처럼 테이크마다 예열을 붙였고, B 판은 테이크마다 자기 대본 글만 보냈어. 주인이 둘 다 듣고 2026-09-29 에 판정했어. B 엔 예열 찌꺼기 소리가 하나도 없고, 테이크에서 테이크로 넘어가도 톤이 안 바뀐다고. 주인은 그 조건이 채워지면 예열을 걷어내자고 미리 말해뒀었고, 조건이 채워진 거야.

은퇴는 반쯤이 아니라 통째로였어. 첫머리 큐 만들기, 빌려 온 꼬리 찾기, 경계 찾기, 자르고 다시 자르기 코드가 지워졌어. 이제 해석기 하나가 테이크마다 보낼 글을 지어. 합성에도, 캐시 정체성에도, 타임라인 찾기에도, 선언한 편집에도, 속도 보고서에도, 정확한 다시 뽑기에도 그거 하나를 써. 그래서 예열이 몰래 돌아올 두 번째 자리가 없어. 대본에 남은 옛 예열 칸은 돈 드는 합성이나 캐시 변경 전에 거절돼. 낡은 대본 하나가 실수로 은퇴한 경로를 다시 켜는 일이 없게. 남은 건 아직 살아 있는 결함에 답하는 것들이야. 숨 되살리기, 정렬, 커버리지 관문, 폭주하는 꼬리 수선, 모형 영수증, 그리고 완성 영상에서 테이크마다 첫머리를 따로 확인하는 검사.

예열을 붙였던 제작물을 새 방식으로 다시 해석하진 않아. 봉인된 도구 묶음이 승인받은 그대로 재생하고, 예열의 마지막 구현은 버전 기록에 남아 있어. 예전 모형으로 잰 속도 기준값은 보고서에 그대로 남는데, 어디를 들어볼지 알려주는 표시일 뿐 새 모형에 대한 판정은 아니야. 주인이 B 의 읽기를 승인했고, 숫자가 그걸 뒤집진 못해.

같은 보름, 같은 모양: 숫자

우회책이 하나 더 같은 식으로 무너졌어. 대본은 원래 숫자를 한글로 풀어서 목소리한테 줬어. 모형이 숫자를 어떻게 읽을지 짐작하지 않게. 그런데 2026-10-10 에 여행 대본 하나가 주인이 받아쓰게 한 '7분'을 '일곱 분'으로 바꿔놨어. 시간이 아니라 사람 일곱이야. 한글로 풀어 쓴 숫자는 읽는 법 하나를 못 박아버리고, 그건 어떤 단위 표로도 못 되돌려. 새 모형은 숫자를 뜻으로 읽으니까 규칙이 뒤집혔어. 숫자는 말한 그대로 숫자로 남아. 한국어가 원래 말로 쓰는 개수는 말로 남고. 그걸 지키는 관문은 자기 패턴을 따로 안 들고 있어. 대본에서 한글로 풀어 쓴 숫자가 뭔지 음성 엔진한테 묻고, 음성 엔진에 닿지 못하면 통과가 아니라 실패야.

같은 몇 주 사이에 있었던 작은 수정 하나도 증거에 대해 같은 얘기를 해. 자막 타이밍은 큐마다 공급자의 글자 시계에 맞춰 닻을 내려. 그런데 음성 엔진이 합성 전에 글 일부를 고쳐 쓰기 시작하자, 대본 글이 실제로 읽힌 말과 안 맞게 됐고 큐들이 닻을 잃었어. 이제 맞춰보는 기준은 목소리한테 실제로 보낸 그 줄이야.

우회책은 모형에 대한 주장이야. 모형이 바뀌면 그 주장을 다시 재. 예열은 그걸 만든 목소리한텐 맞는 답이었어. 은퇴시키는 데엔 짐작이 아니라 A/B 비교 하나와 듣는 사람 한 명이 필요했고, 그다음엔 코드를 지우고, 옛 설정을 시끄럽게 거절하고, 예전 결과물은 있던 그대로 두는 일이 필요했어. 그냥 안 쓰고 있을 뿐인 방패는, 옛 동작이 언제든 돌아올 수 있는 자리야.

Code

2026-09-29 전후로 테이크가 보내는 것·text
BEFORE (older model)                    AFTER (newer model)
------------------------------------    ------------------------------------
[opening cue]  or  [borrowed tail]      (nothing)
<the take's authored page>              <the take's authored page>
cache key = warm-up + page              cache key = page (+ model pin if any)
ASR-located cut removes the warm-up     no cut; the page starts the take
residue check at every opening          independent opening check remains

numbers: spelled out in Korean words    numbers: digits, as said
  '일곱 분' (seven people!)              '7분'  (seven minutes)
돈 쓰기 전에 은퇴한 경로를 거절하기·python
RETIRED = ("opening_warmup", "take_lead_in_from")

def take_request_text(script: dict, members: list) -> str:
    """The ONE resolver: synthesis, cache, timeline, edits, pace, reroll."""
    if script.get("take_warmup", "none") != "none":
        raise SystemExit("warm-up is retired; send the take body only")
    for field in RETIRED:
        if script.get(field):
            raise SystemExit(f"{field} is retired; remove it from the script")
    return page_of(members)        # the authored text, nothing in front of it

# historical productions are NOT re-run through this:
# they replay with the toolchain sealed beside them.

External links

Exercise

네가 관리하는 시스템에서 어떤 의존성의 동작 때문에 생긴 우회책을 하나 찾아봐. 불안정한 서비스용 재시도, 렌더러용 여백, 옛 라이브러리 버전용 예외 같은 거. 그게 보정하는 동작이 뭔지, 마지막으로 그걸 잰 게 언제인지 적어. 그다음 그게 아직 필요한지 알려줄 A/B 를 설계하고, 어떤 결과가 나오면 은퇴시킬지, 그때 뭘 지우고 뭘 거절하고 뭘 보존할지 미리 정해둬.
Hint
어려운 건 세 번째 목록이야. 우회책을 지우는 건 쉬워. 그걸 다시 켤 수 있는 옛 설정을 거절하고, 예전 결과물을 그걸 만든 버전으로 계속 재현할 수 있게 지키는 것, 그게 제거를 은퇴로 바꿔.

Progress

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

댓글 0

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

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