알 수 없는 영역

이전에 한국어 자음에 대해 아주 간략하게 포스팅 한 적이 있다.
이번엔 한국어 폐쇄음에 대해 한번 살펴본다. 자음 19개 중에 15개가 장애음이다. 15개의 장애음 중 폐쇄음은 9개. 개인적으로 이정도면 많은 비중을 차지한다고 생각한다. 
그래서 그런지 뭔가 할 말도 많다. 이번 포스팅에선 한국어 폐쇄음의 음절의 위치에 따른 음성학적 특징을 중점적으로 살펴본다. 

일단 한국어 폐쇄음에 어떤 것들이 있는지 표로 한번 보면 아래와 같다.
(IPA를 입력하는 법을 몰라 여전히 한글로 쓴다.)

 

 

 양순음

치경음 

 치경경구개음

 연구개음

 성문음

 폐쇄음 

평음

 ㅂ

ㄷ 

 

ㄱ 

 

경음

ㅃ 

ㄸ 

 

ㄲ 

 

격음 

ㅍ 

ㅌ 

 

ㅋ 

 

마찰음 

평음 

 

ㅅ 

 

 

ㅎ 

경음 

 

ㅆ 

 

 

 

파찰음 

평음 

 

 

 

 

경음

 

 

ㅉ 

 

 

격음

 

 

ㅊ 

 

 

비음 

ㅁ 

ㄴ 

 

ㅇ* 

 

유음(설측 접근음)

 

 ㄹ

 

 

 




한국어 폐쇄음이 조음되는 위치는 입술, 치경, 연구개이고 발성 유형은 평음, 경음, 격음이다. 정말 재미있는 건 발성 유형에 따라 폐쇄음이 음절에 나올 수 있는 위치가 달라진다는 점이다. 평음은 초성과 종성 위치에 모두 올 수 있지만 경음과 격음은 초성에만 올 수 있고 종성에는 위치할 수 없다. 

앞으로 어두 초성, 어중 초성, 어말의 위치에서의 폐쇄음의 음성학적 특징을 볼 텐데 어디가 어딘지 살짝 집고 넘어가면 다음과 같다.
어두 초성: “다, 다, 다”에서 ㅂ, ㅍ, ㅃ 
어중 초성: “아, 아, 아”에서 ㅂ, ㅍ, ㅃ
어말: “갑”에서 ㅂ (다시 한 번 말 하지만 격음과 경음은 이 위치에 올 수 없다.)



1. 어두 폐쇄음
이 위치엔 평음, 격음, 경음 모두 올 수 있다. 이 3가지 발성 유형에 공통점이 두 가지 있고 차이점이 한 가지 있다. 

공통점은 1) 폐쇄 후 개방이 동반된다는 것이다. 그렇기 때문에 폐쇄의 개방으로 인한 순간적인 기류의 방출로 인해 스펙트로그램 상에 수직의 세로선(vertical spike)가 관찰된다. 2) 무성음으로 발화된다는 것이다. 그렇기 때문에 스펙트로그램에서 유성막대(voice bar)이나 파형에서 작은 주기파(periodic wave)가 관찰되지 않는다. 

차이점 한 가지는 기식성과 관련된 것이다. 평음과 격음은 기식성이 나타나지만 경음은 기식성이 나타나지 않는다. 기식성 유무를 스펙트로그램과 파형으로 확인할 수 있다. 

기식성이 있는 평음과 격음은 스펙트로그램에서 수직 세로선(vertical spike) 이후 꽤 오랫동안 지저분한 그림이 보이고 파형에서 폐쇄 개방 후 비주기파가 발생된 것을 볼 수 있을 것이다. (앞선 포스팅에서 평음은 기식성이 없는 무기음이라고 했는데 실제로 기식성이 보이니 조금 당혹스럽겠지만 이는 다른 위치에서의 평음의 기식성과 함께 따로 언급이 될 것이다.)

반면, 기식성이 없는 경음은 스펙트로그램에서 수직 세로선(vertical spike) 이후 지저분한 그림이 안 보이고 파형 그림에서 비주기파를 찾을 수 없을 것이다.


2. 어중 폐쇄음
이 위치에도 평음, 격음, 경음 모두 올 수 있다. 어중 폐쇄음은 조금 할 이야기가 많은 편인데 살짝 나열해보면 다음과 같다.

a. 폐쇄 후 개방
b. 폐쇄구간 길이의 차이
c. 선행하는 모음의 길이의 차이
d. 기식성 유무
e. 폐쇄구간동안 성대 진동 여부의 차이

a. 평음, 격음, 경음 모두 폐쇄 후 개방이 동반된다! 
(입을 벌려 “아바, 아파, 아빠”라고 해보면 바로 알 수 있다.)


