POSTECHIAN 기사 보기

[2020 겨울호] 2-청각과 시각을 잡는 음성 합성 기술, Speech Synthesis

  • 강아림
  • 2021-01-22 16:01:09

2020 WINTER 기획특집 2

청각과 시각을 잡는 음성 합성 기술, Speech Synthesis

Virtual Human


삼성 NEON, 그리고 AI로 만들어진 터틀맨은 실제 인간처럼 자연스럽게 목소리를 내고 입을 움직입니다.
어떻게 이렇게 자연스러운 것일까요?

그 해답은 바로 음성 합성 기술에 있습니다!
음성 합성 기술은 청각적인 것뿐만 아니라 입 모양이나 표정처럼 시각적인 것까지 담아야 하므로,
더욱더 자연스럽게 만들기 위해 연구가 활발히 진행되고 있습니다.

그럼 지금부터 음성 합성 기술에 대해 본격적으로 알아볼까요?

청각적 음성 합성 기술

음성 합성 Speech Synthesis은 기계가 음성을 만들어 내는 것을 말합니다. 사람의 말소리를 녹음하여 음성 단위, 즉 유닛 Unit으로 나누어 저장했다가, 텍스트를 입력하면 저장되어있던 특정 유닛들이 합성되어 음성이 만들어 집니다.
이렇게 텍스트를 음성으로 변환한다는 점에서 이를 TTS Text-to-Speech,라고 부르기도 합니다. 음성 합성 기술은 인간의 조음 기관을 따라 하던 지식 기반 접근 방식에서 시작하여, 녹음된 음성들을 데이터베이스로 만들어 음성을 합성하는 연결 합성 Unit Selection Synthesis통계 기반 파라미터 합성 Statistical Parametric Speech Synthesis을 포함하는 데이터 기반 접근 방식으로 접어들게 되었습니다.

연결 합성은 실제 음성 데이터를 유닛으로 나누어 저장한 후 음성을 합성하는 기술입니다. 그러나 운율이 모두 다 다른 음성 데이터들의 유닛을 이어 붙이게 되면 부자연스러울 뿐만 아니라, 말하는 속도, 음의 세기, 크기 등과 같은 특징들이 원본 녹음 데이터와 똑같아질 수밖에 없습니다. 그래서 다양한 특징을 포함할 수 있는 더 큰 데이터베이스와 이를 적용할 수 있는 기술의 필요성을 느끼게 되죠. 그렇게 나타난 것이 통계 기반 파라미터 합성 기술입니다.

통계 기반 파라미터 합성은 유사하게 들리는 음성 특징 파라미터 Parameter[각주 1]들을 모델링하여 ‘평균’을 만든 후 음성을 합성하는 것으로 설명할 수 있습니다. 실제 음성 데이터인 유닛을 합성하는 연결 합성과는 차이가 있죠. 일반적인 통계 기반 파라미터 합성 시스템은 데이터 패턴을 통계적으로 분석하여 정보를 추론하는 모델인 HMM Hidden Markov Model을 사용합니다. 이 시스템은 크게 학습 과정 Training part합성 과정 Synthesis part으로 나눌 수 있습니다.


HMM 기반 음성 합성 시스템의 전체 구성도

학습 과정에서는 음성을 분석하여 높낮이, 음의 세기와 같이 특징을 나타내는 파라미터를 추출한 다음, HMM을 사용하여 모델링합니다. 그리고 합성 과정에서는 이 음성 파라미터들을 데이터베이스에서 가져와서 음성을 합성한 후 출력합니다. 이 과정을 쉽게 설명하기 위해 ‘ㄱ’이라는 음소에 대한 모델링을 살펴보겠습니다. ‘가’, ‘공’, ‘낙’을 발음해 보면 ‘ㄱ’에 해당하는 음성들이 다 다른 것을 알 수 있습니다. 이것은 발음 기관의 움직임을 뜻하는 조음(調音)의 편의를 위해 이어 나오는 두 소리의 조음 동작이 겹치기 때문입니다. 이처럼 먼저 나오는 음이 후에 나오는 음에 영향을 미치는 것을 동시 조음 Coarticulation이라고 합니다. 동시 조음으로 인해 ‘ㄱ’의 특성이 달라지기 때문에, 학습 과정에서는 음성들로부터 파라미터를 추출하여 비슷한 특성이 있는 ‘ㄱ’끼리 모으는 집단화 Clustering를 거친 후 집단화된 ‘ㄱ’들 간의 통계치(평균과 분산)를 구하여 저장합니다. 합성 과정에서는 입력받은 텍스트로부터 적절한 ‘ㄱ’의 모델을 찾고, 데이터에 저장된 통계치를 통해 원래의 파라미터로 복원하여 음성을 만들어 내는 것이죠.



