내 영상 끝마다 나던 직익 소리의 정체를 찾았다
쇼츠를 만들 때마다 영상 끝에서 이상한 소리가 났다. "직익." 말소리가 끝나고 화면이 넘어가려는 찰나, 짧고 날카롭게 찢어지는 소리였다. 길어야 0.1초 남짓인데 귀에는 제일 먼저 걸렸다. 처음에는 내 편집 실수인 줄 알았다. 볼륨을 잘못 건드렸거나, 음성 조각을 이어 붙이는 과정에서 생긴 잡음이라고 생각했다. 그런데 열두 편을 만드는 내내 같은 소리가 났다. 실수라면 한두 번으로 끝나야 정상이다. 마흔 초 남짓한 영상에서 마지막 0.1초가 이렇게까지 거슬릴 줄은 몰랐다.
소리가 나는 위치도 매번 같았다. 영상 전체의 끝이 아니라, 음성 조각 하나하나의 끝이었다. 내 쇼츠는 대본 전체를 한 번에 읽히지 않는다. 문장 단위로 쪼개서 음성을 만들고, 그 조각들을 순서대로 이어 붙여 완성한다. 이렇게 만드는 이유는 두 가지다. 발음이 틀린 문장이 있으면 그 조각만 다시 만들면 되고, 자막 타이밍도 문장 단위로 맞추기 쉽기 때문이다. 그런데 이 구조에서는 조각이 여러 개면 소리도 조각 개수만큼 났다. 편집 실수라면 이렇게 규칙적일 수 없다. 소리는 완성본 어딘가가 아니라, 조각 자체에 들어 있다는 뜻이었다.
그래서 추적을 시작했다. 먼저 이어 붙인 완성본이 아니라 조각 원본을 하나씩 들어 봤다. 완성본에서만 생기는 소리라면 조립 과정의 문제고, 원본에도 있으면 음성 자체의 문제다. 확인해 보니 원본에도 있었다. 다음은 파형을 열어 숫자로 재는 일이었다. 말소리는 이미 끝난 지점이었다. 그런데 조각 끝에서 약 120밀리초 지점에 짧은 신호가 튀어 있었다. 주파수는 대략 2.6킬로헤르츠. 파형이 위아래로 찢어져 보이는, 클리핑된 고주파 버스트였다.
스피커 문제도 아니고 인코딩 문제도 아니었다. 원본 음성 파일 안에 이미 들어 있었기 때문이다. 확인해 보니 그건 목소리의 일부가 아니라, 음성 합성이 뱉어낸 아티팩트였다. 말소리는 그 전에 끝나 있고, 버스트가 있는 구간은 순수하게 잡음뿐이었다. 말은 다 끝났는데 기계가 마지막 순간에 헛손질을 한 셈이다. 이 판단이 중요했다. 버스트 구간에 목소리가 섞여 있었다면 지우는 게 치료가 아니라 훼손이 되기 때문이다.
조각들을 하나씩 대조해 보니 패턴은 더 분명했다. 긴 문장 조각이든 짧은 문장 조각이든, 내용과 길이에 상관없이 끝부분에 어김없이 들어 있었다. 특정 문장에서만 생기는 발음 사고가 아니라, 조각이 만들어지는 과정 자체에서 매번 붙는 자국이었다. 그리고 돌이켜 보면, 완성본에서 유독 영상 끝의 소리만 도드라진 이유도 설명이 된다. 중간 조각의 끝에서는 다음 문장이 곧바로 시작되니 잡음이 상대적으로 묻히지만, 마지막 조각 뒤에는 무음뿐이라 버스트가 그대로 드러나는 것이다.
고치는 법은 단순했다. 버스트가 시작되는 지점을 찾아, 그 앞 15밀리초를 부드럽게 페이드시킨 뒤 끝까지 무음으로 만드는 것이다. 갑자기 소리를 0으로 잘라 버리면 그 경계에서 또 다른 클릭이 생길 수 있어서, 짧게라도 기울기를 뒀다. 또 하나 중요한 건 조각의 전체 길이를 그대로 두는 것이었다. 내 자막은 단어보다 더 잘게, 음절 단위로 색이 바뀌며 따라가는 구조다. 조각 길이가 조금이라도 줄면 그 뒤의 자막이 전부 밀린다. 길이는 유지한 채 소리만 지웠다. 열두 편 분량의 조각에 전부 적용하고 다시 들었다. 직익 소리는 사라졌다. 처리 전의 원본 조각은 따로 백업해 뒀다. 뭔가 잘못되면 되돌릴 수 있어야 하니까. 그리고 들었다는 감각만으로 끝내지 않았다. 검사를 다시 돌려, 버스트가 있던 자리에서 신호가 튀지 않는지 숫자로 확인했다.
여기서 끝내면 다음에 또 당한다. 그래서 검사 자체를 제작 과정에 박아 넣었다. 새 음성 조각이 만들어지면 끝부분을 자동으로 스캔한다. 방식은 이렇다. 조각의 마지막 300밀리초를 10밀리초 단위로 잘게 쪼개서, 구간마다 소리의 크기를 잰다. 말소리가 끝난 뒤라 조용해야 할 구간에서 갑자기 큰 신호가 튀면 버스트로 판정한다. 잘게 쪼개는 데는 이유가 있다. 버스트 자체가 0.1초 남짓으로 짧아서, 긴 구간으로 뭉뚱그려 재면 평균값에 묻혀 보이지 않기 때문이다. 판정이 서면 검수 단계에서 조립이 멈추고 사람이 확인하게 된다. 검사에 걸린 조각은 조립에 들어가지 못하고, 무음 처리를 거친 뒤 다시 검사를 통과해야 다음 단계로 넘어간다. 귀로 일일이 듣는 대신, 기계가 먼저 숫자로 재는 구조다. 조립 전에 걸러지니, 잡음이 섞인 채로 영상이 완성되는 일은 없어졌다.
나중에 음성 합성 방식을 바꾼 뒤에는 출력 끝이 처음부터 무음이라 이 잡음이 생기지 않았다. 새 방식으로 만든 첫 조각에도 똑같이 검사를 돌려 봤고, 아무것도 걸리지 않았다. 그래도 검사는 그대로 유지하고 있다. 방식을 또 바꾸면 어떤 잡음이 올지 모르기 때문이다. 자동으로 도는 검사라면 남겨두는 쪽이 싸게 먹힌다.
짧은 영상일수록 끝의 0.1초가 크게 느껴진다. 보는 사람은 본문 내용은 잊어도 마지막에 찢어지는 소리는 기억한다. 지금은 새 영상을 만들 때마다 순서가 정해져 있다. 음성 조각이 나오면 검사가 먼저 돌고, 통과한 조각만 조립에 들어간다. 내가 듣기 전에 기계가 한 번 거르는 것이다. 이번에 배운 건 소리의 문제가 아니라 검사의 문제였다는 것이다. 귀로 찾는 버그는 운이 좋아야 잡힌다. 숫자로 재는 검사는 매번 잡는다.