기술

TTS 창구를 가격보다 재현성으로 걸렀더니, 후보 절반이 1분 만에 떨어졌습니다

2026.10.069분 읽기

자사 영상 콘텐츠 프로젝트에서 카드 영상을 만듭니다. 대본을 자막 한 줄 단위로 쪼개고, 그 한 줄을 음성으로 합성한 다음, 나온 음성 길이에 맞춰 화면을 이어 붙이는 구조입니다. 그래서 한 줄의 길이가 그대로 편집 타임라인이 됩니다.

여기서 음성 합성 서비스의 호출 경로를 선택해야 했습니다. 보통은 요금 표를 펼치고 데모 목소리를 듣는 것부터 시작합니다. 이번에는 그 앞에 관문을 하나 더 뒀습니다. 재는 데 1분이 걸렸고, 후보 절반이 거기서 떨어졌습니다.


같은 문장을 세 번 합성하면 창구가 갈립니다

관문은 한 문장입니다. '같은 입력이 항상 같은 출력으로 나오는가'. 같은 문장을 세 번 합성해서 나온 음성의 길이와 파일 바이트 수를 견줬습니다. 도구도 스크립트 몇 줄이면 됩니다.

목소리

3회 합성 길이

판정

ko-KR-Chirp3-HD-Aoede

7.1 / 6.5 / 6.7초

매번 다름

ko-KR-Neural2-B

7.0 / 7.0 / 7.0초

바이트까지 같음

ko-KR-Standard-B

7.0 / 7.0 / 7.0초

바이트까지 같음

결과가 직관과 반대였습니다. 가장 자연스럽게 들린 최신 계열(Chirp3: HD)이 매번 다른 길이를 냈습니다. 구형으로 분류되는 계열(Standard·WaveNet·Neural2)은 세 번 모두 바이트 단위까지 같은 파일을 냈습니다.

이 차이가 왜 문제가 되는지는 구조에서 나옵니다. 한 줄이 0.6초 흔들리면 그 줄 뒤의 화면이 전부 밀립니다. 대본을 한 글자 고쳐서 다시 만들 때마다 사람이 타임라인을 손으로 맞춰야 합니다. 목소리가 아무리 좋아도 그 창구는 이 구조에 못 씁니다.

같은 문장을 세 번 합성했을 때 최신 계열은 길이가 매번 달라지고 구형 계열은 바이트까지 같은 결과를 내는 비교 그림


흔들리는 쪽은 조정 손잡이도 같이 없습니다

추가로 확인된 차이가 하나 더 있었습니다. 같은 결과를 내는 계열만 음높이(pitch) 조정과 낭독 표기(SSML)를 받았습니다. 흔들리는 쪽에 pitch 값을 실어 보내면 400 으로 거절합니다.

두 제약은 따로 확인됐습니다. 최신 계열은 같은 입력에도 출력 길이가 달라졌고, 음높이와 SSML 조정도 지원하지 않았습니다. 최신 계열을 제외한 이유는 음성 품질이 아니라 재현성과 조정 기능이라는 두 운영 조건을 충족하지 못했기 때문입니다.


이름이 같아도 같은 목소리가 아닙니다

창구를 옮겨 보다가 하나 더 걸렸습니다. 같은 회사의 다른 창구에 같은 이름의 목소리가 있는데, 실제로 재 보니 음높이 중앙값이 160Hz 와 184Hz 로 24Hz 차이가 났습니다. 이름은 같지만 실제 음성 특성은 달랐습니다.

두 경로의 음높이 중앙값은 24Hz 차이가 났고, 실제로 들어도 음색의 차이가 느껴졌습니다. 이름을 믿고 창구만 바꿨다면 톤이 통째로 달라진 영상이 나갔을 겁니다. 이름 대신 잴 수 있는 값으로 확인하는 편이 빠릅니다.


검토 순서를 바꿨습니다

흔한 순서는 요금 표 비교부터입니다. 요금을 견주고, 데모를 듣고, 마음에 드는 것을 고르고, 붙여 본 다음에 문제를 발견합니다. 재현성 문제는 마지막 단계에서야 드러납니다. 길이가 흔들린다는 사실은 붙여서 두 번 만들어 봐야 보입니다. 그때는 이미 그 창구를 기준으로 파이프라인이 짜여 있습니다.

실제로 밟은 순서는 이렇습니다.

같은 문장으로 3회 합성해 길이와 바이트를 견준다 (1분)

여기서 떨어진 창구는 요금을 아예 보지 않는다

남은 창구끼리 목소리를 음높이 수치로 줄 세운다

그다음에 요금 구조를 본다

마지막에 인증 방식을 확인한다

이 순서가 싼 이유는 하나입니다. 선택 결과에 가장 큰 영향을 주는 조건을 가장 적은 비용으로 측정할 수 있습니다. 요금 비교는 30분이 걸리는데 결과를 뒤집지 못했습니다. 3회 합성은 1분이 걸렸고 후보 절반을 떨어뜨렸습니다.

고르는 기준을 스펙 표가 아니라 실제 쓰임에서 찾는 판단은 저장 장비를 고를 때도 같은 모양이었습니다.

요금부터 비교하는 흔한 순서와 재현성부터 재는 뒤집은 순서를 위아래로 견준 흐름 그림


목소리 선택도 청감에만 의존하지 않았습니다

