[1]Introduction to Speech Preprocessing
딥러닝 논문정리

[1]Introduction to Speech Preprocessing

 

[1]Introduction to Speech Preprocessing

[Speech Processing Task]

1)ASR- 음성신호를 받아서, 텍스트를 추출하는 과정

Speaker identification- 일종의 classification 문제로, 음성신호를 주면, 화자가 누구인지 맞추는 과정

2)Speaker verification- 음성신호와 특정 화자의 아이디를 주면, 이게 그 사람의 목소리가 맞는지 아닌지 맞추는 문제.

3)Speech emotion recognition- 음성신호를 받아서 어떠한 감정으로 말한건지 판단하는 문제이다.

4)Text-to-Speech(TTS)-***

어떤 텍스트를 주고, 텍스트에 맞춰 음성신호로 바꾸는 분야이다.

특정인의 음성만 만들어 내거나, 여러사람의 음성을 만들어 내는 분야가 있다. 최근 발전하는 분야는 스피치 스타일을 골라서 그 스타일데로 음성을 만들어 내는 것이다.

4)Voice Conversion-

입력으로 두개의 스피치 시그널이 들어간다. 하나는 텍스트 정보를 제공하기 위한 스피치 시그널, 다른 하나는 음성의 스타일을 제공하기 위한 스피치 시그널. 아웃풋은 텍스트에 해당하는 음성에 스타일을 입혀서 나온다.

5)Voice Cloning-

텍스트와 스타일 스피치 시그널이 같이 들어간다. Voice conversion과 거의 비슷하다. Input이 text인지 speech인지만 차이가 난다. 이미 어느정도 학습된 tts모델이 있다는 점에서 multi-speaker tts와 조금 다르다. Voice cloning에서는 또한 화자 정보나 id가 들어가는게 아니라 그냥 reference speech로만 사용이 된다.

6)Other tasks-

음성신호 노이즈 제거(음질 개선)등의 여러 분야가 있다.

 

[Speech Processing(ASR 예시, 음성인식)]

1)사람이 마이크에 대고 노래를 부르면 waveform이 만들어진다.

2)waveform이 spectrogram(음성을 시간축과 주파수 축으로 나타내는 것)이 되고,

3)spectrogram을 이용해서 phonemes(소리를 나타내는 기본 단위)을 추출해 낸다.

4)phonemes를 이용해서 text(graphemes)로 바꾼다.

 

[TTS는 이 과정이 반대로 동작한다]

Text—>phonemes—>spectrogram—>waveform

 

[Phoneme vs. Grapheme]

Phoneme이란?

소리를 나타내는 기본 단위, phoneme하나가 소리 하나를 나타낸다.

Grapheme이란?

2개 이상의 문자가 하나의 grapheme이 될수도 있기 때문에 1:1 매칭이 되지는 않지만, 문자가 grapheme이 된다.

TTS는 G2P(grapheme to phoneme)

ASR은 P2G(Phoneme to grapheme)

 

[Waveform (파형)]

시간 도메인과 amplitude로 나타내진 정보

 

[Spectrum]

Time 도메인에서 Fourier transform을 거치게 되면, frequency-amplitude로 바꿀수 있다.

전체 시그널에 대한 FT를 스팩트럼이라고 한다.

 

[Spectrogram]

wavefrom을 잘라내어 각 잘라낸 구간에 대해서 Fourier transform을 만드는 것이다. (Short-time-fourier transform)

가로 축이 Time, 세로축이 Frequency가 된다. 각 위치에서의 값이 amplitude(세기)가 된다.

장점1)시간정보를 나타내기 위해서

 

[Fourier transform]

시간축으로 변화하는 amplitude를 주파수 성분으로 분해를 하면, 특정 주파수의 강도를 알수 있다.

i떄문에 결과가 복소수가 된다. 이걸 복소평면에 나타내면, 길이를 magnitude라고 한다.

 

[Spectral Analysis]-음성 신호가 들어왓을때 어떻게 스팩토그램 변환

시간축으로 음성신호를 자른다.

갑자기 신호가 0으로 떨어진다는 의미는 frequency가 굉장히 높다는 의미이다. 그래서 부드러운 윈도우를 사용해서 겹쳐서 사용한다.

자른 파형으로 FFT를 적용하고, 각 시간별로 얻어진 결과를 이용해서 90로 그 결과를 돌리면 엪플리튜드는 색으로, 프리퀀시가 새로 축이 된다.

일반적으로 window frame length는 25,50 msec

stride는 10,12,5 msec을 사용한다.

 

[Hanning Windows]

끝이 정확하게 0이 된다.

음성을 합성할때는 앞구간과 뒤가 겹치면 이상한 현상이 일어나서 TTS에서 많이 사용된다.

 

[Hamming Windows]

끝이 정확하게 0이 되지 않는다. 조금 끝이 남는다.

앞뒤에서 나오는 정보를 좀더 부드럽게 이어서 사용한다.

 

[Mel Spectrogram]

사람이 모든 영역을 강하게 받아 들이는 것이 아니다. 예를들면 high frequency는 좀더 rough 하게 받아들인다 low frequency에 비해서.

Mel scale은 이러한 문제를 해결하고 더 효율적으로 데이터를 사용할 수 있게 한다.

Mel-scale은 사람의 민감도를 가지고 만든 스케일 이다.

low는 자세히, high는 대충 표현 한다.

 

[Linear spectrogram]

일반적인 경우, 원래 frequency를 그대로 사용함.

 

[Mel spectrogram]

적절한 amplitude와 frequency로 표현된 삼각필터를 사용해서 가로로 씌우면 mel spectrogram을 만들 수 있다. High 는 넓은 영역을 low는 빽빽하게 본다.

Mel filter의 개수가 새로축의 개수를 정하고, 더 작다. 요즘은 tts에서 80개 정도를 사용한다.

 

[Fundamental frequency (F0)]

맨 처음 성대가 진동해서 나오는 주파수

F0가 낮으면 낮은음 이라고, 높으면 높다고 느끼게 된다.

pitch와 연관이 된다. pitch는 우리가 느끼는 음의 높이.

F0는 주파수 자체를 의미한다.

 

[Formants]

입모양에 따라서 특정한 주파수가 공명(강해짐)이 된다.

입모양에따라서 어느 파트가 증폭이 되는가 이다.

가로축이 frequency, 세로축이 강도이다.

특정 프리퀀시 근처에 에너지가 모여 있는, 봉우리를 f1,f2라고 부른 다.

F1,f2의 위치는 발음에 따라서 달라진다.

F1,F2는 어떤 소리인지 판별하는데 중요하다.

 

[Log Power Spectrum]

Log scale을 사용해서 작은 신호가 보강되고, 큰 신호는 조금 작게 한다. High frequency 영역을 조금더 잘 분석 할수 있기 위해서.

 

[Cepstrum]

파워 스팩트럼의 로그에 inverse Fourier transform을 하는 것이다.

 

[MFCC]-mel-frequency cepstral coefficient

얼마나 합성 스피치와 만든게 비슷한지 비교하는 용도로도 사용이 된다.

 

[Prosodic Feature]:

Pitch, length, loundness

'딥러닝 논문정리' 카테고리의 다른 글

FastSpeech1, 2  (0) 2021.07.08
Transformer TTS  (0) 2021.07.08
[3]Encoder-Decoder TTS_2  (0) 2021.07.08
[2]Encoder-Decoder TTS_1  (0) 2021.07.08
ResNet 논문정리  (0) 2021.05.11