cv.cm

AI · AI 오디오

TTS(텍스트 음성 변환)는 어떻게 동작할까? 신경망 TTS란?

9분 분량

핵심 답변

TTS(Text-to-Speech, 텍스트 음성 변환)는 글을 세 단계를 거쳐 오디오로 바꿉니다. 먼저 텍스트를 정규화(숫자, 날짜, 약어)하고, 소리로 변환한 다음, 파형을 생성합니다. 신경망 TTS는 녹음된 음성으로 학습한 신경망을 써서 자연스러운 리듬과 톤을 냅니다. 브라우저가 Web Speech API로 제공하는 음성은 기기나 그 제조사에서 오기 때문에 휴대폰과 컴퓨터마다 다릅니다.

텍스트 음성 변환 열기

TTS 시스템의 세 단계

  1. 텍스트 정규화. 시스템이 텍스트를 소리 내어 읽을 수 있는 단어로 바꿔 씁니다. "Dr. Lee paid $25 on 3/4"는 "Doctor Lee paid twenty-five dollars on March fourth"(로케일에 따라 "the third of April") 같은 형태가 되어야 합니다. 잘못된 발음은 음성 자체보다 이 단계에서 많이 생깁니다.
  2. 언어 분석. 단어를 그 언어의 소리 단위인 음소로 바꾸고, 강세, 끊어 읽기, 억양을 예측합니다. 현재형과 과거형이 다르게 읽히는 "read"처럼 철자는 같은데 소리가 다른 단어나, 읽는 법이 둘 이상인 한자는 문맥으로 판단해야 합니다.
  3. 파형 생성. 소리와 그 타이밍을 오디오 샘플로 바꿉니다. 오래된 시스템은 녹음된 조각을 이어 붙이거나(연결 합성) 포먼트 모델을 써서 로봇 같은 소리가 났습니다. 신경망 시스템은 신경망으로 오디오를 예측합니다.

고전적인 신경망 설계인 Tacotron 2는 오늘날의 구조를 분명하게 보여 줍니다. 한 신경망이 텍스트를 멜 스펙트로그램(음성의 시간-주파수 그림)으로 바꾸고, 두 번째 신경망인 보코더가 그 그림을 파형으로 바꿉니다. 개발진의 청취 평가에서 이 시스템은 전문가의 녹음에 가까운 점수를 받았습니다. 최근 시스템은 단계를 합치거나 언어 모델 방식의 신경망으로 압축된 오디오 토큰을 생성하기도 하는데, 덕분에 짧은 샘플만으로 화자의 목소리를 따라 할 수 있습니다.

신경망 TTS와 브라우저 시스템 음성

웹 페이지는 자체 모델 없이도 Web Speech API로 말을 할 수 있습니다. speechSynthesis 객체가 플랫폼이 제공하는 음성 중 하나로 SpeechSynthesisUtterance를 소리 내어 읽습니다.

브라우저 시스템 음성(Web Speech API)신경망 TTS 서비스 또는 모델
음성의 출처운영체제나 브라우저 제조사. 일부는 로컬, 일부는 원격직접 실행하는 모델 또는 호출하는 클라우드 API
음성 선택설치된 것에 따라 다름. Windows, macOS, Android, iOS마다 다름고정된 카탈로그, 커스텀 음성, 경우에 따라 복제
품질기기에 따라 로봇 같은 소리부터 꽤 자연스러운 소리까지대체로 자연스럽고 리듬과 감정이 더 좋음
비용과 설정무료, 키 불필요, 로컬 음성은 오프라인 동작API 키와 글자 수 단위 요금, 또는 큰 모델 다운로드
오디오 파일 얻기API에 포함되지 않음. 스피커로 재생됨보통 MP3, WAV 등으로 반환
음성 복제불가일부 서비스에서 가능, 동의 확인 절차 포함

