TTS 작동 원리: 글자가 소리가 되기까지
요약
TTS 작동 원리는 네 단계입니다. 먼저 텍스트를 정규화해 숫자와 약어를 풀어 쓰고, 발음 단계가 단어를 음소로 바꿉니다. 운율 모델은 음높이, 길이, 강도를 예측하고, 보코더가 그 계획을 실제 음성 파형으로 바꿉니다. 음성이 틀릴 때는 목소리보다 앞단의 텍스트 정리가 원인인 경우가 많습니다.
TTS 작동 원리는 세 단계로 요약할 수 있습니다. 먼저 소프트웨어가 텍스트를 정리하고 각 단어를 어떻게 발음할지 정합니다. 다음으로 신경망 모델이 문장의 리듬, 음높이, 길이를 스펙트로그램으로 예측합니다. 마지막으로 보코더가 그 스펙트로그램을 실제 음성 파형으로 바꿉니다. 1,000단어짜리 글 한 편이라면 이 과정 전체가 몇 초 안에 끝나기 때문에, 링크를 붙여 넣고 재생 버튼을 누르는 것만으로 들을 수 있습니다.
페이지에서 귀까지, 실제로 무슨 일이 일어날까?
릴레이 경주를 떠올리면 됩니다. 주자는 네 명입니다. 텍스트가 들어가면 정규화된 텍스트가 발음 단계로 넘어가고, 발음 정보는 운율 단계로, 운율 정보는 파형 생성기로 넘어갑니다. 그러고 나서 소리가 나옵니다.
휴대폰 손쉬운 사용 메뉴의 음성부터 읽기 앱 안의 내레이터까지, 현대의 음성 엔진은 대부분 이 릴레이의 어떤 변형을 따릅니다. 최근 시스템 중에는 주자 두세 명을 신경망 하나로 합친 것도 있습니다. 다만 각 역할이 사라진 것은 아니고, 하나의 모델 안에서 처리될 뿐입니다.
입력 → "Dr. Voss paid $4.50 on 5/21."
1단계 → "Doctor Voss paid four dollars fifty cents on May twenty-first."
2단계 → /ˈdɑːktɚ vɔs .../
3단계 → 음높이, 길이, 에너지 (음소 단위)
4단계 → 파형, 초당 22,050~48,000개 샘플TTS 작동 원리의 핵심은 이 구조가 전부입니다. 이어지는 내용은 각 주자가 무엇을 하는지, 어디서 실패하는지, 실패했을 때 무엇이 들리는지를 다룹니다.
텍스트 정규화가 왜 그렇게 중요할까?
글로 쓰인 텍스트가 곧 읽기 좋은 텍스트는 아니기 때문입니다. 웹 페이지에는 숫자, 날짜, 약어, 통화 기호, URL, 각주 번호, 이모지가 가득합니다. 이 중 어느 것도 발음이 분명하지 않습니다.
정규화는 이것들을 말로 풀어 줍니다. "5/21/24"는 "2024년 5월 21일"로, "$4.50"은 "4달러 50센트"로 바뀝니다. "St."는 주변 문맥에 따라 "Street"이 되기도 하고 "Saint"가 되기도 합니다. 예전 엔진은 사람이 쓴 규칙으로 이 일을 했고, 최근 엔진은 규칙에 더해 애매한 경우만 맡는 작은 학습 모델을 씁니다.
기사 음성에서 문제가 가장 빨리 드러나는 곳도 여기입니다. "iPhone 15 Pro Max"를 "십오"로 읽느냐 "일 오"로 읽느냐에 따라 문장의 뜻이 달라집니다. 문단 중간에 있는 "[12]" 같은 인용 표시를 그대로 읽으면 생각의 흐름이 끊깁니다. 좋은 기사 음성 도구는 각주 표시를 지우고, 내비게이션 텍스트를 건너뛰고, 표를 어떻게 다룰지를 음성이 입을 열기 전에 정합니다.
긴 글을 들어 보면 첫 1분 안에 차이가 드러납니다. 내레이터가 숫자에서 더듬는다면 문제는 목소리가 아니라 앞단에서 생긴 것입니다.

