2026년 9월 7일 새벽, 제가 만든 짧은 영상에서 자막과 목소리가 어긋났습니다.

화면에는 2번 이야기가 떠 있는데 흘러나오는 소리는 8번 이야기였죠. 저는 자막을 자르는 규칙을 고쳤습니다. 한 번, 두 번, 세 번.

그런데 고칠수록 어긋난 자리가 늘었습니다. 원인이 자막에 없었거든요. 여러분이 고지서 금액이 이상해서 눈에 보이는 항목부터 바꿔 본 적 있다면, 오늘 글은 바로 그 자리 이야기입니다.

고친 자리와 원인이 난 자리가 겹치지 않았습니다
머니노트 · 정보·교육·참고용
표로 보기
한 편에서 벌어진 일
항목 설명
자막 규칙 수정 3회 원인은 아니었음
진짜 원인 자리 2곳 소리 쪽과 화면 쪽
사라진 화면 재료 32% 23.2초 손실

같은 자리를 세 번 고쳤는데, 왜 더 어긋났을까요

이 영상은 장면 여덟 개로 나뉘어 만들어집니다. 그 한 장면을 저희는 씬이라고 부릅니다. 씬마다 원고가 있고, 그 원고를 소리로 바꿔 파일 하나씩 만듭니다.

소리를 만드는 과정은 중간에 임시 파일을 하나 씁니다. 반죽을 잠깐 담아 두는 통 같은 거예요.

그 통의 이름이 고정이었습니다.

여덟 개 조각을 나란히 붙이는 작업
Photo: Alex Fu / Pexels

쉽게 말하면 이런 겁니다. 미장공 넷이 같은 현장에 투입됐는데 시멘트 통이 하나뿐인 거죠. 각자 자기 반죽을 부으면, 마지막에 부은 사람 것만 남습니다.

실제로 그날 씬 넷이 같은 초에 만들어졌습니다. 18시 37분 45초였습니다.

같은 순간에 만들어진 씬만 깨졌습니다
머니노트 · 정보·교육·참고용
표로 보기
깨진 씬과 멀쩡한 씬을 갈라 봤습니다
여덟 개 씬 중 깨진 쪽 멀쩡한 쪽
어느 씬인가 2·4·7·8번 1·3·5·6번
만들어진 시각 네 개가 같은 초 서로 떨어진 시각
소리 파일 상태 4·7번 파일 동일 전부 다름

이 표의 오른쪽 칸이 중요합니다. 떨어진 시각에 만들어진 씬들은 하나도 안 깨졌거든요.

원인을 찾았다고 말하려면 이게 있어야 합니다. “이 설명이 맞다면 저쪽은 멀쩡해야 하는데, 정말 멀쩡한가?” 그 확인이 없으면 그건 원인이 아니라 그럴듯한 이야기일 뿐입니다.

오해하지 마세요. 소리를 만들어 주는 프로그램이 잘못한 게 아닙니다. 통 이름을 하나로 정해 둔 건 저예요.

고친 것은 한 줄이었습니다.

통을 하나 쓰던 것을 각자 쓰게 바꿨습니다
머니노트 · 정보·교육·참고용

한 줄이면 끝날 일이었습니다. 그 한 줄에 닿기까지 저는 엉뚱한 화면만 세 번 들여다봤습니다.

그럼 저는 그 세 번 동안 뭘 보고 있었을까요

소리가 이상하다는 말을 듣고 제가 연 것은 파형이었습니다. 소리의 모양을 그림으로 그린 것입니다.

파형을 보니 빈 곳도, 끊긴 곳도 없었습니다. 그래서 “소리는 멀쩡하다”고 적었습니다.

물론 파형도 쓸모가 있습니다. 소리가 비었는지, 중간에 뚝 끊겼는지는 파형으로 바로 보이거든요. 다만 파형은 무슨 말을 했는지를 못 봅니다.

소리의 모양만 보고 있었습니다
Photo: Egor Komarov / Pexels

4번과 7번 파일은 파형까지 똑같았습니다. 그런데 파형이 똑같다는 건 둘을 나란히 놓고 봐야 드러납니다.

파형은 끊겼는지만 봅니다
머니노트 · 정보·교육·참고용
표로 보기
소리를 재는 방법 두 가지
제가 쓰던 것과 안 쓴 것 파형 그림 받아쓰기
재는 것 소리의 모양 말한 내용
중간에 끊겼나 알 수 있음 알 수 있음
딴 씬 목소리인가 못 봄 바로 드러남
결론까지 걸린 시간 세 번의 헛수고 약 1분

