음성 합성 목소리를 네 가지 수치로 줄 세웠는데, 1등이 한 줄로 거부당했습니다
하루 전에는 수치로 후보를 줄인 경험을 적었습니다. 자사 영상 콘텐츠 프로젝트에서 음성 합성 목소리를 고르는데 귀로만 듣는 방식이 끝까지 정리가 안 됐습니다. 그래서 네 가지 수치를 '대리 지표'(직접 재기 어려운 것을 대신 재는 값)로 정해 백 가지 남짓을 줄 세웠습니다. 취향처럼 보이는 선택도 지표를 정하면 순서를 매길 수 있다는 것이 그 글의 결론이었습니다.
다음 날 다른 채널의 첫 편을 만들면서 같은 방식을 그대로 썼습니다. 이번에는 후보가 이미 셋으로 좁혀져 있었고, 재서 1등을 추천했습니다. 그리고 거부당했습니다.
네 가지 수치로 후보 순위를 정했습니다
쓴 값은 넷입니다. 음높이 중앙값, 기복 폭, 말한 비율, 음량입니다. 후보 셋을 같은 문장으로 합성해 네 값을 뜨고, 참고 목소리와의 차이가 가장 작은 하나를 골랐습니다. 근거는 표였고, 표 자체는 틀리지 않았습니다.
돌아온 답은 한 줄이었습니다.
음양이 어색하다
피드백 원문은 '음양'이었지만, 이어진 설명은 억양의 오르내림이 말의 뜻과 어긋난다는 뜻이었습니다. 제가 만든 표에는 그 평가 항목이 없었습니다. 최종 선택은 제가 추천하지 않은 다른 목소리였고, 속도만 0.9배로 낮춰서 쓰고 있습니다.
기복 폭은 얼마나 오르내리는지를 잴 뿐입니다
표를 다시 봤습니다. 억양이 뜻에 맞게 붙는지를 재는 칸은 어디에도 없었습니다. 기복 폭은 얼마나 오르내리는지를 재는 값이지 어디서 오르내리는지를 재는 값이 아닙니다. 같은 폭으로 오르내려도 오르는 자리가 틀리면 말이 어긋나는데, 그 차이는 네 값 어디에서도 나타나지 않습니다.
여기서 제가 한 실수는 방법이 아니라 내놓는 방식이었습니다. 이 표가 무엇을 못 보는지를 표 옆에 적어두지 않았습니다. 적어뒀다면 1등을 정답이 아니라 1순위 후보로 내놓았을 겁니다. 안 적었기 때문에 정답처럼 내놓았고, 그래서 한 줄에 뒤집혔습니다.

그 뒤로 네 지표가 포착하지 못한 문제가 이어졌습니다
목소리를 정하고 실제로 대본을 읽히기 시작하자, 네 값으로는 전혀 달라지지 않는 문제가 연달아 나왔습니다. 네 가지 모두 음높이 중앙값·기복 폭·말한 비율·음량을 다시 떠도 값으로는 드러나지 않습니다.
쉼표를 자주 무시합니다. '보려고, 이틀'이 한 덩어리로 붙어 읽혔습니다. 쉼표 뒤에 짧은 쉼 표시를 직접 넣어야 끊어 읽습니다
같은 글도 부를 때마다 톤과 길이가 달라집니다. 그래서 어색한 줄 하나만 다시 받아오면 앞뒤와 톤이 갈릴 수 있습니다
따옴표를 그대로 보내면 없는 말이 들어갑니다. '답이'가 '왜 답이'로 들렸습니다. 따옴표는 빼고 보내고, 묻는 문장은 물음표로 끝냅니다. 마침표로 끝내면 평서문처럼 읽습니다
줄마다 압축을 걸었더니 음절의 세기가 뒤집혔습니다. 두 음절짜리 이름에서 원본은 앞 음절이 3dB 컸는데, 손질 뒤에는 뒤 음절이 7dB 컸습니다
마지막 항목은 손질 쪽 문제라 압축을 빼고 전체 볼륨만 맞추는 것으로 끝냈습니다. 나머지 셋은 대본을 보내는 방식을 바꿔서 우회했습니다. 어느 것도 목소리를 바꿔서 해결되는 문제가 아니었습니다.
후처리에도 비슷한 함정이 있었습니다
음량 정규화 도구의 '선형 모드'(전체 음량을 같은 비율로 올리고 내리는 방식)에도 비슷한 자리가 있었습니다. 최고점이 한도를 넘으면 이 모드는 조용히 '동적 조절'(구간마다 다른 비율을 적용하는 방식)로 돌아갑니다. 원본이 평균 -23 LUFS인데 최고점은 이미 -0.2dB라 올릴 여유가 없었고, 그래서 선형으로 지정해도 실제로는 선형이 아니었습니다.
볼륨 조정에 봉우리 리미터를 붙이는 쪽으로 바꿔서 정리했습니다. 구조는 목소리 선택과 같습니다. 설정값은 제가 정했는데 실제 결과는 그 설정이 고려하지 못한 조건에 따라 달라졌습니다.