각 음성은 localService 플래그를 알려 줍니다. 사양에 따르면 로컬 합성기는 true, 원격 서비스는 false이며, 원격 음성은 네트워크가 필요하고 지연이 생길 수 있습니다.

const u = new SpeechSynthesisUtterance("Your order has shipped.");
u.lang = "en-GB";
u.rate = 0.9;   // 1 is normal; spec allows 0.1 to 10
u.pitch = 1.0;  // 0 to 2, 1 is the voice default
u.volume = 1.0; // 0 to 1
const voices = speechSynthesis.getVoices();
u.voice = voices.find(v => v.lang === "en-GB") || null;
speechSynthesis.speak(u);

음성은 페이지가 시작된 뒤에 로드되는 경우가 많아서 getVoices()가 처음에는 빈 목록을 반환할 수 있습니다. 이때는 voiceschanged 이벤트를 기다리세요. 예를 들어 cv.cm의 텍스트 음성 변환 도구는 바로 이 내장 음성을 쓰고 속도와 음높이 조절을 제공합니다. 초안을 빠르게 들어 보기에 좋지만 신경망 음성 생성기는 아니며, 음성 목록은 기기에 따라 달라집니다.

SSML: 쉼과 발음 제어하기

음성 합성 마크업 언어(SSML)는 W3C 표준으로, TTS 엔진에 텍스트를 어떻게 읽을지 알려 주는 XML입니다. 대부분의 클라우드 TTS 서비스가 지원합니다. Web Speech 사양은 발화에 SSML을 쓸 수 있게 하지만, 일부 태그를 지원하지 않는 엔진은 그 태그를 제거하고 남은 텍스트를 읽어야 하므로 브라우저 지원은 일관되지 않습니다.

<speak>
  Your code is <say-as interpret-as="characters">A7K</say-as>.
  <break time="500ms"/>
  Please call <sub alias="World Health Organization">WHO</sub>
  before <prosody rate="90%" pitch="+2st">Friday at noon</prosody>.
  The word is <phoneme alphabet="ipa" ph="təˈmɑːtoʊ">tomato</phoneme>,
  and it is <emphasis level="strong">not</emphasis> optional.
</speak>
요소기능값 예시
break쉼 삽입time 250ms 또는 2s, strength weak~x-strong
prosody속도, 음높이, 볼륨 변경rate 90% 또는 slow, pitch +2st 또는 high, volume +6dB 또는 soft
emphasis단어 강조level strong, moderate, reduced
say-as글자 단위, 날짜, 숫자로 읽기interpret-as 값은 엔진에 따라 다름
sub표기된 텍스트 대신 별칭으로 읽기WHO를 World Health Organization으로 읽기
phoneme정확한 발음 지정alphabet ipa, 지원은 선택 사항
voice, lang텍스트 중간에 음성이나 언어 전환영어 문장에 인용된 외국어 제목

서비스가 SSML을 무시하더라도 일반 텍스트로 어느 정도 조절할 수 있습니다. 쉼에는 쉼표와 마침표를, 숫자는 풀어 쓰고, 어려운 이름은 발음 그대로 다시 적으세요.

소리 내어 읽을 때 자연스러운 글쓰기

  • 문장을 짧게 쓰세요. 절이 길면 음성이 자연스럽게 숨 쉴 곳을 놓칩니다.
  • 중요할 때는 숫자를 읽어야 하는 방식대로 쓰세요. "two thousand twenty-six" 또는 "twenty twenty-six"처럼요.
  • 듣는 사람이 들어야 하는 약어와 단위는 풀어 쓰세요. "km/h"는 글자 하나씩 읽을 수 있습니다.
  • 언어와 지역을 정확히 설정하세요. en-US 음성이 스페인어 이름을 읽거나, zh-CN 음성이 영어를 읽으면 엉뚱한 발음 체계를 씁니다.
  • 공개하기 전에 결과를 처음부터 끝까지 한 번 들어 보세요. 이름, 숫자, 발음이 두 가지인 단어를 확인합니다.