여기서 “그걸 왜 안 봤지” 하실 겁니다. 저도 그날 그렇게 생각했습니다.

말한 내용을 글자로 받아써서 원고와 대조하는 도구를, 저는 3주 전에 이미 만들어 뒀습니다. 8월 19일입니다.

그 도구 머리말에는 제가 던졌던 질문이 그대로 남아 있습니다. “그전에 소리는 들 수 없어? 방법은 없는 건가?”

그걸 이 공정에 붙여 놓지 않았을 뿐입니다. 돌려 보니 1분 만에 원인이 나왔습니다.

바꿔 말하면 이렇습니다. 못 듣는 것과 안 재는 것은 다릅니다. 저는 못 듣는 상황이라고 생각했는데, 사실은 잴 수 있는데 안 재고 있었던 거죠.

그리고 이 편에서 안 재고 있던 것은 소리만이 아니었습니다.

화면 쪽에도 원인이 따로 하나 더 있었습니다

같은 편에서 원인이 하나 더 나왔습니다. 이번엔 소리가 아니라 화면이었습니다.

영상은 짧은 조각 여러 개를 이어 붙여 만듭니다. 어느 조각을 몇 초부터 몇 초까지 쓸지 적어 둔 계획표가 있습니다.

그 계획표에 숫자가 하나 들어갑니다. 문제는 그 숫자를 만드는 쪽과 읽는 쪽이 서로 다른 뜻으로 알고 있었다는 겁니다.

비유하자면 좌석 번호 같은 거죠. 한 사람은 “공연장 전체에서 몇 번째 자리”로 적었는데, 다른 사람은 “그 줄 안에서 몇 번째”로 읽은 겁니다. 숫자는 똑같이 3인데 가리키는 곳이 완전히 다릅니다.

4초짜리 조각을 “3초 지점부터 3.58초만큼 쓰라”고 읽으면 어떻게 될까요. 1초만 남습니다.

계획한 화면의 3분의 1이 사라졌습니다
머니노트 · 정보·교육·참고용
표로 보기
쓰려던 화면 재료 71.7초 중
항목 설명
사라진 분량 23.2초 23.2
남은 분량 48.5초 48.5

컷 네 개가 통째로 사라졌고, 남은 조각들은 그 빈자리를 메우느라 늘어졌습니다. 심한 곳은 2.3배에서 2.6배까지 늘려 틀었고요.

그럼 화면이 어떻게 보일까요. 장면이 안 바뀌고, 인물이 박제된 것처럼 느리게 고정됩니다. 하루 전에 받은 지적이 정확히 그 말이었습니다. “멀티샷이 거의 없다”, “피사체가 화면에 고정되듯이 박제된다.”

저는 그 지적을 듣고 영상 만드는 지시문을 다듬고 있었습니다. 지시문 탓이 아니었는데요.

“그럼 계획표를 처음부터 열어 봤으면 되지 않나요?” 열어 봤습니다. 멀쩡해 보였습니다. 숫자도 틀리지 않았습니다. 틀린 건 숫자가 아니라 그 숫자를 무엇으로 읽느냐였습니다.

여러분 고지서에도 똑같은 자리가 있습니다

여기까지가 제 이야기인데, 이 구조는 돈 쪽에서도 똑같이 생깁니다.

고지서나 명세서 금액이 예상보다 높게 나왔다고 해 볼게요. 이럴 때는 눈에 익은 항목부터 바꾸기 쉽습니다. 요금제를 낮추거나 한도를 줄이는 식으로요.

명세를 항목 단위로 짚어 볼 때
Photo: Kindel Media / Pexels

그런데 눈에 익은 항목이라는 건 내가 이미 알고 있는 항목이라는 뜻입니다. 금액을 밀어 올린 게 내가 모르는 항목이었다면, 그건 손도 안 댄 채로 남아 있습니다.

바꾼 것이 늘수록 원인은 더 안 보입니다
머니노트 · 정보·교육·참고용
표로 보기
고지서가 이상할 때 흔한 순서
단계 내용 설명
1단계 눈에 띄는 항목 먼저 바꿈
2단계 다음 달도 같음 원인은 못 가림
3단계 또 다른 것 바꿈
4단계 무엇 때문인지 가릴 수 없음

여기서 연쇄가 시작됩니다. 한 번 바꿔서 안 되면 또 바꾸잖아요. 그렇게 두세 개를 바꾸고 나면 이제 무엇이 금액을 만들었는지 가릴 수가 없어집니다. 비교할 기준이 사라지니까요.

