알 수 없는 영역

Discrete time FIR filter를 아래 식과 같이 표현하곤 한다. 


  


예를 들어 필터 차수가 3이고 필터 계수가 모두 0.25라면 (eq. 1)은 아래와 같이된다.



위 식(eq.2)을 살펴보면 4개의 입력 신호의 평균값이 출력 신호가 되고 있다. 즉, 이동평균(moving average)이 출력이 된다는 것. 이렇게 이동평균이 출력신호가 되는 경우에는 입력신호의 둔하고 완만히 변하는 양상을 반영해 보여주긴 하지만 입력신호에서 보이는 표본들 사이의 급격한 변화에 따른 세밀하고 세부적인 모습은 보여주지 않는다 / 못 한다.



즉, 입력 신호의 변화가 조금 둔하고 천천히 변화한다면 입력평균 역시 둔하고 천천히 변하게 된다. 하지만 입력 신호의 변화가 국부적으로 급격하게 변하는 경우에는 입력평균값은 그렇게까지 급격하게 변하지는 않는다. 급격한 변화라는 것은 앞뒤의 값이 많이 차이난다는 것인데 이것을 평균 연산 하는 경우에는 큰 값과 작은 값이 평균이 되어 급격한 값이 많이 나타나지는 않기 때문이다.



지금까지 말한 입력 신호를 주파수와 관련해서 생각하면 급격하게 변화하는 사건들은 신호에서 고주파 부분천천히 변화하는 사건은 저주파 부분에 해당된다고 할 수 있겠다. 

결과적으로 보면 고주파 부분이 평균 연산에 의해서 smoothing / filtering되었다고 볼 수 있다. 이는 고주파 요소들이 신호에서 감소되거나 제거되는 것을 의미한다. 반면 저주파성분은 영향을 받지 않기 때문에 평균 연산을 수행된 결과를 저역필터 / low pass filter라고 부른다. 


저역필터가 적용된 신호의 음향은 고음역을 억제한 것과 같아서 그 결과 고음역의 잡음이 줄어드는 효과를 얻게 되며 조금은 더 둔탁한 소리가 된다. 따라서 출력 신호를 보면 입력 신호보다 조금 더 부드러우면서 둔탁하게 들리는데, 고음역이 무뎌져서 그런 것이고 소리가 작아지는 것은 아니다. 전체적인 소리의 크기는 동일하다.


위에서 (eq. 2)를 보면 4개의 입력신호의 표본을 평균 내어 출력신호로 보냈다. 만일 입력 신호의 Sampling rate이 16000Hz라면 4개의 신호는 1/4000초에 해당된다. 결과적으로 (eq. 2)는 1/4000(0.25ms)보다 작은 사건들, 즉 4000Hz가 넘는 주파수 성분들을 smoothing / filtering 한다. (0.25ms보다 작은 사건이어야 이동평균값에 영향을 줄 수 있다.)

이렇게 이동평균값으로 4000Hz넘는 주파수 성분들을 smoothing/filtering했다.


그렇다면 이번엔 cut-off frequency를 4000Hz에서 2000Hz로 낮춰보자.

한 가지 방법은 4개의 이동평균값이 아닌 8개의 이동평균값을 사용하는 것이다. 여기에서 cut-off frequency를 조금 더 낮춰서 2000Hz에서 200Hz로 잡아보면 80개의 이동평균값을 사용해야한다. 
항이 80개...는 좀 아닌 것 같다.


cut-off frequency를 낮출수록 항이 늘어나는 방법을 해결하기 위해서 쓰이는게 있는데-
그게 바로 IIR filter가 되겠다.




이번엔 n번째 프레임에서 출력 y[n]을 결정할 때, 선행하는 입력 신호의 값만 참조하는 것이 아니라     부분적으로 선행하는 출력 신호의 값을 참조하는 방법이다. 이렇게 선행하는 입력신호 뿐만 아니라 선행하는 출력신호의 값도 참조하기 때문에 재귀적(recursive)이라고 한다. IIR의 경우 이전의 출력값을 참조하기 때문에 항의 수에 비해 비교적 많은 영역의 신호에 영향을 미칠 수 있다.


