같은 문장을 읽는데, 문장이 바뀔 때마다 목소리가 조금씩 커졌다 작아졌습니다.
2026년 9월 26일, 제가 만드는 짧은 영상의 내레이션을 듣다가 물었습니다. “볼륨이나 톤이 왜 자꾸 변하지?” 그런데 그 질문 하나를 풀려고 설계를 맡긴 AI가 도면을 거듭 고쳤고, 작업 기록은 같은 자리에서 막힌 것을 여섯 번으로 셌습니다.
답은 이미 쓰고 있던 도구의 설명서 한 쪽에 있었습니다. 여러분이 새 보험을 들기 전에 지금 가진 보험 증권을 안 열어 봤다면, 오늘 글은 바로 그 자리 이야기입니다.

표로 보기
| 항목 | 값 | 설명 |
|---|---|---|
| 막힌 설계 | 6번 | 같은 자리 |
| 7곳 중 맞은 곳 | 2곳 | 받아쓰기 대조 |
| 문장 끝 3곳 오차 | 0.1초 이내 | 설명서 기능 |
| 최종 녹음 | 25문장 | 시간줄 이탈 0 |
문장마다 따로 녹음하면, 문장마다 목소리가 튑니다
제 영상의 목소리는 사람이 아니라 목소리 엔진이 읽습니다. 글을 넣으면 사람 목소리로 읽어 주는 프로그램이죠. 저는 Typecast라는 엔진을 씁니다.

그동안은 대본을 문장마다 따로 엔진에 넣었습니다. 그래야 문장이 몇 초에 시작하고 끝나는지 정확히 알고, 그 시각에 맞춰 자막을 넘길 수 있거든요.
문제는 엔진이 부를 때마다 조금씩 다르게 읽는다는 점이었습니다. 쉽게 말하면 같은 성우를 문장마다 따로 불러 녹음한 셈입니다. 컨디션이 매번 다르니 이어 붙이면 목소리가 튀죠.

표로 보기
| 구분 | 문장마다 따로 | 한 덩어리로 |
|---|---|---|
| 목소리 | 문장마다 튐 | 이어짐 |
| 자막 시각 | 정확히 앎 | 따로 찾아야 |
| 제 귀 판정 | 덜 자연스러움 | 더 자연스러움 |
같은 네 문장을 두 방식으로 만들어 나란히 들어 봤습니다. 제 귀는 한 덩어리 쪽을 골랐습니다.
그런데 한 덩어리로 녹음하면 새 숙제가 생깁니다. 덩어리 안에서 각 문장이 몇 초에 끝나는지, 이제는 아무도 알려 주지 않으니까요. 자막은 어디서 넘겨야 할까요.
조용한 틈을 찾으면 될 줄 알았습니다
설계를 맡은 AI가 처음 내놓은 방법은 단순했습니다. 사람은 문장이 끝나면 숨을 쉽니다. 그러니 소리 파일에서 조용한 틈을 찾으면 그게 문장 끝이라는 거였죠.
첫 시험에서 바로 걸렸습니다. 쉼표에서도 숨을 쉬거든요. “끝난다,” 뒤의 짧은 틈을 문장 끝으로 잡아 버렸습니다.
그 뒤로 막힌 자리를 작업 기록은 여섯 번으로 셌습니다. 그중 네 장면만 옮기면 이렇습니다.

표로 보기
| 단계 | 내용 | 설명 |
|---|---|---|
| 1단계 | 받아쓰기 대조 | 7곳 중 2곳 |
| 2단계 | 받아쓰기 기준 | 헛글자 하나 |
| 3단계 | 쉼 길이 문턱 | 0.4초 미달 |
| 4단계 | 쪼개 다시 부름 | 매번 다른 쉼 |
| 5단계 | 설명서 | 낱말 시각 |
다음엔 받아쓰기 AI를 붙였습니다. 녹음을 들려주면 글자와 함께 몇 초에 말했는지 적어 주는 프로그램입니다. 두 방법이 같은 시각을 가리킬 때만 믿기로 했죠.
결과는 문장 끝 일곱 곳 중 두 곳만 0.2초 안에서 맞았습니다.
그럼 받아쓰기 하나만 믿으면 되지 않을까요? 실제 녹음에서 해 봤습니다. 이번엔 받아쓰기가 “할아버지 빚을”을 “할아버지의 빚을”로 적었습니다. 같은 소리의 앞 4초만 다시 들려주니 두 번 다 “할아버지 빚을”로 맞게 적었습니다. 헛글자 한 글자 때문에 멀쩡한 녹음이 멈춘 거예요.
엔진은 부를 때마다 숨을 다르게 쉬었습니다
받아쓰기를 보고용으로 내리고, 다시 조용한 틈으로 돌아갔습니다. 이번엔 길이로 가르기로 했죠. 0.4초보다 긴 틈만 문장 끝으로 본다는 규칙이었습니다.
첫 덩어리에서는 잘 맞았습니다. 문장 끝 틈이 0.56~0.64초로 또렷했거든요. 그런데 다음 덩어리를 재 보니 이랬습니다.

