"cache 키는 약속이야. 같은 키면 같은 소리. 약속을 깨면 캐시가 거짓말해."
키가 게임 전부야
content-addressed 캐시는 키만큼만 좋아. 규칙은 명확해. 키엔 정규화한 텍스트랑 결과 오디오를 바꿀 수 있는 입력이 다 들어가야 해. 해석된 binding, 모델, 목소리 설정, 언어, 발음 사전 버전, seed, 그리고 주변 context. 이 목록을 빠짐없이 채우면 캐시는 보증이 돼. 틀리면 캐시는 자신 있는 거짓말쟁이가 되고.
틀리는 두 가지 방식
뭔가 빠뜨렸다고 쳐. 이를테면 모델 버전. 그러면 진짜로 다른 두 요청이 같은 키로 해시돼. 두 번째가 첫 번째의 오디오를 받는데, 미묘하게 틀렸는데 완전한 자신감으로 서빙돼. 그게 under-specified 키고, 위험한 실패야. 반대 실수는 over-specified 키야. 타임스탬프처럼 오디오에 영향 안 주는 걸 넣으면, 똑같은 요청이 절대 안 맞아떨어져. 그래서 매번 결제하고 캐시가 제값을 못 해.
정규화 먼저, 해시 나중
키가 날 텍스트가 아니라 정규화한 텍스트를 해시하는 걸 봐. 정규화가 지우는 방식으로만 다른 두 입력은 같은 오디오를 내야 하니까 같은 키를 내야 하거든. 그래서 정규화(트랙 7)가 identity보다 먼저 돌아. 캐시는 친 것의 우연한 차이가 아니라 실제로 말해질 것에 키를 매겨.