eq. 2 (FIR)와 eq. 3 (IIR)이 둘을 비교해보자. 
다른 점은 eq. 2는 선행하는 출력신호를 참조하지 않고 eq. 3는 선행하는 출력 신호를 참조한다는 것이다. 따라서 FIR (eq 2)을 IIR (eq 3)의 특별한 유형 중 하나라고 볼 수 있으면, IIR에서 모든 a를 0으로 하면 FIR이 된다.


마지막으로 FIR과 IIR의 장단점 (?)을 비교해보면 다음과 같다.

FIR의 경우 구현 시 같은 조건일 때 IIR에 비해 차수가 많이 필요하다 하지만 항상 안정하다는 장점이 있다. IIR의 경우 같은 차수 일 때 FIR에 비해 계산량이 적다. 하지만 선행하는 출력신호 참조값에 따라 불안정해질 수 있다. 



 

일단, 조건부 확률을 알아야 시작이 가능하다.

조건부 확률을 살짝 변경해 보면 아래와 같이 쓸 수 있다.

 

 




                                                                                                     

베이즈 규칙.

생각보다 간단하다!

 

 

 

맞는지 한번 보면-

 

 

 

 

 

끝?!

 

근데 이거 어디에 쓰일까???

흠....

 

 

사건 A, 사건 B가 일어날 확률을 알고 있고,

사건 B가 일어난 상태에서 사건 A가 일어날 확률을 알고 있을 때-

 

사건 A가 일어난 상태에서 사건 B가 일어날 확률을 계산하고 싶을 때 사용한다.

 

 

응? 무슨소리....?

 

예를 들어보면-

A라는 질병에 걸릴 확률을 알고, 병원에서 검사를 했을 때 양성 반응이 나올 확률도 안다.

그리고 그 질병이 있을 때 양성 반응이 나올 확률도 알고 있다.

 

위 상태에서

양성반응이 나왔을 때 병에 걸렸을 확률을 계산할 수 있다!!

 

사실 위 예가 맘에 드는건 아니지만... 여튼;;;;;

 

 

                                                                                                      

Chain Rule of Probability

 

(미적에서 나오는 chain rule이 아님)

 

 

 

 

 

 

 

요런 아이이다.

뭔가 쓸게 많을 줄 알았는데... 흠....

 

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

조건부 확률, Conditional Probability  (0) 2018.01.06
Spectral Leakage  (0) 2017.12.31
자유도, degree of freedom  (0) 2017.12.01

조건부 확률. 

 

이것 저것 검색을 하다가 '조건부 확률'이 고등학교 과정에서 나온다는 사실에 조금 놀랐다.

(왜 난 배운 기억이 없는거지?????;;;;)

 

 

조건부 확률은 생각보다 간단(?)하다.

사건 B가 발생한 상태에서 사건 A가 일어날 확률을 의미한다-

(사건 B는 0보다 크다.)

 

 

 

 

위와 같이 표기하고-

영어로는 "The probability of A given B"라고 말한다.

 

 

벤 다이어그램으로 한번 살펴보자!

 

(그림 출처는 위키피디아ㅋ)

 

 

 

P(A)가 대략 0.5라고 했을 때, 다음을 계산해 보자.

 

 

 

......A에 완전 포함되어 있으므로 1이 된다.

......A와 교집합이 없으므로 0이 된다.

......P(A|B2)를 구하기 위해선 위 식에 대입해서 계산!(0.75)

 

 

대략 이렇다.

(생각보다) 간단하다.

 

 

                                                                                                                                                       

 

간단하게 조건부 확률을 이용해 아래 문제를 풀어보자.

 

두 개의 주사위가 있다.

주사위가 둘 다 같은 숫자가 나올 경우 그 때 숫자가 둘 다 1일 확률은???

 

 

