지난 글에서는 녹음을 사람별로 갈랐다. 이번에는 방향이 다르다. 들어온 소리를 받아 다른 소리를 내는 일이다. 한국어로 말하면 영어로 나오는 통역, 말을 걸면 말로 답하는 대화, 내 말투를 유지한 채 다른 목소리로 바꾸는 변환이 모두 여기에 들어간다.
지금까지 이 일을 하는 표준적인 방법은 세 조각을 잇는 것이었다. 소리를 글자로 바꾸고, 글자를 다루고, 글자를 다시 소리로 만든다. 잘 작동하고 각 조각을 따로 고를 수 있어 다루기도 편하다. 그런데 이 경로에는 되돌릴 수 없는 손실이 하나 있다.
글자를 지나면 버려지는 것들
사람이 말할 때 실려 나가는 정보는 낱말만이 아니다. 어디서 올라가고 어디서 내려가는 억양, 얼마나 빨리 말하는지, 어디서 쉬는지, 목소리가 떨리는지, 웃으면서 말했는지가 함께 간다. 이것을 통틀어 운율(prosody)이라 부른다 — 같은 낱말을 다르게 들리게 만드는 소리의 결이다.
글자는 이 중 아무것도 담지 않는다. "네, 알겠습니다"라는 전사 결과는 그 말이 흔쾌한 수락이었는지 마지못한 체념이었는지를 지운다. 다시 소리로 만드는 단계에서 합성 모델은 그 정보가 없으니 기본 말투로 읽는다. 통역이 뜻은 맞는데 어딘가 밋밋한 이유가 이것이다.
버려지는 것이 운율만도 아니다.
- 화자 특성. 누구의 목소리인지가 사라진다. 여러 명이 말하는 자리를 통역하면 전부 같은 목소리로 나온다
- 문자로 안 적히는 말. 표기 체계가 정착되지 않은 언어, 방언, 그리고 말끝을 흐린 발화는 전사 단계에서 이미 뭉개진다
- 인식 오류의 누적. 앞 단계가 한 글자 틀리면 뒤 단계는 그 틀린 글자를 정답으로 받는다. 조각을 이어 붙인 구조에서 오류는 앞으로만 흐른다
소리를 토큰으로 다룬다
글자를 안 거치겠다면 모델이 소리를 직접 먹고 소리를 뱉어야 한다. 언어 모델이 글자를 다루는 방식과 똑같이 다루려면 소리도 띄엄띄엄한 조각의 나열이 되어야 한다.
그 조각을 만드는 것이 뉴럴 코덱(neural codec)이다. 오디오를 짧은 구간마다 벡터로 바꾼 뒤, 미리 정해 둔 사전에서 가장 가까운 항목의 번호로 대체한다. 이 번호가 음성 토큰이고, 초당 수십 개 정도로 나온다. 이렇게 만들어 두면 소리를 다루는 일이 글자를 다루는 일과 같은 모양이 된다 — 다음 토큰을 예측하면 된다.
토큰은 대개 두 갈래로 나눠 쓴다.
| 의미 토큰 | 음향 토큰 | |
|---|---|---|
| 담는 것 | 무슨 말을 했는가 | 어떤 소리로 들리는가 |
| 뽑는 법 | 음성 표현 모델의 중간층을 묶어서 | 코덱이 파형을 복원할 수 있게 |
| 화자가 바뀌면 | 거의 안 바뀐다 | 통째로 바뀐다 |
| 쓰는 자리 | 뜻을 옮기는 단계 | 실제 소리를 만드는 단계 |
번역이라면 의미 토큰 쪽에서 언어를 갈아 끼우고, 목소리는 음향 토큰 쪽에서 정한다. 둘을 갈라 놓은 덕에 "무슨 말"과 "누구 목소리"를 따로 정할 수 있다. 원래 화자의 목소리를 유지하면서 언어만 바꾸는 통역이 이 구조에서 나온다.
한 가지 짚어 둘 것은 음향 토큰이 한 겹이 아니라는 점이다. 한 겹으로는 파형을 되살릴 만큼 세밀하지 못해서, 남은 오차를 다음 겹이 다시 근사하는 식으로 여러 겹을 쌓는다. 그래서 초당 토큰 수가 겹 수만큼 늘어나고, 이것이 직결형 모델의 비용이 텍스트 모델보다 비싼 직접적인 이유다.
얻는 것과 잃는 것
| 연결형 (인식 · 처리 · 합성) | 직결형 (한 모델) | |
|---|---|---|
| 지연 | 단계마다 쌓인다 | 한 번에 흐른다 |
| 운율 | 가운데서 버려진다 | 입력에서 출력으로 이어진다 |
| 목소리 | 합성 모델의 목소리로 통일 | 원래 목소리를 유지할 수 있다 |
| 검수 | 중간 텍스트를 읽고 고칠 수 있다 | 끼울 자리가 없다 |
| 용어 교정 | 사전으로 치환하면 된다 | 방법이 마땅치 않다 |
| 모델 선택 | 단계마다 자유롭게 고른다 | 그 벤더에 묶인다 |
| 원인 추적 | 단계별로 끊어 본다 | 안이 안 보인다 |
| 문자 없는 언어 | 다룰 수 없다 | 다룰 수 있다 |
| 비용 | 세 번 청구 | 오디오 토큰 단가가 비싸다 |
표에서 가장 무거운 줄은 검수다. 금융 상담이나 의료 안내처럼 나가는 말이 규제를 받는 자리에서는, 나가기 전에 읽고 막을 수 있는 텍스트가 있는지가 도입 여부를 가른다. 직결형은 소리가 이미 나간 뒤에야 전사가 나오므로 기록은 남길 수 있어도 차단은 못 한다.
용어 교정도 실무에서 자주 걸린다. 제품명과 사람 이름을 정확히 발음해야 하는 자리에서 연결형은 중간 텍스트에 치환 규칙을 걸면 끝이다. 직결형에는 그 자리가 없어서 프롬프트로 부탁하는 정도밖에 안 된다.
그래서 지금 실무에서 자주 보이는 모양은 순수한 둘 중 하나가 아니라 직결형을 쓰면서 전사를 함께 받아 두는 절충이다. 소리는 빠르고 자연스럽게 나가고, 텍스트는 로그와 사후 점검에 쓴다. 차단은 포기하고 기록만 챙기는 선택이다.
목소리를 옮길 수 있다는 것
원래 화자의 목소리를 유지한 채 언어만 바꾸는 기능은 이 기술의 가장 매력적인 부분이면서 가장 조심할 부분이다. 몇 초짜리 견본만으로 그 사람 목소리를 만들어 낼 수 있다는 뜻이기 때문이다.
제품에 넣는다면 아래는 선택이 아니라 기본으로 깔아야 한다.
- 동의를 받은 목소리만 쓴다. 견본을 올린 사람이 그 목소리의 주인인지 확인하는 절차가 필요하다. 임의의 녹음 파일을 그대로 견본으로 받으면 안 된다
- 워터마크를 넣는다. 사람 귀에 안 들리면서 기계는 읽을 수 있는 표식을 합성음에 심어 둔다. 나중에 "이게 우리 시스템에서 나온 소리인가"를 판정할 수 있어야 한다
- 합성음임을 밝힌다. 통화 시작에 안내를 넣는 것이 여러 나라에서 이미 의무 쪽으로 가고 있다
- 견본을 오래 두지 않는다. 목소리 견본은 생체정보에 준해 다뤄야 한다. 보관 기간과 삭제 경로를 처음부터 정해 둔다
기능을 켜기 전에 이 넷의 답이 없으면, 기술이 아니라 운영에서 사고가 난다.
평가가 어렵다
연결형은 단계마다 익숙한 지표가 있다. 인식은 글자 오류율, 번역은 번역 품질 점수, 합성은 사람 평가다. 직결형은 중간이 없어서 이 방식이 안 통한다.
지금 쓰는 방법은 대체로 우회로다.
- 다시 글자로 만들어 잰다. 나온 소리를 음성 인식에 넣어 텍스트를 얻고 그 텍스트로 번역 품질을 잰다. 널리 쓰이지만 채점에 쓰는 인식 모델의 오류가 점수에 섞인다. 잘 들리는 목소리가 유리해지는 편향도 있다
- 사람이 듣고 매긴다. 자연스러움과 뜻 전달을 나눠 점수를 받는다. 가장 믿을 만하고 가장 비싸다
- 목소리가 같은지 잰다. 화자 임베딩으로 입력과 출력의 유사도를 본다. 목소리 유지가 목표일 때만 의미가 있다
- 운율이 옮겨졌는지 본다. 쉼의 위치, 말 속도, 억양 곡선을 입력과 출력에서 비교한다. 표준 지표가 아직 없어 자체 정의로 쓰는 경우가 많다
여기서 실수하기 쉬운 자리가 하나 있다. 뜻이 맞는지와 잘 들리는지는 따로 재야 한다. 하나로 합친 점수를 보면, 발음이 또렷해지느라 내용이 조금 틀어진 모델이 더 좋아 보이는 일이 생긴다. 통역에서는 그 반대가 맞다.
어느 쪽을 고를 것인가
- 나가는 말이 규제 대상이거나 검수를 통과해야 한다 → 연결형. 중간 텍스트가 있다는 것 하나로 결정된다
- 대화의 응답 속도가 제품의 질을 결정한다 → 직결형. 단계가 줄어드는 만큼이 그대로 지연으로 돌아온다. 이 계산은 실시간 음성 API에서 자세히 다뤘다
- 감정과 말투가 내용의 일부다(상담 품질 평가, 콘텐츠 더빙) → 직결형
- 여러 사람이 말하는 자리를 통역한다 → 직결형. 화자마다 다른 목소리로 나가야 누가 한 말인지 따라갈 수 있다
- 용어와 고유명사를 정확히 발음해야 한다 → 연결형
- 자료가 적은 언어, 문자 표기가 없는 언어를 다룬다 → 직결형 말고는 길이 없다
정리
- 소리를 글자로 바꿨다 되돌리는 경로는 억양 · 감정 · 목소리를 가운데서 버린다. 되살릴 방법이 없다
- 직결형은 소리를 토큰으로 바꿔 언어 모델처럼 다룬다. 의미 토큰과 음향 토큰을 갈라 놓아 "무슨 말"과 "누구 목소리"를 따로 정한다
- 음향 토큰이 여러 겹으로 쌓이는 구조라 초당 토큰 수가 많다. 오디오 단가가 비싼 이유가 여기 있다
- 직결형이 포기하는 것은 중간 텍스트를 읽고 막을 자리다. 규제받는 말이 나가는 시스템에서는 이것 하나로 선택이 갈린다
- 실무에서 흔한 절충은 직결형으로 내보내면서 전사를 함께 받아 두는 것이다. 차단은 포기하고 기록만 챙긴다
- 목소리를 옮길 수 있다는 것은 사칭도 가능하다는 뜻이다. 동의 확인 · 워터마크 · 합성음 고지 · 견본 보관 기간을 기능보다 먼저 정한다
- 평가는 아직 우회로뿐이다. 다시 인식해 재는 방식은 채점용 인식 모델의 오류를 함께 재게 되므로, 뜻과 소리를 갈라 매기고 사람 평가를 일부 섞는다
읽어주셔서 감사합니다. 😊