음성 복제: 동의와 법

최신 모델은 짧은 녹음만으로 목소리를 흉내 낼 수 있습니다. 자기 영상을 더빙하거나 목소리를 잃은 사람에게 목소리를 돌려주는 데 유용하지만, 가족이나 회사 임원을 사칭하는 전화처럼 사기에도 쓰입니다. 모든 목소리는 화자에게 속한 개인정보로 다루세요.

지역규정 내용(요약)상태
중국얼굴이나 음성을 편집하는 서비스는 사용자가 해당 인물에게 알리고 별도의 동의를 받도록 안내해야 합니다(《딥 합성 관리 규정》 제14조). 오인을 일으킬 수 있는 합성 음성과 음성 모방에는 눈에 띄는 표시를 해야 합니다(제17조). 2025년 표시 방법은 명시적 표시와 메타데이터 표시를 추가하고 이를 제거하는 것을 금지합니다.2023-01-10부터 시행. 표시 방법은 2025-09-01부터
유럽연합AI Act 제50조: 제공자는 합성 오디오를 기계가 읽을 수 있는 방식으로 표시해야 하며, 딥페이크 오디오나 영상을 게시하는 사람은 그것이 인위적으로 만들어졌음을 공개해야 합니다. 음성 녹음에는 개인정보 규정도 적용됩니다.제113조에 따라 2026년 8월 2일부터 적용. 이후 개정 여부 확인 필요
미국이 글을 쓰는 시점에 음성 복제를 다루는 단일 연방법은 없습니다. 보호는 주 단위의 퍼블리시티권과 프라이버시 법, 기존의 사기 및 소비자 보호 규정에서 나옵니다.주마다 다름

신뢰할 수 있는 복제 서비스는 음성을 만들기 전에 화자에게 동의 발언을 녹음하도록 요구합니다. 그런 확인 없이 아무 클립으로나 누구의 목소리든 복제할 수 있는 도구라면, 공개할 용도로는 쓰지 마세요.

자주 묻는 질문

같은 웹 페이지인데 휴대폰과 노트북에서 소리가 다른 이유는 무엇인가요?

Web Speech API는 각 기기에 설치되었거나 제조사가 제공하는 음성을 사용합니다. Windows, macOS, Android, iOS가 서로 다른 음성을 내장하고 있어서 같은 코드도 다른 오디오를 만듭니다.

Web Speech API에서 MP3를 내려받을 수 있나요?

직접은 안 됩니다. 이 API는 스피커로 음성을 재생할 뿐 오디오 데이터를 반환하지 않습니다. 파일이 필요하면 오디오를 출력하는 TTS 서비스나 모델을 쓰거나, 화면 또는 오디오 녹음기를 사용해야 합니다.

유명인의 목소리를 복제해도 합법인가요?

대부분의 지역에서 알아볼 수 있는 사람의 목소리를 허락 없이 광고, 제품, 청취자를 오인시킬 수 있는 콘텐츠에 쓰면 퍼블리시티권, 프라이버시, 소비자 보호, 딥 합성 관련 규정에 따른 법적 위험이 생깁니다. 허락을 받고 결과물에 표시하세요.

TTS와 음성 변환(voice conversion)은 무엇이 다른가요?

TTS는 텍스트에서 음성을 만듭니다. 음성 변환은 한 사람이 말한 녹음을 다른 사람의 목소리처럼 들리게 바꾸되, 원래의 타이밍과 감정은 유지합니다.

TTS가 이름을 잘못 읽는 이유는 무엇인가요?

모델이 철자와 학습 데이터로 발음을 추측하기 때문입니다. 드문 이름, 외래어, 읽는 법이 여럿인 글자는 틀리게 추측하는 경우가 많습니다. SSML의 phoneme이나 sub 태그를 쓰거나 이름을 발음 그대로 다시 적으세요.

AI 튜토리얼 전체