두 개의 주사위가 모두 1이 나올 확률을 A

두 개의 주사위가 같은 숫자가 나올 확률을 B

 

 

 

 

두 개의 주사위가 모두 1이 나오는 경우는 

두 개의 주사위가 같은 숫자가 나오는 것의 특수한 경우이다.

따라서-

 

 

 

 

 

                                                                                                                                                       

이전에 한국어 자음에 대해 아주 간략하게 포스팅 한 적이 있다.
이번엔 한국어 폐쇄음에 대해 한번 살펴본다. 자음 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

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


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

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

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


Kaldi for Dummies tutorial - Introduction


This is a step by step tutorial for absolute beginners on how to create a simple ASR (Automatic Speech Recognition) system in Kaldi toolkit using your own set of data.  이것은 자신의 데이터 세트를 사용하여 Kaldi 툴킷에서 간단한 ASR (자동 음성 인식) 시스템을 만드는 방법에 대한 절대적인 초보자를위한 단계별 자습서입니다. 

→ 즉, 이걸로 뭘 하려고 한다고 해도 내 데이터가 없으면 안된다는 말인데... Kaldi로 구축한다고 하더라도 데이터는 알아서 구해야겠네...


I really would have liked to read something like this when I was starting to deal with Kaldi. Kaldi를 다루기 시작했을 때 나는 이와 같은 것을 정말로 읽었을 것입니다. → 이런게 없어서 만들어주시다니... 감사할 따름입니다.


This is all based on my experience as an amateur in case of speech recognition subject and script programming as well. 아마추어로서의 나의 경험에 기초합니다. → 겸손하십니다.


If you have ever delved through Kaldi tutorial on the official project site and felt a little bit lost, well, my piece of art might be the choice for you. Kaldi 튜토리얼을 통해 공식 프로젝트 사이트를 탐구하고 조금 잃어버린 느낌이 든다면, 제 예술 작품이 당신을위한 선택일지도 모릅니다.

→ 구글님 번역이 이상함. 공홈 튜터리얼이 어려워 보이니 이것부터 읽을께요-


You will learn how to install Kaldi, how to make it work and how to run an ASR system using your own audio data. As an effect you will get your first speech decoding results. It was created by Wit Zielinski. Kaldi 설치 방법, 작동 방법 및 자체 오디오 데이터를 사용하여 ASR 시스템을 실행하는 방법을 배우게됩니다. 결과로 첫 번째 음성 해독 결과를 얻을 수 있습니다. 그것은 Wit Zielinski에 의해 만들어졌습니다.

→ 일단 설치부터 할 수 있었으면 좋겠습니다. 오디오 데이터는 나중에 어디서 구하겠죠 ㅠㅠ Wit Zielinski 감사합니다.


First of all - get to know what Kaldi actually is and why you should use it instead of something else. In my opinion Kaldi requires solid knowledge about speech recognition and ASR systems in general. 우선, 칼디가 실제로 무엇인지, 그리고 왜 다른 것 대신에 그것을 사용해야하는지 알게됩니다. Kaldi는 일반적으로 음성 인식 및 ASR 시스템에 대한 확실한 지식이 필요합니다.

→ 다행히 조금은 알고 있습니다.



It is also good to know the basics of script programming languages (bash, perl, python). C++ might be useful in the future (probably you will want to make some modifications in the source code).  또한 스크립트 프로그래밍 언어 (bash, perl, python)의 기초를 아는 것도 좋습니다. C ++은 앞으로 유용 할 것입니다 (아마도 소스 코드에서 약간의 수정을 원할 것입니다).

→ Basic skill로 충분할 지 모르겠지만... 일단 시작하시죠-




일단 시작하겠다는 다짐의 포스팅.

다행해(?) 메모가 필요해 보이는 내용은 없어보이네?

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

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

이전에 한국어 자음에 대해 아주 간략하게 포스팅 한 적이 있다.