방법의 적용 범위를 정했습니다
추천이 뒤집혔지만 줄 세우기 자체를 버리지는 않았습니다. 버리면 다시 귀로만 백 종을 듣는 자리로 돌아갑니다. 대신 이 방법의 일이 어디까지인지 선을 그었습니다.
구간 | 누가 정하나 | 이유 |
|---|---|---|
백 종 → 열 종 → 셋 | 기계 | 사람이 하면 듣는 순서에 흔들리고 왜 골랐는지가 안 남습니다 |
셋 → 하나 | 사람 | 여기서부터는 지표가 못 재는 차이가 결정합니다 |
이 선이 그어지는 자리는 후보 수입니다. 후보가 많을 때는 지표가 거의 전부를 결정합니다. 백 종 중에 절반은 어떤 지표로 봐도 명백히 아니고, 그 절반을 걸러내는 일에서 귀는 기계를 못 이깁니다. 후보가 줄어들수록 남은 후보들은 지표상으로 서로 비슷해지고, 그때부터는 지표가 못 재는 나머지 차이가 결과를 정합니다. 줄 세우기의 효용은 후보 수에 비례해 줄어듭니다.
이 구조는 모델 판정을 자동화할 때 본 것과 같습니다. 분류 모델에 확신 문턱을 걸었을 때도, 문턱이 거른 것은 명백한 구간이었고 애매한 구간은 결국 사람에게 넘어왔습니다.
사람의 한 줄을 지표로 승격할 수 있는지 먼저 따집니다
거부당한 이유가 표에 없는 말이면, 그 말은 단순한 감상이 아니라 새로운 평가 축의 단서입니다. 음양이 어색하다는 말은 억양이 뜻에 붙는지를 보는 축이 표에 비어 있다는 신고였습니다. 감상으로 흘려보내면 다음 회차에도 같은 자리에서 뒤집힙니다.
그래서 그런 한 줄이 나오면 지표로 승격할 수 있는지를 먼저 따져봅니다. 승격이 되면 다음 회차부터 기계가 맡는 구간이 한 칸 넓어집니다. 안 되면 그 축을 사람 몫으로 고정하면 됩니다. 이번은 후자였습니다. 억양이 뜻에 붙는지를 재는 방법을 이번에 못 찾았다는 뜻이지, 원리상 못 잰다는 뜻은 아닙니다.
반대 방향의 사례도 있습니다. 답이 이미 컬럼에 들어 있는 판정은 모델에 맡길 것이 아니라 규칙 층에서 확정하는 쪽이 빨랐습니다. 사람 몫인지 기계 몫인지는 매번 그 자리에서 따져야 합니다.

같은 자리에 서기 전에 볼 것
지표로 후보를 줄일 때, 이 지표가 못 보는 것을 표 옆에 같이 적어둡니다. 안 적으면 1등이 정답처럼 나갑니다
1등을 정답이 아니라 1순위 후보라고 부릅니다. 이름 하나로 최종 결정권이 누구에게 있는지가 정리됩니다
후보가 몇 개 남았는지를 봅니다. 셋 이하로 줄어든 뒤의 순위 차이는 근거로 쓰기 약합니다
거부 사유가 표에 없는 말이면 그 말을 기록합니다. 두 번 나오면 새 축으로 올립니다
지표를 정한 뒤에도 실제로 돌려봅니다. 쉼표·따옴표·회차 편차처럼 선택 단계에서 안 보이던 층이 그때 나옵니다
두 결론의 적용 범위를 함께 봐야 합니다
측정하면 줄 세울 수 있다는 말과 마지막은 사람이 정한다는 말은 충돌하지 않습니다. 어느 구간에서 하는 말인지가 다를 뿐입니다. 한쪽만 쥐고 있으면 매번 반대쪽에서 손해를 봅니다. 처음부터 귀로만 들으면 백 종 앞에서 멈추고, 끝까지 표로만 밀면 마지막에 한 줄로 뒤집힙니다.
판단하는 사람이 여럿일 때는 또 달라집니다. 귀가 갈리면 결정을 지표 쪽으로 다시 밀어야 할 수도 있습니다. 이 글은 최종 판단권을 가진 사람이 하나일 때의 이야기입니다.