'파형'에 해당되는 글 1건

  1. 2012.08.21 음성분석 립싱크의 원리..

음성분석 립싱크의 원리..

 

 

음성분석 립싱크는 음성 파일에서 음소를 추출하고 각 음소에 맞는 입 모양을 보여주는 기능을 말하죠.

 

그렇다면 여기에서 한가지 질문!

음성파일에서 어떻게 음소를 추출 할 수 있을까요?

(컴퓨터가 알아서 해준다는 아니고..ㅎ)

이걸 알기 위해서는 소리부터 하나씩 알아야 합니다.

 

 

주파수

 

음성은 소리고 소리는 결국 진동 입니다. "아~~" 라고 발음하면 폐에 있던 공기가 나오면서 얇은 성대를 울리고, 그 울림에서 나온 진동이 공기를 타고 달팽이 관에 전달 되어 소리를 듣게 된다... 뭐 이건 다들 알고 있는 내용일 겁니다.

 

진동을 그리면 파형으로 나타낼 수 있는데요.

 그림은 소리의 파형 입니다.

파형은 시간에 따른 진폭의 변화를 나타내는데요.

 

진폭은 파형의 최대값과 최소값의 차이의 진동 폭을 이야기 하고, 이 진폭은 소리의 크기를 나타냅니다.

파형의 값이 0에서 다음0까지의 구간을 1싸이클이라 합니다.

(아래 그림의 연두색 구간이 싸이클 구간 입니다.)

위 그림은 0.002초마다 한싸이클을 의미합니다. 그렇다는 건 1초에 500싸이클 정도를 나타내며, 이 500싸이클을 500Hz라고 표시 합니다.

500Hz는 주파수가 500이라 이야기 할 수 있겠네요.

(라디오를 들을 때 우리는 몇 헤르츠 입니다.라고 하는 말이 여기에서 나온 이야기 입니다.)

 

여기에서 소리는 진폭과 주파수를 가진다는 걸 알 수 있습니다.

 

 

음성파일

 

소리의 파형을 시간의 순서에 따라 저장해둔걸 음성파일이라 하는데요.

음성파일을 보면 파형이 연결되지 않고 점으로 보이는걸 확인 할 수 있습니다.

컴퓨터에 무한한 소리의 정보를 모두 담을 수는 없습니다.

그래서 1초를 여러 등분해서 소리를 저장하게 되는데요. 이걸 보통 Sampling rate라 표현합니다.

이제 위와 같은 점 형태로 저장되는 이유를 알았습니다.

여기에서 초당 몇 등분으로 저장했는가에 음성파일의 퀄리티를 결정하는데요.

무조건 높다고 좋은 건 아니고, 20~22050Hz 사이가 사람이 들을 수 있는 주파수대입니다.

들을 수 있는 주파수 안으로 저장해야 파일 용량을 절약할 수 있겠죠.

Sampling rate가 8000Hz만 되어도 음성분석이 가능 합니다.

(Sampling rate를 낮아지면 고주파영역의 소리가 걸러져 둔탁한 소리가 납니다.)

 

 

단순음과 복합음

 

소리에는 단순음과 복합음이 있습니다.

단순음은 아래 그림처럼 하나의 주기를 가지는 음을 이야기 합니다.

같은 단순음이라도 주파수대에 따라 달라지는 파형을 보실 수 있습니다.

복합음은 두 단순음을 합친 형태고, 진폭은 두 단순음 보다 높이 올라갑니다.

(우리가 일상적으로 듣는 소리는 대부분 복합음 입니다.)

 

위 그림은 "아"의 음성파형 입니다.

음성은 복합음 입니다.

음성을 분석하기 위해서는 복합음을 단순음 형태로 분리해야 하는데요.

 

 

스펙트럼

 

음성을 분리해내는 과정은 스펙트럼이 빛을 다양한 색으로 분리 해내는 과정과 비슷합니다.

빛도 가시영역 밖은 보이지 않는 것처럼 소리도 들을 수 있는 영역 밖의 소리를 걸러내고 가음 영역대의 소리만 분리해 냅니다.

 

복합음을 단순음으로 분리해내면 스펙트로그램 처럼 나오게 됩니다.

스펙트로그램을 왼쪽으로 90도 돌려 주파수와 진복의 위치를 변경 스펙트럼이 되는데요.

 

스펙트로그램을 시간에 따른 주파수로 나타내면 위 그림과 같은 도표를 가 나오게 되는데요.