총액이 그대로라고 해서 그 항목이 원인이 아니었다는 뜻도 아닙니다. 다른 항목이 오르고 내려 서로 상쇄됐을 수도 있거든요.

그다음이 진짜 문제입니다. 원인을 못 가리면 대개 “원래 이 정도 나오나 보다”로 닫거든요. 그런데 그렇게 닫힌 항목은 사라지지 않습니다. 확인하지 않은 채로 다음 달 고지서에 다시 실릴 수 있습니다.

여러분 통장으로 치면 이렇습니다. 매달 나가는 항목 하나를 확인해 본 적 없는 채로 두고 있는 겁니다. 제 소리 파일이 서로를 덮고 있던 것과 같은 자리예요. 겉으로는 아무 문제가 없거든요.

한 가지 덧붙이면 항목의 이름과 구성은 기관·상품마다 다릅니다. 그래서 “무엇이 이상한가”는 남의 설명이 아니라 내 명세서에서 확인하셔야 정확합니다.

그럼 이런 착각은 사람만 하는 걸까요.

봇 쪽에서도 같은 일이 두 번 있었습니다

블로그 쪽 이야기만 하면 우연처럼 보일 것 같아서, 자동매매 봇 쪽 기록도 두 건 꺼내 보겠습니다.

첫 번째. 점검 결과에 “보유 종목 다섯 건 전부 손절가와 목표가가 없다”고 올라온 적이 있습니다. 손해를 잘라 낼 기준값과 팔 기준값이요. 심각한 이야기입니다. 손절가가 없으면 손실을 자를 기준이 없다는 뜻이니까요.

실제로는 다 저장돼 있었습니다. 다만 옛날 이름으로 돼 있었습니다.

점검 코드가 새 이름 하나만 찾고 “없다”고 결론 낸 겁니다. 화면에 보여 주는 쪽은 이미 두 이름을 다 확인하도록 돼 있었습니다. 그러니까 “없다”와 “내가 찾은 이름으로 없다”는 완전히 다른 말이었습니다.

이름 하나에 판정이 갈렸습니다
머니노트 · 정보·교육·참고용

그걸 모르고 고쳤다면 멀쩡한 자리를 손댔을 겁니다.

두 번째. 국내 시세 자료가 9일 동안 멈춘 적이 있습니다. 그때 원인을 “거래소가 우리 서버 주소를 차단했다”로 적고, 차단이 풀릴 때까지 기다리기로 했습니다.

원인을 잘못 적으면 기다리는 것도 소용없습니다
머니노트 · 정보·교육·참고용
표로 보기
국내 시세 자료가 9일 멈춘 사건
시점 사건 설명
7월 16일 자료가 멈춤 국내 시세가 안 들어옴
그때 적은 원인 거래소가 서버 주소를 차단 풀릴 때까지 기다리기로 함
9일 뒤 직접 확인 진짜 거절 사유는 비밀번호 만료 그 안내는 기록 파일에만 찍히고 있었음
같이 드러난 것 멈춘 자료는 거래소 경로가 아니었음 차단을 막으려 켠 장치가 무관한 경로까지 잠갔음

9일 뒤에 차단당하지 않은 다른 컴퓨터로 직접 접속해 보니 답이 달랐습니다. “비밀번호를 바꿔야 합니다.”

서버는 차단당한 상태라 그 안내 자체를 받지 못했습니다. 그래서 9일 내내 “차단”만 보였던 겁니다.

그런데 기다림은 소용이 없었습니다. 차단이 풀려도 비밀번호가 만료 상태면 로그인은 계속 실패하거든요. “기다린다”는 사실상 무한 대기였습니다.

그리고 더 이상한 게 하나 더 나왔습니다. 멈춘 그 자료는 애초에 거래소가 아니라 다른 경로로 들어오고 있었습니다. 차단당한 곳에서 오는 자료가 아니었던 거죠. 그런데 수집 프로그램이 시작할 때 거래소 로그인도 함께 시도했고, 거기에 제가 켠 차단 장치까지 겹쳐 그 무관한 자료까지 막혔습니다.

막으려고 세운 문이 엉뚱한 사람을 가둔 셈이죠.

참고로 이 사건의 다른 면개발기 ⑯에서 이미 다뤘습니다. 거기서 본 건 “알림을 한쪽에만 붙였다”였고, 오늘 보는 건 그 앞 단계, 원인 칸에 무엇을 적었느냐입니다.

