본문 바로가기
AI/음성(Speech)

[음성 기초] Vocoder (보코더)

by Hyen4110 2022. 3. 2.
반응형

1. 보코더의 정의

 

1) 위키백과

https://ko.wikipedia.org/wiki/%EB%B3%B4%EC%BD%94%EB%8D%94

보코더(영어 : vocoder)는 《보이스》(voice)와 《코더》(coder)의 합성어로, 전자 악기와 이펙터의 일종이다. 신시사이저의 종류로 분류되기도 한다. 본래의 의미는 통신을 위한 음성 압축 기술로, 휴대폰 등 다양한 기기에 사용되고 있다. 음성 파형을 직접 보내는 것이 아니라 매개 변수가 보내고, 수신 측에서는 그 매개 변수에서 원본 음성을 합성한다. 음악용 보코더는 이 기술을 응용한 것이다.

 

원래 보코더는 음성 통신에서 음성 압축 기술로 태어난 것으로, 미국의 벨 연구소의 호머 더들리 (Homer Dudley)가 1928년에 기본적인 아이디어를 발안했다. 당시 전신에 대륙간 횡단 케이블이 전송 가능한 주파수 대역은 기껏해야 100Hz 정도로, 3000 ~ 4000Hz의 대역을 가지는 음성을 직접 보낼 수 없어 음성을 더 좁은 대역에서 보내려고 고안되었다. (통신자원 부족, 비효율 개선)

 

 

텍스트에 해당하는 음성 feature을 뽑고, 그것을 waveform으로

앞단에 있는 모델이 타코트론같은 음성 합성 모델이 하는일

바로 wave를 만드는것이 아니라 음성 feature를 만들

 

음성 featrure를 실제 음성 신호로 만드는것 
이것이 보코더

왜 굳이 음성신호로 바로 합성하지 않는것인가?

* 딥러닝 음성 합성 모델의 타겟 
- 음성신호(raw waveform)는 데이터의 차원이 커서 음성합성 모델의 직접적인 타겟으로 사용하기에는 무담스러움(GPU터짐)
예) 5초짜리 sr = 24kHz 음성신호는 120k개의 sample로 이루어짐, CIFAR-10 데이터셋의 경우 각 이미지는 3*32*32 = 3072 차원
-STFT 음성합성 모델을 타겟으로 사용하는 경우 복소수를 고려하여 모델을 설계해야 하는데 이는 쉽지 않음 (여전히 데이터 차원 문제를 해결할수 없음)/ phase정볼르 지운것도 아니어서 차원이 여전히 큼

(MelSpectrogram은 phase정보를 갖지 않아서, 데이터의 차원은 실제 음성신호보다는 훨씬 작은 차원을 가짐)

- Mel-spectrogrm은 일정 구간에서 나타나는 주파수 성분의 크기를 나타내므로 실수 값으로 표현되고, 원음성신호에 비해 압축된 형태의 데이터로 이루어짐 (모델의 타겟으로 적절함)

- Mel-spectrogram은 phase의 정보를 포함하고 있지 않으므로, 본래의 음성 신호를 완벽히 복원하기 어려움 (딥러닝으로 다량의 학습데이터를 이용해서 학습할 필요가 있었음) 
-> 주파수 성분의 크기만으로 원 음성 신호를 잘 복원할 수 있는 알고리즘이 필요

* Griffin-Lim algorithm
- 입력 : SFTF magnitude matrix
- Forward, inverse-STFT를 반복적으로 계산하여 phase를 추정하는 알고리즘
- librosa 라이브러리에 구현되어있음 func으로 
딥ㄹ너ㅣㅇ 모델 사용하기 싫으면 바로 사용해서 실제로 음성을 만들어볼 수도있음. 불완전한 점이있어서 고퀄은 기대하기 어려움
librosa.feature.inverse.mel_to_audio


*Neural vocoder
- Mel-spectrogram을 입력으로 받아서 음성신호(waveform)을 생성하는 딥러닝 모델
- 다량의 데이터 학습을 통해 neural vocoder는 mel-spectrogram과 음성 신호 사이의 관계를 이해하고, 고품질의 음성을 생성 
- 학습시에는 1~2초 정도로 나누어진 음성 신호를 학습하도록 하여 메모리 사용의 부담을 줄일 수 있음
(Melspectogram을 적당히 잘라서 사용함, 1초 짜리 음성신호에 대해서 합성하는 안/녕/하/ 끊어서 만들 수도있음, 짧은 구간마다 mel을 waveform으로 변형해서 갖다가 이어붙인다고 생각하면됨)

- 대표적인 neural vocoder
 1) Autoregressive model : WaveNet vocoder
 2) Flow-based model: WaveGlow, FloWaveNet, Parallel WaveNet, ClariNet
 3) GAN-based model : ParallelWaveGAN, VocGAN

반응형

댓글