이번엔 한국어 폐쇄음에 대해 한번 살펴본다. 
자음 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.31
자립분절 음운론 (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

Autosegmental phonology 
proposed by Goldsmith, 
1976 at PhD thesis at the MIT

기본 개념은 
음운론적 표상(phonological representation)이 

하나 이상의 분절음의 
선형적 열(sequence)로 구성되어 있다는 것이다...


응? 이렇게 쓰니까 내가 봐도 뭔 소린지 모르겠다.


조금 더 친절해지기 위해서 일단 간단한 용어 정리.

음운론적 표상(phonological representation)은...
하나의 소리,분절음을 음운론적으로 표현 하는 것?

예를 들어 /b/라는 것은
자음, 유성음, 폐쇄음, 양순음, 전방음(구강의 앞쪽에서 조음됨) 
이라고 표현할 수 있다.



선형성
초기에 나온 음운론 이론은 
선형 모델(linear model)이고, 

autosegmental phonology는 
비선형 모델(non-linear model)이다.


선형 모델은 하나의 분절음을 음운론적으로 표현함에 있어서 
하나의 음운론적 열로 표현한다.

비선형 모델의 경우에는 
하나의 분절음을 음운론적으로 표현함에 있어서 
하나 이상의 열로 표현한다.


어떤 모델에서 /b/를 [자음, 유성음, 폐쇄음, 양순음, 전방음]과 같이 
하나의 열(sequence)로 /b/의 성질들이 표현한다면
이는 선형모델이라고 볼 수 있다.


autosegmental phonology의 경우에는 
하나 이상의 열로 표현되기 때문에 
비선형 모델(non-linear model)이라고 볼 수 있다.



이렇게 끝내긴 너무 아쉽다.
음운론엔 예시가 있어야 제맛!

autosegmental model의 경우 
tone을 설명하기 위해 발생된 이론이라고들 말하곤 한다.




example from Margi

Margi어에는  /uˊ ʔ uˋ/  라는 단어와  
/aˊ r iˋ/  라는 단어가 존재한다고 한다.


글자위에 붙은 점 같은 애들은 tone을 표시해준다.

첫 번째 /u/와 /a/는 H(high) tone이고 
두 번째 /u/와 /i/는 L(low) tone이다.


위 두 단어를 붙여서 읽으면 어떻게 될까?
단순하게  /uˊ ʔ uˋ aˊ r iˋ/ 가 되면 좋겠지만 
Margi에서는 연속된 모음을 허용하지 않는다.


즉,  /uˊ ʔ uˋ aˊ r iˋ/ 에서 밑줄 친 부분이 문제가 된다.


따라서 위 두 단어를 연결해서 말하려면 모음 하나는 사라져야 한다.

/uˊ ʔ uˋ/ + /aˊ r iˋ/ = /u ʔ w a r i/ 
연속된 모음을 허용하지 않기 때문에 

/u/가 /w/로 바뀌었다. (아직 tone은 미표시)


근데 왜 하필 /w/냐고 물어보거나 
모음과 모음 사이에 자음을 넣으면 되는거 아니냐고 물어보면... 

완전 설명이 길어지거나 삼천포로 빠지기에... 
일단 그냥 /u/가 /w/로 바뀌었다는 사실만 알고 넘어가자;;


이렇게 해서 일단 segment(알파벳)에 관련된 문제는 해결이 되었다.
하지만 이 경우 tone 표시에 대한 문제가 발생된다.


두 개의 단어를 하나로 합치기 전에는 
모음이 4개 그리고 tone도 4개 1대1 대응이 가능했다.
(기본적으로 오직 모음만 tone을 받을 수 있다.)

하지만 두 개의 단어를 하나로 합친 경우 
모음과 tone의 수가 맞지 않는다.


실제 Margi에서는  /uˊ ʔ w aˇ r iˋ/  과 같이 
/a/가 Rising tone을 갖게 된다.

이 경우 rising tone이 “low + high”에 의해서 
발생하게 된 것이라고 생각할 수 있다!


/u/에 있던 low tone은 /u/가 사라지면서 같이 사라지는 것이 아니라 
뒤에 오는 /a/의 high tone과 결합해서 rising이 발생되는 것이다. 


이렇듯 tone이 segment와 분리되어 이동되는 것을 봐서는 
tone에 대한 열(sequence)이 자율성(autonomy)을 갖고 
segment에 대한 열과는 독립적으로 존재한다고 생각할 수 있다. 


우리는 그것을 autosegment라고 하고 
이런식으로 소리를 설명하는 음운적 모델을 
autosegmental phonology이라고 한다.


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

한국어 폐쇄음 (Korean Obstruents)  (0) 2017.12.31
한국어 폐쇄음 (Korean Obstruents)  (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

다양한 기준으로 언어를 분류할 수 있다. 
그 중 하나가 timing이다. 

이 기준에 의하면 언어는 
아래와 같은 3가지로 나눌 수 있다.

stress, syllable, mora
(Ken Pike, 1945)


위와 같은 기준으로 한국어와 영어를 분류해보면 
한국어는 syllable-timed language 이고, 
영어는 stress-timed language이다.


Syllable-timed language라는 것은 
사람들이 각각의 음절의 길이를 
(대략적으로) 동일하게 인식하는 언어를 말한다. 


(물론 주변 문맥, 강조, 여러가지 상황에 따라 
절대적/물리적인 길이는 분명히 다르다.

위에서 "인식"이라고 한 이유는 
인지적인 측면을 말하기 때문이다.)

이런 언어의 예로는 한국어 불어 스페인어가 있다.


이와 유사하게 stress-timed language는 
각각 음절의 길이는 다르게 인식하지만,
하나의 강세의 시작부터 그 다음 강세 앞까지의 길이를 
대략적으로 일정하게 "인지"하는 언어를 말한다.

영어, 독어, 러시아어 등이 여기 해당된다.


이 포스팅에서 말하자고 하는 foot이란 단위는 
stress-timed language와 관련있다.

이제 이것을 기반으로 해서 
(prosodic) foot에 대해 개념을 잡으면 다음과 같다.


foot의 범위/정의(?)는 
pitch-accented(강세를 받은) syllable부터 
그 다음 pitch-accent syllable 앞까지다.

예를 들어 영어의 경우 일반적으로 trochee이다. 
즉, 강세가 '강약강약'과 같이 이뤄진다는 것이다.

이 경우 하나의 foot은 '강'에서 
그 다음 '강' 앞까지를 말하게 된다. 

'강약' 하나가 하나의 foot !!!


(prosodic) foot을 사용하는 이유는 
spoken language processing에 중요한 역할을 하기 때문이다.


그도 그럴 것이 syllable-timed language의 경우 
'음절'이라는 단위를 기준으로 사람들이 인지를 한다.
반면 stress-timed language의 경우 각각 '음절'의 길이가 일정하지 않다.


따라서 stress-timed language에서 ('음절' 이외의) 다른 어떤 consistant한 기준이 될만한 단위가 필요하다. 
바로 이때 사용할 수 있는 것이 'prosodic foot'이다. 


어떤 개념을 말할때는 예시가 있어줘야!
한 번 "very important designer" 를 foot단위로 나눠보자.


일단 강세의 위치를 확인해준다.

1번째 음절, 3번째 음절 6번째 음절에 강세가 있다.

very im'port'ant de'sing'er 
('는 강세 표시)


위에서 말한것 처럼 "pitch-accented(강세를 받은) syllable부터 
그 다음 pitch-accent syllable 앞까지"로 구분을 해보면 아래와 같이 foot이 구성된다.


[very im][portant de][singer]


참고적으로 foot은 
within-word boundary foot과 
cross-word boundary foot으로 분류할 수 있다.

여기서 word는 lexical word를 말하며, 
우리가 생각하는(사전에서 찾을 수 있는) 단어를 말한다.

foot을 말할땐 보통 cross-word boundary foot이라고 생각하면 된다.


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

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