남은 창구 안에서 목소리를 고를 때도 듣기만으로는 정하지 않았습니다. 참고로 삼은 목소리에서 네 가지를 쟀습니다. 음높이 중앙값, 음높이가 오르내리는 폭, 전체 시간 중 실제로 말한 비율, 음량입니다. 그리고 후보 목소리들로 같은 문장을 만들어 참고 목소리와의 차이 순으로 줄을 세웠습니다.

음높이 중앙값 — 25Hz 가 대략 한 톤이고, 10Hz 안쪽이면 귀로는 같은 높이로 들립니다

오르내리는 폭 — 차분함의 대리 지표입니다. 좁을수록 담담하게 읽습니다

말한 비율 — 같은 문장을 얼마나 빽빽하게 채우는지를 봅니다

음량 — 뒤에 깔 배경음과의 균형을 미리 잡습니다

여기에 함정이 하나 있습니다. 같은 목소리라도 문장이 다르면 음높이 중앙값이 20Hz 넘게 흔들립니다. 후보를 서로 다른 문장으로 뽑아 놓고 견주면 목소리 차이가 아니라 문장 차이를 재게 됩니다. 반드시 같은 문장으로 뽑아야 비교가 성립합니다.


요금과 인증은 창구마다 통째로 다릅니다

모델이 같아도 창구가 다르면 요금 구조와 인증 방식이 함께 달라집니다. 요금은 크게 세 갈래였습니다. 기본료를 월정액으로 내는 곳, 기본료 없이 월 무료 한도가 큰 곳, 무료 한도가 아예 없어 만드는 만큼 붙는 곳입니다. 월정액 기본료형은 한 편만 만드는 달에도 같은 값이 나갑니다. 제작량이 달마다 들쭉날쭉한 지금 규모에는 기본료 없이 무료 한도가 큰 쪽이 맞았습니다.

인증도 창구마다 다릅니다. 한 창구는 단순 키를 아예 받지 않습니다. 주소 끝에 키를 붙여 부르면 401 과 함께 'API keys are not supported by this API' 가 돌아옵니다. 서비스 계정 자격증명으로 토큰을 받아야 부를 수 있습니다. 일반 사용자가 접근할 수 없는 경로도 있었습니다. 한 곳은 포털에 내부 및 제휴 파트너 전용이라고 적혀 있었고, 다른 한 곳은 가입은 되는데 요금을 공개하지 않습니다.

창구 선정에서 재현성 관문을 통과한 뒤에야 음높이·요금·인증을 보는 4단계 깔때기 그림


이 관문이 필요 없는 경우도 있습니다

이 검사가 모든 구조에 필요하지는 않습니다. 한 번 만들고 끝나는 용도라면 길이가 흔들려도 티가 나지 않습니다. 이 글의 전제는 다시 만든다는 것입니다. 대본 전체를 한 번에 합성해 통짜로 쓰는 구조에서도 줄 단위 흔들림은 문제가 되지 않습니다. 이 검사가 필요한 이유는 음성을 조각별로 생성해 이어 붙이기 때문입니다.

흔들리는 쪽을 그대로 쓰는 길도 있습니다. 합성이 끝난 뒤 실제 길이를 읽어서 화면 타이밍을 거기에 맞추는 방식입니다. 그러면 재현성 조건은 사라지는 대신 파이프라인이 한 단계 늘어납니다. 이번에는 단계를 늘리지 않는 쪽을 택했습니다.

표본에 대해서도 솔직하게 적습니다. 3회는 적은 횟수입니다. 세 번 같았다고 언제나 같다는 보장은 없습니다. 다만 세 번 만에 흔들리는 창구를 걸러 내는 데는 충분했고, 그게 이 검사의 목적입니다. 모델도 바뀝니다. 현재 출력이 달라지는 계열도 다음 버전에서는 고정될 수 있습니다. 가져갈 것은 어느 계열이라는 결론이 아니라 재는 법입니다.


외부 창구를 붙이기 전 점검 목록

이 창구의 출력이 다음 단계의 입력이 되는가 — 자막·타임라인·해시·캐시 키 자리라면 재현성이 품질을 이깁니다

같은 입력을 세 번 넣어 같은 출력이 나오는가 — 길이만이 아니라 바이트까지 견줍니다

후보를 떨어뜨리는 조건 중 가장 싸게 잴 수 있는 것은 무엇인가 — 그것부터 잽니다

이름이 같은 자원을 잴 수 있는 값으로 확인했는가 — 창구가 다르면 이름만 같을 수 있습니다

요금과 인증을 창구 단위로 따로 봤는가 — 모델이 같아도 이 둘은 통째로 다릅니다


마무리

남은 것은 결정 하나와 스크립트 하나입니다. 최신 계열을 품질이 아니라 재현성 때문에 뺐고, 부수 효과로 음높이와 낭독 표기 조정까지 딸려 왔습니다. 목소리를 참고 톤에 맞추는 작업은 그 계열에서만 가능했습니다. 그리고 후보 목소리를 수치로 줄 세우는 비교 스크립트가 하나 남아서, 다음에 목소리를 바꿀 때는 귀로 다시 고르지 않아도 됩니다.

좋아 보이는 교체를 실제로 재 보고 접은 기록도 같은 자리에 있습니다. 재 보기 전에는 어느 쪽이 맞는지 알 수 없었습니다.

외부 창구를 고를 때 첫 질문을 바꾸는 것만으로 비용이 줄었습니다. 무엇을 주는 창구인가가 아니라, 늘 같은 것을 주는 창구인가를 먼저 묻습니다.

#TTS#음성합성#재현성#창구선정#영상자동화