복합음을 단순음으로 분리해내는 과정보다 이제 이 정보를 분석 하는게 중요합니다.

이 안에 음소에 관한 정보가 들어 있으니깐요.

 

 

이렇게 분리해낸 도표에서 꼭지점 부위를 연결하면 F1~3의 값이 나오게 되는데요.

이 F1,F2,F3이 음소를 결정 합니다.

F1 : 턱의 열림정도(열릴수록 높음)

F2 : 혀의 앞뒤 위치(앞쪽이 높음)

F3 : 입술의 둥근모양 정도(입술이 둥글수록 낲음)

 

 

음소분석

 

이렇게 나온 입의 모양으로 음소를 유추할 수 있습니다.

 

미국인 남성 피치(f0) 값, 포먼트 값(Fn)과 표준편차(s.d.)

모음

f0

s.d.f0

F1

s.d.F1

F2

s.d.F2

F3

s.d.F3

æ

126

16

687

83

1743

113

2497

137

a

125

15

638

46

1051

74

2318

185

ɔ

128

20

663

62

1026

57

2527

171

e

128

18

469

36

2082

130

2636

168

ɛ

132

24

531

52

1900

84

2561

148

i

136

21

286

32

2317

104

3033

191

ɚ

130

20

490

32

1363

99

1787

165

ɪ

130

15

409

32

2012

110

2671

148

ɑ

127

15

694

89

1121

85

2548

136

o

129

18

498

41

1127

93

2375

131

ʊ

135

21

446

46

1331

102

2380

125

ʌ

127

15

592

45

1331

71

2494

167

u

135

17

333

33

1393

213

2282

114

미국인 남성의 도표 입니다.

이렇게 나온 기준도표를 이용해 음소를 찾을 수 있는데요.

 

그리고 "아"와같은 단모음도 있지만 "바"와 같은 전이음도 있게 됩니다.

이를 발음기호로 보면 a가 되지만 실 발음을 하면 달라지는데요.

입을 벌린 상태에서 "아"와 "바"를 해보시면 어떤 차이가 있는지 바로 알 수 있습니다.

 

 

음소분석의 어려운점

 

언어적 차이점을 고려해야 한다.

 - 영어, 한국어, 중국어 등 다양한 언어마다 독특한 발음이 있어 각 상황에 맞게 적용해야 한다는 점입니다.

목소리가 다 같을 수는 없다.

 - 남, 여, 어린이, 거친 목소리 등 다양한 목소리가 있기에 상황에 따라 달라 집니다.

잡음이 있을 때

 - 잡음이 있을 때 음소를 구별하기 쉽지 않습니다.

 

이렇게 여러 상황에 따라 제대로 된 음소를 찾는 깃이 쉬운 일은 아닙니다.

그러니 아직까지 음성인식 기술이 완벽하지 않는 것이겠죠.

 

그래서 보통 음소추출 툴의 경우 대부분 남여의 선택이라든지 언어적 선택 등 다양한 선택 항목을 제공하는 거죠.

좀 더 완성도 높은 음소추출을 위해서는 어느정도 선택지를 좁혀야 하는 겁니다.

그런데 음소추출 툴이 대부분 영어권에서 만들어지기에 영어에 기반합니다. 그래서 영어는 90%정도의 정확도가 나오지만, 아직 한국어는 60~70%정도의 정확도가 나오는 듯 합니다.

 

 

 

 

 

립싱크의 완성도에 따라 9,12,17개의 음소로 립싱크를 표현하게 되는데요.

음소의 입 모양 수 많을 수록 좀 더 디테일한 립싱크가 만들어 집니다.

 

이렇게 추출한 음소에 맞는 입 모양을 모두 제작하고, 시간과 음소의 타이밍에 맞게 각 음소의 입 모양을 출력하는게 바로 음성분석 립싱크 입니다.

 

 

 

 

참고&이미지 출처

http://fonetiks.info/

 

'이것저것' 카테고리의 다른 글

알레고리드믹 섭스턴스  (0) 2013.05.31
BladeSlinger 해보셨나요~(IPad Game)  (0) 2012.11.26
2012 NDC  (1) 2012.05.15
유니티 2012 아시아 부트 캠프 (2부)  (2) 2012.04.12
유니티 2012 아시아 부트 캠프 (1부)  (0) 2012.04.12
Posted by Hwanggoon
,