세 사건은 고장 난 곳이 서로 달랐습니다. 공통점은 하나였어요. 확인한 범위를 넘어 원인을 단정했다는 것이요.

그래서 제가 바꾼 건 고치는 순서였습니다

원인을 고친 뒤에 하나를 더 만들었습니다. 원고가 서로 다른데 소리 파일이 똑같으면 그 자리에서 멈추는 검사요.

왜 이게 따로 필요했냐면, 소리가 뒤바뀌어도 그동안 아무도 안 울었기 때문입니다. 기존 검사는 원고만 봤거든요. 원고가 제자리에 있으면 소리가 무엇이든 통과였습니다. 통과 도장이 무엇을 근거로 찍히는지는 개발기 ⑲에서 길게 다뤘던 이야기이기도 합니다.

순서를 정해 두는 일
Photo: Tima Miroshnichenko / Pexels

새 검사는 한 편에 1초도 안 걸립니다. 받아쓰기는 씬마다 수십 초가 걸리고요. 그래서 순서를 이렇게 뒀습니다.

싼 검사를 앞에 비싼 검사를 뒤에
머니노트 · 정보·교육·참고용
표로 보기
지금은 이 순서로 봅니다
단계 내용 설명
1단계 파일 중복 1초 미만
2단계 받아쓰기 대조 씬마다 수십 초
3단계 화면 눈확인 사람이 봄

싼 것을 앞에서 걸러 내면 비싼 검사까지 갈 일이 그만큼 줄어듭니다.

그리고 오늘 그 편의 소리 파일 여덟 개를 다시 재 봤습니다. 여덟 개가 전부 다릅니다. 같은 것이 하나도 없습니다. 다만 이건 그 한 편을 다시 만든 결과이지, 그 뒤에 만든 편들까지 확인한 건 아닙니다.

오늘 제가 아직 못 잰 것

이 글도 “다 해결했습니다”로 닫지는 않겠습니다.

새로 만든 검사는 파일이 완전히 똑같은 경우만 잡습니다. 소리가 미묘하게 다른데 내용이 뒤바뀐 경우는 못 잡습니다. 그건 받아쓰기가 해야 합니다.

받아쓰기도 못 재는 게 있습니다. 말이 맞는지는 보지만, 말투가 어색한지·발음이 이상한지는 판단하지 못하거든요. 그건 아직 사람이 들어야 합니다.

그리고 받아쓰기 쪽에는 구멍이 하나 남아 있습니다. 결과가 한 줄도 안 나오면 경고만 찍고 그냥 넘어갑니다. 못 잰 것과 통과한 것이 거기서 아직 안 갈립니다.

화면 쪽 숫자는 뜻을 맞춰 뒀지만, 조각의 뒷부분만 쓰고 싶은 경우는 여전히 사람이 화면을 보고 그 줄을 고쳐야 합니다. 자동으로 채우면 같은 종류의 오해가 다시 생깁니다.

봇 쪽 두 사례는 개발 기록에 적힌 값을 옮긴 것이고, 그 상황을 다시 돌려 본 건 아닙니다.

오늘 딱 하나만 해 보신다면 이걸 권합니다. 최근 석 달 고지서나 명세서 중에서 금액이 가장 이상했던 것 하나를 고르세요. 그리고 항목을 하나씩 내려가면서 “이건 내가 아는 항목인가”를 표시해 보시는 겁니다.

모르는 항목이 하나라도 나오면, 그게 여러분이 아직 안 열어 본 방입니다.

세 번을 헛고생하고 남은 문장은 이겁니다. 고치기 전에, 내가 지금 고치려는 자리가 원인이라는 근거가 뭔지 한 줄로 적어 보는 것. 못 적으면 그건 원인이 아니라 짐작이죠.

※ 이 글은 자동매매 시스템과 블로그 자동화를 만들며 겪은 과정을 기록한 개발기입니다. 특정 종목이나 매매 방법을 권유하지 않으며, 본문에서 인용한 봇 쪽 수치는 개발 기록에 적힌 값을 옮긴 것입니다. 고지서·명세서의 항목 구성과 확인 방법은 기관과 상품마다 다르므로 개별 사안은 해당 기관에 확인하셔야 합니다. 투자 판단과 그 책임은 본인에게 있습니다. 2026.09 기준 정보·교육·참고용으로만 봐 주세요.

기준이 바뀌면 알려드릴까요?

세율·요율·한도는 해마다 바뀝니다. 주 1회, 그 주에 알아둘 것만 모아 보내드립니다.

지난 편지 보기 →

언제든 해지할 수 있습니다 · 정보·교육·참고용