b. 자음을 발음하기 위해 닫혔다가 열리는 폐쇄구간의 시간 차이가 평음, 격음, 경음에 따라 조금 다르다. 평음은 상대적으로 짧은 폐쇄 구간을 보이나 격음과 경음의 경우 상대적으로 긴 폐쇄 구간을 보인다. (순서를 정하자면 “경음 > 격음 > 평음” 요정도? 이것도 “아바, 아파, 아빠”를 해보면 어느 정도 알 수 있다.)


c. 발성 유형에 따라 폐쇄구간 길이만 차이를 보이는 게 아니라 선행하는 모음의 길이도 차이를 보인다. 평음 앞에 있는 모음의 길이가 경음이나 격음 앞에 오는 모음에 비해 상대적으로 훨씬 길게 나타난다. 
(순서를 정하자면 “평음 앞 모음 >> 경음 앞 모음 > 격음 앞 모음”) 

d. 기식성 유무! 어중에서는 우리가 알고 있던 데로 격음만 기식성을 보인다. 격음의 경우 성문 마찰로 인해 소음이 동반되면서 성대 진동 시작 시간(VOT)가 길어지기 때문이다. 
(평음, 경음: 무기음; 격음: 유기음)

e. 이전 포스팅에서 (한국어 자음) 한국어 자음 19개는 모두 무성음으로 분류된다고 했다. 하지만 어중에서 보면 평음의 경우 폐쇄구간 동안 성대의 진동이 동반되면서 조음된다. 스펙트로그램에서 유성 막대기(voice bar)가 파형에서 주기파(periodic wave)가 관찰된다.


3. 어말 폐쇄음
이 위치에는 평음뿐이 올 수 없다. 이 위치에서는 경음이나 격음의 분포가 제약을 받는다. 

어말 평 폐쇄음의 음성학적 특징은 폐쇄의 개방시점을 찾을 수 없다는 것이다. 따라서 스펙트로그램에서 수직 세로선 (vertical spike)가 관찰되지 않는다. 개방시점이 없기 때문에 불파음(unreleased)으로 실현이 된다.


'Basic Concepts > Phonetics' 카테고리의 다른 글

한국어 폐쇄음 (Korean Obstruents)  (0) 2017.12.17
자립분절 음운론 (Autosegmental Phonology)  (0) 2017.12.17
음보 (foot)  (0) 2017.12.17
Sonority hierarchy, Sonority scale  (0) 2017.12.17
OCP, Obligatory contour principle  (0) 2017.12.07

일단 들어가기 앞서-
Spectral Leakage 과 Aliasing은 유사한 개념으로 이해된다.

이중 Spectral Leakage는 Windowing과 관련되어 더 많이 사용되는듯 싶다.

여튼- 
이번 포스팅에서는 Spectral Leakage가 '왜'라는 측면보다 '언제'발생하는지에 대해 적어본다.


일단 (음성) 신호를 주파수 영역에서 분석하는 경우
퓨리에 변환(Fourier Transform)을 통해 시간 영역에서 주파수 영역으로 변환시킨 후-
주파수 분석을 수행하게 된다.

만약에 7Hz의 순수 사인파를 녹음한 뒤 퓨리에 변환을 한 후에 주파수 영역에서 보는 경우 '원칙적으로' 7Hz에서만 값이 있고 그 외의 부분에서는 값이 없어야 한다.
하지만 많은 경우 실제 퓨리에 변환을 해보면 이렇게 깔끔하게 나오지 않는다.
(그렇게 나오는 경우도 있겠지만 아닌 경우가 더 많다.)


아래 3 경우를 한 번 보자.

경우 1.
'100Hz로 샘플링한 7Hz 사인파' 100초(700 cycle)를 FFT를 돌린 경우

7Hz에서 Peak가 선명하게 나타난다.


경우 2.
동일한 '100Hz로 샘플링한 7Hz 사인파' 1초(7 cycle)를 FFT를 돌린 경우





이 경우 약간의 spectral leakage가 발생한다. Spectral leakage가 발생하는 이유는 관측하는 interval이 너무 제한되어 있었기 때문이라고 볼 수 있다.
(700 cycle vs. 7 cycle)


경우 3.
위와 동일한 '100Hz로 샘플링한 7Hz 사인파' 1.4초 (9.8 cycle)에 대해 FFT를 돌린 경우.


위 1과 2의 경우 cycle이 정수배였으나 이번에는 그렇지 않다. 즉, 신호의 끝 부분에서의 amplitude가 0이 아니다. 이런 경우에 glitch가 발생하게 되고 더 많은 spectral leakage를 발생하게 된다.