표로 보기
| 항목 | 설명 | 값 |
|---|---|---|
| 쉼표 뒤 | 빠지는 건, | 0.19초 |
| 문장 끝 | 사람뿐입니다. | 0.34초 |
| 문장 끝 | 가거든요. | 0.47초 |
| 문장 끝 | 포기하면요? 검출 안 됨 | 0초 |
0.34초짜리 문장 끝은 문턱에 걸리지 않았습니다. “다 포기하면요?” 뒤에는 기준을 넘는 틈이 아예 잡히지 않았고요. 엔진이 거의 숨 없이 다음 문장으로 넘어간 겁니다.
그래서 0.25초 아래로는 내리지 않는 문턱으로 바꾸고, 틈이 없는 문장은 거기서 잘라 다시 부르게 고쳤습니다. 실제로 돌리니 같은 글인데도 이번엔 다른 문장들의 틈이 사라져 있었습니다. 다시 부르기를 세 번 하고도 모자라 녹음이 또 멈췄습니다.
바꿔 말하면 엔진은 부를 때마다 숨을 다르게 쉬었습니다. 규칙을 아무리 다듬어도 기준이 되는 틈 자체가 매번 움직이니, 같은 벽에 닿을 수밖에 없었죠. 공사를 챙기는 AI는 기록에 “문장 끝·쉼 자리에서 막힌 것 여섯 번째”라고 적었습니다.

그럼 일곱 번째 도면은 무엇을 바꿔야 했을까요.
일곱 번째엔 도면 대신 설명서를 열었습니다
이번엔 규칙을 더 다듬지 않았습니다. 저에게 다음 방향을 묻기 직전에, 설계를 맡은 AI가 처음으로 목소리 엔진의 공식 설명서를 열었습니다.
거기에 이런 기능이 있었습니다. 글을 읽어 주면서 낱말마다 몇 초에 시작해 몇 초에 끝났는지를 함께 돌려주는 기능이요. 문장부호도 낱말에 붙어서 옵니다. 마침표나 물음표가 붙은 낱말의 끝이 곧 문장의 끝이라는 뜻이죠.

정말 맞는지는 재 봐야 했습니다. 엔진이 “여기서 끝났다”고 알려 준 시각과, 소리 파일에서 실제로 소리가 멈춘 시각을 나란히 놓았습니다.

표로 보기
| 구분 | 엔진이 준 끝 | 실제 소리 멈춤 |
|---|---|---|
| 사람뿐입니다. | 2.75초 | 2.76초 |
| 가거든요. | 7.37초 | 7.47초 |
| 포기하면요? | 8.72초 | 8.79초 |
차이는 0.01~0.10초. 눈 한 번 깜빡이는 정도의 시간입니다.
그리고 이 방법은 엔진이 숨을 어떻게 쉬든 상관이 없었습니다. 문장 끝을 짐작하지 않고 엔진에게 직접 받으니까요. 틈은 그 시각을 기준으로 문장 사이 0.2초, 박자가 바뀌는 곳 0.6초로 맞춰 넣었습니다. 그럼 영상 한 편 전체에서도 버텼을까요.
녹음은 섰고, 받아쓰기는 빠졌습니다
새 방식으로 영상 한 편 전체를 녹음했습니다. 대본을 박자에 맞춰 여덟 덩어리로 나눠 덩어리마다 한 번에 읽혔죠.
25문장, 73.578초. 엔진 시각표 위에서 틈이 기준을 벗어난 곳은 0곳이었습니다.
다만 이 0곳은 엔진 시각표 위에서 잰 값입니다. 귀로 듣는 실제 무음은 따로 재야 했고, 그 이야기는 아래에 적었습니다.
받아쓰기 AI는 이 과정에서 아예 빠졌습니다. 헛글자 때문에 녹음이 멈출 일도 함께 사라졌죠. 다음 날 녹음과 자막을 맞춘 확인 영상을 직접 보고 들은 뒤, 저는 “괜찮다”고 판정했습니다. 지금은 이 방식이 이야기형 영상의 녹음 기본값입니다.

