AI가 만들어내는 음성, 딥러닝 기반 음성합성 솔루션

Selvy deepTTS AI가 만들어내는 음성, 딥러닝 기반 음성합성 솔루션 셀바스AI 음성솔루션 소개페이지 바로가기 xVoice -  딥러닝 기술로 만들어진  셀바스 AI의 음성합성 엔진   음성합성 기술은 기계가 사...

2018년 9월 21일

03.<음성합성이 뭐야?> 컴퓨터가 음성을 만든다


음성합성 기술은 이미 우리 삶속에 깊숙히 들어와 있다. 내가 내릴 지하철 역을 안내해주기도하고 게임이나 인터넷방송에서 재미있는 말들로 즐거움을 주기도 한다. 예쁜 목소리로 미세먼지 수치를 알려주기도하며 가끔은 힘내라는 위로의 말을 건네준다.   

인공지능의 시대, 음성합성은 인공지능의 입으로서 사람과 인공지능의 소통의 창구역할을 하고 있으며, 4차 산업혁명의 핵심 퍼즐 조각이 되고 있다.

가까운 미래에, 우리는 음성합성기의 목소리 주인공과 대화하는 경험이 일상적인 일이 될것이 분명하다. 어쩌면 친구나 가족의 목소리보다 더 많이 듣는 목소리가 될지도 모른다.

이번 글에서는 우리의 일상이되고 친구가 되어줄 음성합성기는 어떻게 구현되는지 실현 기술들에 대하여 간단하게 설명하고자 한다.

음성합성 기술의 종류

음성합성 기술은 크게 4가지로 나누어 분류할 수 있다. 조음합성 (Articulatory synthesis) , 포먼트합성 (Formant synthesis) , 연결합성 (Concatenative synthesis) , 통계기반 파라메터 합성 (Statistical parametric speech synthesis) 이 그것인데 최근의 관심은 딥러닝 기반 기술로 방향 전환중이다.

  • 조음합성 (Articulatory synthesis) ,
  • 포먼트합성 (Formant synthesis) ,
  • 연결합성 (Concatenative synthesis) ,
  • 통계기반 파라메터 합성 (Statistical parametric speech synthesis)
  • 딥러닝 기반 음성합성
조음합성은 이전 글을 통해 설명하였듯이 인간의 조음기관을 모델링 한것이다. 기술 발표 당시에는 획기적이었을지 몰라도 지금의 기술 수준에서 바라보면, 음성을 흉내냈다 정도에 의의를 두면 될 것 같다. 포만트 합성은 조음 기관을 흉내내려는것에서 벗어나 음성신호를 직접 다루려는 시도라는 점에서 의미가 있다. 조음합성과 포만트 합성 기술에 대해서는 그러한 기술이 있었다 정도만 알아도 될 것 같다.  이번 글에서는 가장 널리 활용되고 있는 연결합성과 통계기반 파라메터 합성에 대하여 간단히 살펴보도록 하겠다.

연결합성

연결합성은 USS(Unit Selection Synthesis)라고 부르기도 하는데 이름을 주의깊게 살펴보면 어떤 기술인지 가늠 할 수있다. 사실 이름에서 이미 연결합성의 주요 기술들이 드러나고있다.
  이름속의 Unit 이라는것은 음성 녹음 데이터를 어떤 기준에 의해서 잘게 쪼갠 데이터, 즉 음편을 말한다. Unit selsection 이라는것은 그렇게 잘게 쪼갠 음편(unit)들중 가장 적합한 음편을 선택(selection)한다는 의미다. 만들고자 하는 음성을 가장 잘 표현할 수 있는 음편을 어떤 알고리즘에의해 선택하게 되고 이렇게 선택된 음편들을 서로 이어붙이면(concatenation) 음성이 되는것이다. 이와같이 음편을 서로 이어붙인다는 의미에서 연결합성이라고 부른다.

연결합성은 실제 음성을 잘게 쪼갠 음편들을 이어붙이므로, 현존하는 음성합성 기술중 가장 음질이 좋다. 왜냐하면 원음으로 만들어진 음편을 이어 붙이기 때문이다. 다만, 이어붙이는 과정에서 운율의 부조화가 나타날 수 있다는 단점이 있다.
물론, 최근 구글에서 발표한 tacotron2 는 WaveNet vocoder를 적용하면서 연결합성 기술을 넘어서는 뛰어난 음질과 자연성을 보여주고 있다.

실제 음성을 잘게 쪼개놓은 '음편'을 이어 붙이는 기술

음편 DB로부터 적합한 음편을 찾아 이어 붙이는 기술

통계기반 파라메터 합성