시스템은 단어마다 어떻게 발음할지 알까?
영어 철자는 소리를 잘 알려 주지 않습니다. "though", "through", "tough", "thought"는 글자는 거의 같지만 소리는 거의 다릅니다. 그래서 엔진에는 발음 단계가 필요합니다. 보통 자소-음소 변환, 영어로는 G2P라고 부릅니다.
음소는 단어를 구분하는 가장 작은 소리 단위입니다. 영어에는 대략 40개쯤 있습니다. G2P 단계는 두 가지 방법으로 글자를 음소로 바꿉니다. 발음 사전은 흔한 단어와 예외를 처리하고, 학습된 모델은 사전에 없는 나머지를 추정합니다. 처음 보는 성이 대표적인 경우입니다.
가장 어려운 부분은 동형이의어입니다. "I read it yesterday"의 "read"와 "I read every morning"의 "read"는 철자가 같지만 소리가 다릅니다. "bass"도 물고기를 가리킬 때와 악기를 가리킬 때 소리가 다릅니다. 그래서 최신 엔진은 단순 조회 대신 주변 문장을 보는 문맥 인식 신경망을 씁니다.
그래도 실패하는 경우는 남습니다.
대부분 영어인 글 속의 고유명사, 특히 영어가 아닌 이름
기술 용어와 약어, 예를 들어 "SQL"이 "시퀄"이 될지 "에스큐엘"이 될지
철자 규칙을 일부러 깨뜨린 브랜드명
대부분의 엔진은 사용자 지정 발음을 넣을 수 있게 해 줍니다. 그런데 그 기능을 찾아 쓰는 사람은 많지 않습니다. 같은 단어가 계속 걸린다면 그 설정부터 찾아 보는 편이 좋습니다.
리듬과 억양은 어디에서 올까?
이 단계가 평평한 목소리와 40분 동안 들을 만한 목소리를 가릅니다. 운율(prosody)이라고 부르며, 문장 전체의 강세, 속도, 멈춤, 음높이 변화를 뜻합니다.
사람은 이것을 의식하지 않고 합니다. 질문 끝에서 음높이를 올리고, 쉼표 앞에서 살짝 늦추고, 핵심 단어에 힘을 줍니다. TTS 모델은 이 모든 것을 텍스트만 보고 예측해야 합니다. 음소 하나마다 세 가지 값을 추정합니다. 얼마나 길게 발음할지, 음높이가 어느 정도인지, 에너지가 얼마인지. 이때 주변 단어, 문장부호, 그리고 음절·단어·구 안에서 그 음소가 놓인 위치를 함께 봅니다.
문장부호는 모델이 받는 가장 강한 신호입니다. 쉼표는 짧은 멈춤, 마침표는 더 긴 멈춤, 문단 나눔은 그보다 더 긴 멈춤을 만듭니다. 그래서 문단 구분이 없거나 중첩 인용이 빽빽한 글은 아무리 좋은 목소리라도 급하게 들립니다.
기억해 둘 숫자가 하나 있습니다. 일반적인 내레이터는 분당 약 150단어를 말합니다. 따라서 3,000단어 분량의 에세이는 약 20분짜리 음성입니다. 대부분의 앱은 재생 속도를 1.5배나 2배까지 올릴 수 있고, 그러면 같은 에세이가 각각 약 13분, 10분이 됩니다. 1.5배에서도 편안하게 들리는지, 아니면 뭉개지는지를 가르는 것이 바로 운율의 품질입니다.
보코더는 무엇이고 왜 필요할까?
운율 단계가 끝나면 모델에게는 계획은 있지만 소리는 없습니다. 대부분의 신경망 시스템에서 그 계획은 멜 스펙트로그램입니다. 주파수별 에너지가 시간에 따라 어떻게 퍼져 있는지 보여 주는 그림이며, 보통 초당 약 80프레임입니다.
스펙트로그램은 오디오가 아닙니다. 파형을 파형답게 만드는 미세한 위상 정보를 버리기 때문입니다. 그래서 두 번째 모델인 보코더가 그 스펙트로그램에 맞는 파형을 다시 만들어야 합니다. 초당 수만 개의 오디오 샘플, 즉 그 순간의 공기 압력을 나타내는 숫자를 생성한다는 뜻입니다.
WaveNet은 2016년 DeepMind가 발표한 모델로, 신경망 보코더를 널리 알렸습니다. 원시 오디오를 샘플 하나씩 생성했고, 그 전의 어떤 방식보다 자연스럽게 들렸습니다. 대신 느렸습니다. 이후의 HiFi-GAN 같은 보코더는 오디오를 병렬로 생성해 실시간보다 훨씬 빠르게 돌아가고, 덕분에 휴대폰에서도 즉시 재생이 가능해졌습니다.
중간 단계를 생략하는 시스템도 있습니다. 2021년 논문에서 소개된 VITS는 음소에서 파형까지 가는 네트워크를 하나로 학습합니다. 넘겨주는 지점이 줄면 오류가 쌓일 곳도 줄어듭니다.
1980년대 말하는 장난감에서 여기까지 어떻게 왔을까?
음성 합성은 신경망에서 시작하지 않았습니다. 세 시대를 거쳤고, 오래된 화면 낭독기에는 앞의 두 시대가 아직 남아 있습니다.