은닉 마르코프 모델, HMM에 대한 더 자세한 내용은 아래 버튼을 통해 알아보실 수 있습니다.

HMM 자세히 알아보기

시각적 음성 합성 기술

여기까지 청각적 음성을 합성하는 기술에 대해 알아보았습니다. 하지만 청각적으로 음성을 합성한다고 해도, 가상 인물이 이 음성을 말하기 위해서는 정확한 입 모양도 구현되어야겠죠? 그렇기 때문에 언어적, 음향적 표현을 시각적으로 합성하는 기술 역시 필요합니다.

그러기 위해서는 특정 음성을 말할 때의 얼굴의 모양과 입의 위치를 알아야 합니다. 이때 얼굴과 입의 위치를 비짐 Viseme이라고 합니다. 비짐은 단어의 의미를 구별 짓는 최소의 시각적 단위라고 할 수 있습니다. 즉, 음소[각주 2]로 ‘ㄱ, ㄴ, ㄷ’라고 한다면 비짐으로는 ‘ㄱ, ㄴ, ㄷ를 발음했을 때의 얼굴의 모양과 입의 위치’를 나타내며, 다양한 연구를 통해 현재 아래 그림과 같이 목록화되어 있습니다. 따라서 시각적 음성을 합성하기 위해서는 먼저 사람이 말하는 모습을 다각도의 영상으로 담은 후, 음성 특징을 특정 비짐에 하나씩 매핑 Mapping 시키면 됩니다.

하지만 여기서 앞서 설명한 ‘동시 조음’으로 인하여 문제가 발생합니다. 앞선 예시와 동일하게, ‘가’, ‘공’, ‘낙’과 같은 음성 데이터에서는 동시 조음이 발생하여 같은 ‘ㄱ’임에도 불구하고 입 모양이 달라집니다. 이를 해결하기 위해 동시 조음이 일어나는 순간 하나하나를 분석할 수 있도록 모델 영상을 프레임[각주 3] 단위로 나눕니다. 프레임 수준과 음소 수준에서의 음성 특징을 각각 추출한 뒤, 비짐에 매핑해 시각적 음성 데이터들을 입력하는 것이죠.


영어기반 비짐(Viseme) 사전



이렇게 데이터를 입력하여 데이터베이스를 구축했다면, 다음 단계는 입력받은 텍스트를 시각적으로 출력하는 것입니다. 그러기 위해서 말을 할 때 얼굴이 어떻게 변형되는지 추정하게 되는데, 이때 주성분 분석, PCA Principal Component Analysis를 기반으로 특징점을 추출한 다음, 이를 이용해 모델을 생성하는 알고리즘인 AAM Active Appearance Model이 사용됩니다.

여기서 PCA란 입력된 정보의 정보 손실을 최소화하면서 벡터의 차원을 낮추는 것을 목적으로 하는 특징 추출의 한 방법입니다. 2차원의 데이터 분포의 예를 한번 살펴봅시다. 아래 그림을 보면 2차원의 특징 벡터들이 $y=x$ 직선에 투영된 것을 볼 수 있습니다. 이렇게 되면 2차원의 정보들이 직선 위에 표현되므로 1차원 공간으로 표현할 수 있고, 만약, $y=x$가 투영된 데이터의 분산을 가장 크게 만드는 직선이라면 이것이 PCA의 결과가 되는 것입니다.


2차원 위 데이터들의 PCA 결과




주성분 분석, PCA에 대한 더 자세한 내용은 아래 버튼을 통해 알아보실 수 있습니다.