통계기반 파라메터합성기술은 음성 신호처리 기술에 기반한 것이다. 음성은 조음기관을 거치는 과정에서 어떤 특성을 가지게 되는데 이 특성을 신호처리 기술을 활용하여 음성 데이터로 부터 추출하고, 그것을 모델링 한 것이다. 음성데이터로 부터 추출된 이러한 음성 특징들을 파라메터라고 부른다.

통계기반 파라메터 합성은 음성 특징 파라메터들을 추출하여 통계기반으로 모델링하는 훈련과정과, 텍스트가 입력되면 통계 모델로부터 해당하는 파라메터를 생성하여 신호처리를 통하여 음성으로 만들어내는 합성과정으로 구성된다.


아래 그림은 통계기반 파라메터 합성기의 모델링 과정과 합성 과정을 나타낸 그림이다.


HMM based statistical parameter speech synthesis[1]


위의 그림을 보면서 통계기반 파라메터의 모델링 과정과 합성 과정을 차근차근 설명해보겠다.
위의 그림에서 Training part를 먼저 살펴보자. 음성으로 부터 'Excitation Parameter' 와 'Spectral Parameter'를 추출한다. 이것은 각각 음성에대한 기본 주파수 성분 f0와 주파수 대역별 power spectrum을 mel scale로 추출하여 특징화한 파라메터이다. 이렇게 추출한 파라메터는 언제든지 음성으로 복원할 수 있는 정보를 담고 있으므로 음성 데이터 그 자체라고 할 수 있다. 통계기반 파라메터 합성기는 이러한 파라메터들을 통계적으로 모델링하고 다시 가져와서 음성으로 만들어 내는 과정이다.
그렇다면 음성데이터 자체를 모델링하지않고 이와같이 파라메터를 추출하여 모델링 하는 이유가 무엇인지 의문이 생길 것이다. 음성데이터는 시간축에 따라 음성의 크기만 가지고있다. 해당 음성의 운율정보나 피치등의 중요한 특징정보를 알아낼수 없다. 즉, 음성의 특징정보가 너무 부족하다.

음성의 중요한 특징정보를 담고있는 파라메터는 통계기반 파라메터 합성기에서 매우 중요한 핵심요소이다. 통계기반 파라메터합성기를 잘 이해 하기위해서는 파라메터에대하여 조금 더 자세히 알 필요가 있다. 그럼 지금부터 파라메터에대하여 조금만 더 깊이있게 살펴보더록 하겠다.
파라메터라고 하는것은 사람의 음성을 신호 관점에서 볼때, 음성이 가지는 특성들을 말하는 것이다.

다음 질문에 대답해보자.

* 친구들의 목소리, 유명인의 목소리를 들으면 누구의 목소리인지 단번에 알아 맞출 수 있습니까? 
* 여성의 목소리와 남성의 목소리를 구분할 수 있습니까?

사람들은 저마다 자기만의 고유한 조음기관을 가지고 있다. 모든 사람들의 외모가 서로 다르듯 사람들이 가지고 있는 조음기관도 서로 다르다. 그러므로 조음기관을 통과해서 나오는 음성의 특징은 서로 다를것이다. 이전 글에서 설명 했듯이 조음기관인 성대와 성도를 거치며 음성이 만들어지게 되는데 형태와 반응이 사람마다 서로 다르기때문에 같은 말을 해도 다른 특성을 가진 목소리가 만들어지는 것이다.
우리가 친구들의 목소리, 유명인의 목소리를 서로 구분할 수 있는 것은 바로 이것 때문이다.


그렇다면 구체적으로 음성 파라메터에는 어떤 것이 있는지 살펴보자.

음성 톤의 높낮이를 나타내는 피치(pitch)
먼저 여성과 남성, 아이와 어른의 목소리를 구분할 수 있는 특징점은 '톤' 이다. 여성과 아이는 톤이 높고, 남성은 톤이 낮다. 이것을 'Pitch(피치)' 라고 한다. 피치를 결정하는 것은 앞에서 설명한 포먼트 정보이다. 피치가 높다는 것은 제 1 포먼트(f0) 가 높은 쪽에 위치하고 피치가 낮다는 것은 낮은 쪽에 위치한다.  스펙트로그램의 가장 아래쪽에 나타나는 진한 갈비뼈 모양이 위쪽에 있으면 톤이 높고, 낮은쪽에 있으면 톤이 낮다. 그러므로 여성과 아이들은 제 1 포먼트(f0)의 위치가 높은쪽에 나타날 것이라는 것을 눈치 챌 수 있을 것이다. 이제 우리는 음성을 듣지 않고, 스펙트로그램만 보고도 여성의 음성인지 남성의 음성인지 정도는 판단할 수 있는 능력을 갖추었다. 일반적으로 성인 남성은 85 ~155 Hz, 성인 여성은 165 ~ 255 Hz 의 f0를 가진다.
이렇게 목소리 톤이 높고 낮음을 결정하는 특성을 'Pitch(피치)'라고 한다.