포먼트 및 규칙 기반 합성. 엔지니어가 성도(vocal tract)를 필터로 모델링하고 매개변수를 손으로 맞췄습니다. 알아들을 수는 있었지만 기계음이 분명했습니다. 초기 말하는 장난감과 1세대 화면 낭독기의 목소리가 이것입니다. 지금도 많은 시각장애 사용자가 휴대폰에서 이 음성을 빠른 속도로 씁니다. 빠르고 예측 가능하며, 업데이트 때마다 바뀌지 않기 때문입니다.
연결형(unit-selection) 합성. 목소리를 모델링하는 대신 사람 화자를 수십 시간 녹음해 소리를 작은 단위로 자른 뒤, 실행 시점에 알맞은 조각을 이어 붙였습니다. 사람에 훨씬 가까웠지만 이음새가 들렸습니다. 특이한 단어에서 이어 붙인 자국이 드러났고, 말투를 바꾸려면 새로 녹음해야 했습니다.
신경망 합성. 지금의 방식입니다. 모델이 많은 녹음 데이터에서 입력과 소리 사이의 전체 대응 관계를 학습하고, 잘라 붙이는 대신 소리를 직접 생성합니다. 스타일, 속도, 감정을 조절할 수 있게 되었고, 짧은 샘플로 목소리를 복제하는 것도 가능해졌습니다. 이음새도 대부분 사라졌습니다.
한 가지 짚고 넘어가야 할 점이 있습니다. 신경망 음성도 완벽하지 않습니다. 단어를 지어내거나, 음절을 빠뜨리거나, 강조가 필요한 문장을 밋밋하게 만들 수 있습니다. 실패는 예전보다 드물고 더 이상한 모습으로 나타나지만 분명히 존재합니다. 긴 문서라면 가끔 뭉개지는 아름다운 목소리보다, 조금 밋밋하더라도 한 번도 끊기지 않는 목소리가 낫습니다.
어떤 TTS 도구가 이 단계를 실제로 보여 줄까?
제품마다 이 릴레이에 거는 방향이 다릅니다. 알아 둘 만한 도구와 각각에 대한 솔직한 평가를 정리했습니다.
Speechify는 앱의 완성도와 많은 음성 목록이 강점입니다. 모바일에서 강하고, 여러 출처에서 콘텐츠를 가져오는 기능이 많습니다. 연동 범위를 가장 넓게 원한다면 여기서 시작하는 것이 좋습니다.
NaturalReader는 이 분야에서 더 오래되고 담백한 이름입니다. 문서와 PDF 처리에 안정적이어서, 입력이 웹 기사보다 파일일 때 무난한 선택입니다.
ElevenLabs는 반대편 끝에 있습니다. 음성 생성 플랫폼이 우선이고, 운율과 음성 복제에 강점이 있습니다. 읽을 대기열을 처리하기보다, 공개할 오디오를 만들기 위해 설계되었습니다.
Voice Dream Reader는 많은 저시력 독자가 이미 알고 있는 앱입니다. 기반 음성 엔진을 바꿀 수 있고, 발음을 조정할 수 있으며, 속도를 세밀하게 설정할 수 있습니다. 위에서 설명한 파이프라인을 실제로 조정할 수 있는 도구입니다.
어느 도구가 "가장 좋은 목소리"를 가졌다는 생각은 버리는 편이 좋습니다. 차이는 앞단에 있습니다. 기사를 어떻게 정리하는지, 표를 어떻게 처리하는지, 중첩 인용이 많은 5,000단어짜리 글을 어떻게 다루는지. 읽기 워크플로가 제대로 작동하는지 아니면 조용히 실패하는지는 바로 그 지점에서 갈립니다.

이것이 듣는 방식을 어떻게 바꿀까?
릴레이를 알면 실제로 쓸 수 있는 세 가지 방법이 생깁니다.
입력을 정리하세요. 음성으로 보내기 전에 광고, 쿠키 배너, 각주 잡음을 제거하세요. 리더 모드가 도움이 됩니다. 앞단이 고칠 수 있는 범위에는 한계가 있습니다.
속도와 운율을 맞추세요. 1.0배에서는 좋은데 1.5배에서 깨지는 음성이라면 길이 모델이 약점입니다. 속도를 포기하기 전에 다른 음성을 시도해 보세요.
반복되는 오류를 고치세요. 이름이나 약어가 계속 틀린다면, 몇 달 동안 참지 말고 사용자 지정 발음을 한 번 등록하세요.
가장 좋은 글이 아니라 가장 까다로운 글로 테스트하세요. 깔끔한 800단어짜리 블로그 글은 아무것도 증명하지 못합니다. 숫자, 인용, 표가 들어간 4,000단어짜리 밀도 높은 글이 진짜 시험입니다.
다음 출퇴근 전에 긴 글 하나와 짧은 글 하나를 대기열에 넣으세요. 두 글의 처음 2분을 보통 속도로 듣고, 그다음 1.5배로 들어 보세요. 방금 다룬 단계들이 들릴 것이고, 어느 주자가 바통을 떨어뜨렸는지 알게 될 것입니다.