표로 보기
| 단계 | 내용 | 설명 |
|---|---|---|
| 1단계 | 한 덩어리 녹음 | 목소리 이어짐 |
| 2단계 | 낱말 시각 받기 | 엔진이 제공 |
| 3단계 | 문장 끝 확인 | 문장부호 낱말 |
| 4단계 | 틈 맞추기 | 0.2초·0.6초 |
물론 설명서를 처음부터 열었다고 하루가 통째로 아껴졌을 거라고 단정할 수는 없습니다. 앞의 여섯 번 중에도 배운 게 있었거든요. 쉼표의 틈과 문장 끝의 틈이 섞인다는 것, 받아쓰기가 긴 소리에서 헛것을 듣는다는 것은 그 실패들이 알려 줬습니다.
다만 여섯 번 모두 같은 전제 위에 있었습니다. “엔진이 낸 소리를 우리가 재서 맞힌다.” 그 전제를 한 번도 의심하지 않은 게 진짜 비용이었습니다. 저 역시 이미 쓰는 도구의 기능부터 확인하라고 먼저 말하지 않았고요. 개발기 23에서는 시계를 먼저 봐서 공사를 줄였죠. 이번에 놓친 건 시계가 아니라 이미 가진 도구의 설명서였습니다.

보험을 새로 들기 전에도 같은 자리가 있습니다
여러분 통장으로 치면 이런 자리입니다.
병원비가 걱정돼 실손보험을 하나 더 알아본다고 해 보죠. 그런데 이미 가입한 실손보험이 있거나, 회사가 단체로 들어 준 실손보험이 있다면 이야기가 달라집니다. 실손보험은 같은 병원비를 두 곳이 보장하면 보험사끼리 나눠서 냅니다. 두 개에 가입해도 병원비의 두 배를 받지는 않습니다.

풀어 쓰면 이렇습니다. 실손처럼 실제 쓴 돈만 주는 보장을 두 번 사면, 보험료는 두 번 나가는데 병원비보다 더 받을 수는 없습니다. 이미 쓰던 엔진의 기능을 모른 채 여섯 번 새로 설계한 것과 같은 모양이에요.

표로 보기
| 단계 | 내용 | 설명 |
|---|---|---|
| 1단계 | 내 보험 조회 | 내보험다보여 |
| 2단계 | 증권 열기 | 보장 내용 |
| 3단계 | 겹침 확인 | 회사 단체보험 |
| 4단계 | 그다음 판단 | 가입 여부 |
“그럼 보험은 많을수록 손해라는 건가요?” 오해하지 마세요. 보장 종류가 다르면 겹치지 않을 수 있고, 꼭 필요한 보험도 있습니다. 다만 무엇이 겹치는지는 사기 전에 확인할 수 있습니다.
내가 가입한 보험은 한국신용정보원의 「내보험다보여」에서 한 번에 조회할 수 있고, 회사 단체 실손이 있는 사람은 조건에 따라 개인 실손의 보험료와 그 보장을 함께 멈추는 제도도 있습니다. 다만 두 보험의 보장 범위·자기부담금·한도가 달라 멈추면 보상이 줄 수도 있으니, 빠지는 보장과 퇴직 뒤 다시 살리는 조건을 보험사에 먼저 확인하세요.
오늘 제가 아직 못 잰 것
이번 편은 잘 끝난 이야기지만, 다 확인됐다고 닫지는 않겠습니다.
엔진 시각표 위의 틈은 0.2초로 맞췄지만, 귀로 듣는 실제 무음은 그보다 짧은 0.09~0.12초로 재졌습니다. 낱말 끝 뒤에 말꼬리 소리가 조금 남기 때문입니다. 지금은 제 귀 판정을 따랐고, 이 차이가 거슬리는지는 영상을 더 만들며 지켜보는 중이에요.
엔진 호출이 일시 오류로 실패하면 다시 시도하지 않고 바로 멈추는 점도 남아 있습니다. 첫 녹음 때 실제로 한 번 멈췄고, 다시 돌리니 됐습니다.
여러분, 지금 가진 보험 중에 보장 내용을 한 줄이라도 기억하는 게 몇 개나 되시나요? 하나도 떠오르지 않는다면, 새 보험 설계서를 받기 전에 증권부터 한 번 열어 보시길 권합니다.
여섯 장의 도면은 버린 게 아니라 무엇을 재면 안 되는지 알려 준 기록이 됐습니다. 그리고 일곱 번째 도면은 짓기 전에 이미 있는 것부터 찾는다는 순서 하나를 남겼습니다. 다음 설계부터는 그 순서가 맨 앞에 옵니다. 덕분에 지금 녹음 순서는 전보다 훨씬 단순해졌고, 목소리도 한결 자연스럽게 이어집니다.
※ 이 글은 자동매매 시스템과 블로그·영상 자동화를 만들며 겪은 과정을 기록한 개발기입니다. 특정 종목이나 매매 방법, 특정 보험 상품의 가입·해지를 권유하지 않으며, 본문의 시각·횟수는 작업 기록에 적힌 값을 옮긴 것입니다. 실손보험의 보상 방식과 중지 제도의 조건은 가입 시기와 상품마다 다르므로 개별 사안은 해당 보험사에 확인하셔야 합니다. 투자 판단과 그 책임은 본인에게 있습니다. 2026.10 기준 정보·교육·참고용으로만 봐 주세요.
아직 댓글이 없습니다. 이 글을 읽고 떠오른 생각을 남겨 주세요.