PCA 자세히 알아보기



따라서 표정과 입, 턱에 대해 각각 PCA를 진행하면 표정과 입, 턱의 특징을 가진 데이터들의 변환 행렬과 평균 벡터가 반환됩니다. 이렇게 반환된 벡터들을 가지고 아래 식처럼 최종적으로 PCA를 수행하면 AAM 벡터가 나타납니다. AAM 벡터를 $\boldsymbol{a}$라고 하고 표정, 입, 턱에서 추출된 데이터들의 평균 벡터를 각각 $\boldsymbol{s}$, $\boldsymbol{b_m}$, $\boldsymbol{b_j}$라고 했을 때, $\boldsymbol{a}$는 $\boldsymbol{s}$, $\boldsymbol{b_m}$, $\boldsymbol{b_j}$ 벡터들의 행렬값으로 나타나며 고차원의 벡터가 됩니다. 이 벡터를 이미지에 적용하여 시각적 음성을 합성할 수 있는 것입니다.
$$\boldsymbol{a} = \boldsymbol{R} \left[ { \begin{array}{ccc} \boldsymbol{s} \\ \boldsymbol{b_m} \\ \boldsymbol{b_j} \end{array} } \right]$$
$\boldsymbol{R}$ : 표정 및 입, 턱 모양이 표현된 벡터를 저차원으로 압축하는 PCA-derived matrix
$\boldsymbol{s}$ : 표정의 형태(shape of facial pose)를 인코딩(encoding)하는 vector
$\boldsymbol{b_m}$ : 입(mouth) 영역의 모양을 표현한 appearance vector
$\boldsymbol{b_j}$ : 턱(jaw) 영역의 모양을 표현한 appearance vector


내비게이션 음성부터 인공지능 아나운서까지, 음성 합성 기술은 우리의 일상생활 곳곳에 잘 녹아있습니다.
여기서 멈추지 않고 심층 신경망과 같은 딥러닝 기술을 적용하여 지금보다 더 사실적인 표현이 가능하도록 하고 있죠.
하지만 더욱더 인간과 흡사한 가상 인간을 만들려는 노력에 따라 ‘몸을 움직이는’ 가상 인간 개발에도 초점을 맞추게 되었는데요.
어떻게 가상 인간의 움직임을 만들어 내는지 다음 글에서 알아봅시다!



[각주]
[1] 매개변수를 의미하며, 여기서는 높낮이, 길이, 음의 세기, 음색 등의 음성 특징 나타낸다.
[2] 단어의 의미를 구별짓는 소리의 최소 단위
[3] 영상에서 ‘정지’ 화면의 단위

[참고문헌]
[1] Heiga Zen, Keiichi Tokuda, Alan W. Black, 「Statistical parametric speech synthesis」, Speech Communication, Volume 51, Issue 11, 2009, Pages 1039- 1064.
[2] Ausdang Thangthai, Ben Milner, Sarah Taylor, 「Synthesising visual speech using ynamic visemes and deep learning architectures」, Computer Speech & Language, Volume 55, 2019, Pages 101-119.
[3] Wolfgang Paier, Anna Hilsmann, Peter Eisert, 「Neural Face Models for Example-Based Visual Speech Synthesis」, Computer vision and Pattern Recognition, 2020.
[4] 박태훈(셀비스AI 개발자), ‘03.<음성합성이 뭐야?> 컴퓨터가 음성을 만든다’, 『딥러닝과 음성기술의 만남』, 2018. https://brunch.co.kr/@oldamigo9/4
[5] 공돌이의 수학정리노트, 2019.07.27., ‘주성분 분석(PCA)’, [인터넷 게시글], https://angeloyeo.github.io/2019/07/27/PCA.html



기획특집 ③ - 움직임을 만드는 기술, 3D Human Motion Estimation 편으로 이어집니다.

기획특집 ③ 보기

ALIMI 26기 신소재공학과 강아림

알리미는 언제나 열려있습니다. 고민이나 질문이 있는 친구들은 편하게 알리미에게 연락주세요!

기사 모아 보기
공유하기
목록