Spectral Leakage가 발생하면 두 가지 문제가 발생할 수 있다.
1. 원했던 주파수 요소의 에너지가 100% 표시되지 않는다.
2. 성분이 강한 신호의 Spectral leakage는 작은 신호를 가릴 수도 있다. 이런 경우엔 작은 신호를 확인하거나 찾기란 쉽지 않다.

그렇다면 Spectral leakage를 줄이는 방법은?

측정 시간의 끝을 불연속하게 끊나지 않게 하는게 한가지 방법이 있을것이다.
하지만 FFT돌리기 전에 모든 신호를 시간 영역에서 확인하고 FFT 할 수는 없기에-
측정 시간의 끝을 0에 가깝게 줄이는 방법을 택하면 그나마 좀 나아질 수 있다.
즉, windowing을 적용하는 방법이 있겠다.


Spectral Leakage는 FFT때문에 발생한다라고 규정짓기 보다는 관측할 수 있는 시간이 한정적이라서 발생한다고 볼 수 있다.



Reference: http://kaldi-asr.org/doc/kaldi_for_dummies.html


해당 포스팅은 내 만족을 위해 작성되었다.

상기 페이지에 있는 글을 읽으며(?) 내 이해를 돕기 위해 작성되었다.

구글 translate 초벌 번역 본 확인 후 필요시 일부 수정 예정


Kaldi for Dummies tutorial - Environment


Environment

Rule number 1 - use Linux. Although it is possible to use Kaldi on Windows, most people I find trustworthy convinced me that Linux will do the job with the less amount of problems. I have chosen Ubuntu 14.10. This was (in 2014/15) a rich and stable Linux representation which I honestly recommend. When you finally have your Linux running properly, please open a terminal and install some necessary stuff (if you do not already have it): 규칙 번호 1 - Linux를 사용합니다. Windows에서 Kaldi를 사용하는 것이 가능하지만 대부분의 사람들은 Linux가 문제가 적은 작업을 수행 할 것이라고 확신했습니다. 나는 우분투 14.10을 선택했다. 이것은 (2014/15 년에) 내가 정직하게 권장하는 풍부하고 안정적인 Linux 표현이었습니다. 마침내 리눅스가 정상적으로 돌아 왔을 때, 터미널을 열고 필요한 것들을 설치하십시오 (아직 가지고 있지 않다면) :

→ 일단 리눅스부터 설치해야겠네...   요기 포스팅 따라해볼 듯. http://recipes4dev.tistory.com/112



(has to be installed)

atlas – automation and optimization of calculations in the field of linear algebra,

autoconf – automatic software compilation on different operating systems,

automake – creating portable Makefile files,

git – distributed revision control system,

libtool – creating static and dynamic libraries,

svn – revision control system (Subversion), necessary for Kaldi download and installation,

wget – data transfer using HTTP, HTTPS and FTP protocols,

zlib – data compression,


아틀라스 - 선형 대수학 분야의 계산 자동화 및 최적화,

autoconf - 다른 운영 체제에서의 자동 소프트웨어 컴파일,

automake - 휴대용 Makefile 파일 만들기,

자식 - 분산 개정 관리 시스템,

libtool - 정적 및 동적 라이브러리 생성,

svn - Kaldi 다운로드 및 설치에 필요한 개정 제어 시스템 (Subversion)

wget - HTTP, HTTPS 및 FTP 프로토콜을 사용한 데이터 전송,

zlib - 데이터 압축,

→ 꼭 설치하라네...


(probably has to be installed)

awk – programming language, used for searching and processing patterns in files and data streams,

bash – Unix shell and script programming language,

grep – command-line utility for searching plain-text data sets for lines matching a regular expression,

make – automatically builds executable programs and libraries from source code,

perl – dynamic programming language, perfect for text files processing.


awk - 파일 및 데이터 스트림에서 패턴을 검색하고 처리하는 데 사용되는 프로그래밍 언어,

bash - 유닉스 쉘 및 스크립트 프로그래밍 언어,

grep - 일반 표현식과 일치하는 행에 대해 일반 텍스트 데이터 세트를 검색하는 명령 줄 유틸리티,

make - 소스 코드에서 실행 가능한 프로그램과 라이브러리를 자동으로 빌드하고,

Perl - 동적 프로그래밍 언어로 텍스트 파일 처리에 적합합니다.

→ 가급적 설치하라네...


Done. Operating system and all the necessary Linux tools are ready to go.

끝난. 운영 체제와 필요한 모든 Linux 도구를 사용할 준비가되었습니다.

→ 설치를 하고 다음 포스팅을 해야하나...




'Basic Concepts > Speech Recognition' 카테고리의 다른 글

Kaldi for Dummies tutorial - Introduction  (0) 2017.12.31
마르코프 연쇄 (Markov Chain)  (0) 2017.12.02