음성의 길이(duration)
말하는 속도는 사람마다 제각각이다. 느릿느릿 말하는 사람, 속사포처럼 말하는 사람, 말하는 습관에 따라 특정 단어를 느리게 또는 빠르게, 세게 또는 약하게 발성하기도 한다. 따라서 음성의 특성을 결정하는데 음의 길이는 매우 중요한 요소중 하나이다. 만약 어떤 사람이 "오늘 날씨가 좋네요" 라는 말을 한다고 가정해보자.
약하게 천천히 발성해보라. 슬픈 느낌이 나지 않는가?  빠르고 힘있게 발성해보라. 기쁜 느낌이 날 것이다. 이와 같이 음의 길이는 음성의 감성을 결정하는데 중요한 요소중 하나이다.

음색, 음의 세기 등 기타 요소들
음성의 특성을 결정하는데 있어서 가장 중요한 요소는 피치와 길이이다. 그외 음의 크기(amplitude)나 음의 세기(accent) 등도 중요한 요소중 하나인데, 이러한 요소들은 MFCC(mel-frequency cepstral coefficient)라는 특징값으로 신호처리 기술을 이용하여 추출할 수 있다. MFCC는 음성인식에서도 중요하게 사용하는 음성의 스펙트로그램 특징 정보를 담고 있다. 깊은 이야기는 다음에 하기로하고 여기까지만 설명 하겠다.

이와 같은 음성의 특징 정보들을 파라메터라 부른다. 통계기반 파라메터 합성기는 이러한 특징 파라메터들을 통계기반으로 모델링 하는 것이다. 이해를 쉽게하기 위하여 'ㄱ'이라는 음소에 대한 모델링을 살펴보자. '가' 라는 음성의 'ㄱ', '공'이라는 음성의 'ㄱ', '구' 라는 음성의 'ㄱ' 과 같이 음성데이터 내에 존재하는 모든 'ㄱ' 들에 해당하는 음성으로부터 파라메터들을 추출하여 비슷한 특성을 가진 'ㄱ'들을 모은다. 이 과정을 'clustering'이라 한다. clustering 과정을 끝내면 비슷한 특성을 가진 'ㄱ', 들이 서로 모여있게 되는데 이렇게 서로 모여있는 'ㄱ' 들의 통계값 (mean 과 variance)을 구한다. 모델링은 이렇게 여러 'ㄱ'들의 집합, 'ㄴ'들의 집합들에 대한 통계값을 구하는 과정이다. 합성하는 과정은 반대의 과정을 거친다. 입력된 텍스트로 부터 적정한 통계모델을 찾아내고, 통계값을 통하여 다시 원래의 파라메터를 복원한다. 복원된 파라메터를 보코더에 통과시키면 음성이 만들어지는 것이다. 알고보면 매우 간단한 원리이다.

참고 : 포먼트(Formant)
사람의 음성을 주파수 성분으로 분석하면 (공학적 관점에서 보면 time domain을 frequency domain으로 변환하여 살펴보는것, 즉 Fourier transform) 각 주파수 대역별 에너지를 알 수 있다. 그런데 각 주파수 대역별 에너지의 분포를 그래프로 그려 보면, 특정 주파수 대역에서 에너지가 높게 나타나는 모양을 보게 된다.

아래 그림은 어떤 음성의 주파수 성분을 분석한 것이다. 음성뿐만 아니라 세상의 모든 신호에는 주파수 성분이 존재한다. 아래 그림과 같이 각 주파수 대역별 에너지의 분포를 나타낸것을 스펙트로그램(Spectrogram)이라 부른다.

스펙트로그램에서 세로축은 주파수를 가로축은 시간축이다. 그림의 아랫부분이 저주파 대역이고 위로 올라갈수록 고주파 대역이다. 고주파 대역으로 갈수록 색이 흐려지고 어두워진다. 저주파 대역은 밝고 진하다. 이것은 에너지를 색으로 표현한것이다.

아래 갈비뼈 모양의 형태로 짙고 밝은 에너지가 나타난 모습이 보일것이다.  이것이 음성 주인공의 목소리 특징이다. 즉, 포먼트는 공명 주파수 스펙트럼에서의 피크(Peak)를 의미한다. 그중 가장 아래 진하게 나타난 주파수대역을 제 1포만트라 부른다. 이것은 그 사람의 기본주파수(Fundamental frequency)라고도 부르며 f0 라고도 부른다. f0는 목소리 톤이 높고 낮음을 결정하는 기본 주파수이다.
주파수 대역별 에너지 분포


- Ref. -
[1] HTS Slides released by HTS Working Group - http://hts.sp.nitech.ac.jp/



글 - 셀바스AI - 박태훈 (wayne.t.park@selvas.com / https://brunch.co.kr/@oldamigo9)

Pages