티스토리 툴바


음성검출이란?

말 그대로 음성이 존재하는 부분을 찾는 것이다.

그럼, 실시간 음성 검출이란?

 

음성이 입력되는 순간부터 실시간에 음성을 잡아내고 음성이 종료되는 것까지 실시간에 처리하는 것을 의미한다. 연속음 인식에서는 음성 검출이 많이 중요하지는 않지만 고립단어나 연결단어 인식에서는 상당히 중요하다.

특히, DTW를 사용하는 화자 종속 인식기에서는 그 성능의 상당 부분을 이 음성 검출부가 좌우한다고 알려져 있다.

 

일반적으로 음성 검출은 영어로 endpoint detection , 끝점 검출이라는 용어로 사용된다. 음성의 시작과 끝을 찾는다는 뜻이다. 그럼, 이게 왜 어려울까?

사람의 음성 중 유성음과 같이 에너지도 크고 주기적인 신호는 잡음과 잘 구분되지만 파열음이나 마찰음 같은 음성은 잡음과 비슷한 성질을 갖고 또한 에너지도 작아서 잘 구분하기 쉽지 않다.  특히, 주변 잡음이 레벨이 높으면 더더욱 큰 문제가 됩니다.

 

잘 알려진 끝점 검출 알고리듬으로 RabinerSambur의 알고리듬이 있는데 이는 영교차률(zer: zero-crossing rate) 구간 에너지(frame energy)를 사용하는 방법으로 시간 영역에서 간단하고 빠르게 음성을 검출 할 수 있다. 그러나, 이 방법은 실시간 검출에는 부적합한 off-line 검출 알고리듬입니다. 따라서, 대부분의 경우 이를 실시간 검출에 맞게 변형해서 사용한다. 참고로 주파수 영역의 특징을 이용해서 검출하는 방법도 있고 이 방법이 잡음에 대해서 강인하다고 알려져 있지만 계산량도 많고 구현도 복잡해서 실제로는 잘 사용하지 않는다.

 

음성을 고정된 길이로 나누는 것을 보통 framing한다고 하고 그 고정된 길이 안의 샘플들을 하나의 frame 이라고 부른다. 또한, 일반적으로 resolution을 높이기 위해서 각  frame 의 일정 샘플들은 중첩(overlap)이 된다.

예를 들어서, 16KH Sampling된 음성의 경우 초당 16000 샘플이 얻어지는데 이 경우 한 frame은 보통 20~40ms 정도의 샘플이 된다. 320-640 샘플 정도가 되는 것이다.

중첩은  frame 길이의 2/3, 1/2 정도 사용된다. Frame = 320 샘플, 중첩 1/2인 경우 160 샘플씩 중첩 시키면 된다. 이렇게 얻어진 각고, 에너지는 각 샘플의 제곱의 합으로 나타낸다.

또한, frame의 샘플 중 일부는 다음 frame과 겹치니깐 그 부분은 미리 계산된 ZCR과 에너지를 사용하면 계산을 더 줄일 수 있다.

 

그런데, ZCR의 경우 잡음에 상당히 민감하다. 따라서, 많은 경우 에너지를 사용하게 된다. 그래서, 대부분의 인식기에서 마이크 볼륨을 되도록 크게해서 사용하길 권장한다. 또한, 대부분의 사운드 카드에는 DC BIAS가 존재한다. , 아무런 음성이 없는 경우에도 신호의 레벨이 0이 아닌 어떤 값을 갖는다는 거다. 따라서, 그 값을 미리 계산해서 제거해 주는 것이 필요하다. 또한, 경우에 따라서는 HIGH-PASSLOW-PASS FILTER SW적으로 구현해 줘야 할 필요도 있다.

 

음성은 짧은 구간으로 나누어서 분석하고 인식에 사용한다고 했다. 예를 들어서 초당 16000 샘플로 샘플링 한다면 (FS=16000)한 구간을 잡아 나가면 된다. 그럼, 1초 간의 음성에서 얻을 수 있는 FRAME의 개수는 몇 개 일까?

 

è  99 = FS/M-1 맞나? 각각 계산하기

 

FRAME에서 P차원의 특징을 추출한다면 1초의 음성은 99개의 p차원 벡터열이 된다. 이게 인식에 사용되는 것이다.

 

마찬가지로 음성의 검출도 frame 단위의 계산에 의해서 수행될 수 있다. 이 경우의 frame크기는 특징 추출시 보다 더 적을 수도 있지만 실시간 구현시 마찬가지로 음성의 검출도 frame 단위의 계산에 의해서 수행될 수 있다.

이 경우의 frame에서 energyzcr을 계산한다. 그런데, 지난 번에 말했지만 대부분의 사운드 카드는 DC bias가 존재합니다. 따라서, bias를 제거해야한다. 이건 처음 어느 정도 시간 동안(1~2) 음성이 없다고 가정하고 채취한 계산한다. 어떻게 하나면 각 샘플의 제곱을 모두 더하고 샘플수로 나누면 된다. 그런데, 위에서 한 절반 정도씩 중첩한다고 했었다. 그러니까. frame의 절반에 대해서만 계산하고 나머지는 그 전에 계산한 걸 더하면 계산량이 줄어든다.

 

Zcr은 본래 샘플의 부호가 바뀌는 횟수를 세면 되는데 이게 잡음에 상당히 민감하다. 잡음이 상당한 경우 zcr이 급격히 커질 수 있다. 따라서 평균적인 잡음의 레벨을 추정하고 이를 기준으로 zcr을 계산한다. 무슨 애기냐 하면 실제로 0을 지나는 샘플들을 세는 대신에 +-n 사이를 지나는 샘플의 수를 센다는 것이다. 당연히, n은 평균적인 잡음의 레벨이다. 그래도, 여전히 zcr은 조금 불안한 기준이다. 차라리 마이크 볼륨을 키우고 목소리를 조금 크게 하는게 낮다. Zcr도 그 전 frame의 것을 절반 정도 사용할 수 있다.

 

frame에서 energy zcr을 구한 경우 이를 이와 관련된 threshold 값들과 비교해서 음성이 개시되었는지 판정을 한다. 일단 음성이 개시된 걸로 판정되면 그 후 연속적으로 5~6frame이 계속 음성으로 판정되는지 보고 음성으로 판정되면 음성이 개시되었다고 판정한다. 이때 처음 음성으로 판정된 frame의 몇 frame 앞에서 음성이 개시되었다고 판정하는 것이 안전할 수 있다.

(
마찰음이나 파열음 등 때문에) 하여간 일단 음성이 시작되고 처음 음성이 아닌 것으로 판정된 frame이 나타나면 계속 저장을 하면서 그 후로 한 20 frame 내외에서 연속해서 5~6 frame이 음성이 아닌 것으로 판정되면 음성이 끝난 것으로 판정한다.

아니면 음성이 계속되고 있다고 보고 계속 끝점 검출을 반복한다. 마찬가지로 끝으로 판정되면 그 판정된 frame 수준 이상의 에너지를 갖는 frame들이 최소한 k개 이상되지 않으면 역시 잡음으로 간주한다.

전체 평균적인 zcr에 의해서도 이러한 판단을 할 수 있다. 이러한 후처리를 통해서 잡음과 음성을 잘 구별하는 것이 중요하다. 각각의 threshold 값이나 필요한 frame 수 등은 상당히 경험적으로 얻어질 수 밖에 없다. 또한, 사용하는 사운드 카드에 따라서도 달라진다.  적당한 low-pass high-pass filter가 없는 경우엔 이를 sw적으로 구현해 줘야 한다. 디지털 신호 처리 책을 참고하면 간단한 필터들을 구현할 수 있다.


저작자 표시 비영리 변경 금지

'★ 내가 원하는 A.I > - 음성인식' 카테고리의 다른 글

Endpoint Detection  (0) 2012/03/22
Hidden Markov Model  (0) 2012/03/22
음성인식 응용  (0) 2012/03/22
음성합성  (0) 2012/03/22
음성이해  (0) 2012/03/22
베이즈 추론  (0) 2012/03/22
Posted by 찬휘 Trackback 0 : Comment 0

Hidden Markov model(HMM) 은 모델링하는 시스템이 미지의 모수(parameter)를 가진 Markov process일 것이라고 가정하여, 그 가정에 기초해서 관측된 모수로부터 숨겨진 모수를 결정하려하는 하나의 통계모델이다.

추출된 모델의 모수들은 더 나은 분석을 수행하기 위해 사용될 수 있다. 예를들면 패턴인식 응용과 같은 것이다. Regular Markov model은 그 상태를 직접 관찰자가 볼 수 있기 때문에 그 상태전이 확률(state transition probabilities)은 유일한 모수들이다.

그러나 hidden markov model은 출력들(outputs)이 더해진다. 각각의 상태는 가능한 출력토큰들(output tokens)에 대한 확률분포를 가진다. 따라서 hmm에 의해 생성된 토큰들의 순서를 봄으로써 상태들의 순서를 직접적으로 알 수 있는 것은 아니다.

즉 출력치만 관측되고 상태의 흐름은 관측되지 못한 경우에 사용하므로 은닉 마르코프 모형이라 부른다. Hmm은 음성인식, 광학문자인식, 자연어처리, 생물정보학 등에 이용된다.

 

1980년대의 음성 인식의 흐름은 템플릿 방식의 접근 방식에서 은닉 마코프 모델과 같은 통계적 방법으로 기술의 변화를 가져왔다. Hmm의 이론이 ibm이나 ida, dragon 시스템과 같은 몇몇 연구소에는 잘 알려지고, 이해되었으나 80년대 중반까지는 hmm의 방법이나 이론에 대한 논문이 발표되지 않아 널리 사용되지 않았다. 그러나, 요즘은 거의 모든 음성 인식 시스템에서 hmm 을 채택하고 있다.

 

과거 15년 동안 음성인식에 가장 많이 사용되는 알고리즘은 은닉 마코프 모델이었다. Hmm은 이중 통계적 모델로서, 기본이 되는 음소열의 생성과 프레임 단위의 표면적 음향학적인 표현을 markov 과정과 같이 확률로서 나타낸다. 프레임 단위의 점수를 예측하는데 신경 회로망이 사용되기도 하며, hmm 시스템과 결합되어 혼합 모델로서 사용되기도 한다.

 

프레임 단위의 hmm 시스템의 중요한 특징은 음성 부분이 명시적으로 파악되는 것이 아니라, 검색 과정 중에 파악된다는 점이다. 또한 먼저 음성 부분을 파악하여 분류하고 단어를 인식하기 위하여 부분 거리값을 이용하는 다른 접근 방법도 있다. 이러한 접근 방법은 여러 가지 작업 분야에서 경쟁적인 인식 성능을 나타내기도 한다.

저작자 표시 비영리 변경 금지

'★ 내가 원하는 A.I > - 음성인식' 카테고리의 다른 글

Endpoint Detection  (0) 2012/03/22
Hidden Markov Model  (0) 2012/03/22
음성인식 응용  (0) 2012/03/22
음성합성  (0) 2012/03/22
음성이해  (0) 2012/03/22
베이즈 추론  (0) 2012/03/22
TAG hmm
Posted by 찬휘 Trackback 0 : Comment 0

 

유전 알고리즘(Genetic Algorithm)이란 자연계에 있어서 생물의 유전(Genetics)과 진화(Evolution)의 메커니즘을 공학적으로 모델화하는 것에 의해 생물이 갖는 환경에서의 적응능력을 취급하는 것이고, 1975년에 John Halland가 저서 Adaptation on Natural and Artificial Systems에 처음 소개한 자연도태의 원리를 기초로 한 최적화(Optimization) 방법이다.

Genetic algorithm
은 탐색, 최적화 및 기계학습(Machine Learning)을 위한 도구로 많이 사용한다.

 

생물의 세포로 구성되고 세포에는 핵이 있으며 그 핵 중에는 염색체(Chromosome)라는 것이 있다. 사람의 체세포의 경우에는 46개의 염색체가 있고, 염색체는 주로  DNA로 구성되어 있다. DNA 4종류의 염기라고 부르는 화학 물질이 중요한 구성 요소며, DNA가 가지는 정보는 이들 4종류의 염기의 구성 방법에 있다.

DNA
2중 나선구조로 되어 있으며, 이들이 복잡하게 겹쳐져서 염색체를 구성하고 있다. 유전자(Gnen)란 유전정보를 담당하는 DNA를 말한다. 특정의 유전자는 염색체의 특정 위치에 존재한다. 결국 유전정보는 염색체상에서의 위치(유전자 위치)와 염기의 배열에 의해 표현되는 것이다.

 

부모로부터 유전자에 의해 생물로서의 정보 전달이 행해지면 다음세대에는 각 개체 중에서도 보다 우수한 즉, 환경에 적응도가 높은 개체의 유전 정보가 우선적으로 전해진다.

적응도가 낮은 개체는 수명이 짧고, 증식할 수 없게 되기 때문이다. 동시에 적응도가 낮은 종족도 자연 도태되어 간다. 이러한 원리에 기초하여 세대를 거듭해 가면 차례로 환경에 적응도가 높은 개체가 많아진다. 이것이 유전(Genetics)과 진화(Evolution)의 기본적인 원리이다.

 

Genetic algorithm은 풀고자하는 문제에 대한 가능한 해들을 정해진 형태의 자료구조로 표현한 다음, 이들을 점차적으로 변형함으로써 점점 더 좋은 해들을 생성하게 된다.

즉 풀고자 하는 문제에 대한 가능한 해들을 염색체로 표현한 다음 이들을 점차적으로 변형함으로써 점점 더 좋은 해들을 생성한다. 각각의 가능한 해를 하나의 유기체(Organism) 또는 개체(individual)로 보며 이들의 집합을 개체군(Population)이라 한다.

하나의 개체는 보통 한 개 또는 여러 개의 염색체로 구성되며 염색체를 변형하는 연산자들을 유전연산자(Genetic Operator)라 한다. 기본적인 연산자는 다음의 3가지가 있다.

선택(selection,
집단 중에서 적응도의 분포에 따라서 다음의 단계로 교배를 행하는 개체의 생존 분포를 결정한다. 적응도의 분포에 기초하고 있기 때문에 적응도가 높은 개체일수록 보다 많은 자손을 남기기 쉽게 된다.)  교배(crossover, 2개의 염색체 사이에서 유전자를 바꾸어 넣어 새로운 개체를 발생시킨다.) 돌연변이(Mutation, 유전자의 어떤 부분의 값을 강제적으로 변화시킨다.)

 

유전 알고리즘을 이용하여 어떤 문제에 대한 해를 찾기 위해서는 먼저 두 가지의 준비 작업이 필요하다. 하나는 풀고자 하는 문제에 대한 가능한 해를 염색체의 형태로 표현(encoding) 하는 것이다.

또 다른 하나는 각 염색체가 문제를 해결하는데 얼마나 좋은지를 측정하기 위한 평가함수 즉 접합함수(fitness function)을 결정하는 것이다. 유전자 알고리즘의 전형적인 구조는 다음과 같다.

 

n개의 초기 염색체 생성;

 

repeat {

           for i=0  to k {

                     두 염색체 p1, p2 선택 ;

                     Offspring = crossover (p1, p2);

                     Offspring = mutation(offspring);

           }

           Offspring, offspring population내의 k개의 염색체와 대치;

} until (정지 조건 만족);

 

남은 해 중 최상의 염색체를 return;

 

유전 알고리즘 또는 진화알고리즘(Evlutionary Algorithm)은 자연세계의 진화 과정을 컴퓨터 상에서 시뮬레이션 함으로써 복잡한 실세계의 문제를 해결하고자 하는 계산모델이다.

진화 알고리즘은 염색체를 표현하는 방법과 사용되는 유전 연산자의 종류 및 특성에 따라서 다시 여러 가지 모델로 구분된다. 그 하나는 흔히 GA라고 하는 협의의 유전 알고리즘으로서 여기서는 보통 고정된 길이의 이진 스트링을 염색체로 사용한다.

이에 반해 진화전략은 실수의 값을 취하는 유전자들로 구성된 벡터를 염색체로 사용한다. 그밖에도 그래프와 트리를 염색체 표현에 사용하는 진화프로그램밍과 유전 프로그래밍 등이 있다. 사용되는 연산자로 ep es는 돌연변이, ga gp는 교차연산자를 주로 사용한다. 역사적으로 ep, es, ga 1960년대와 70년대에 개발되었으며 gp 90년대에 들어와 연구되기 시작한 분야이다.

 

유전 알고리즘은 응용예이다. 조합적 최적화는 유전 알고리즘의 응용 예들 중 가장 많은 결과를 내 것들 중의 하나이다. 가장 관심을 끄는 연구 분야는 비결정 나해군에 속하는 문제들일 것이다.

유전 알고리즘이 도전한 대표적인 문제 또는 문제군을 몇 가지 나열하면 순회판매원 문제, 작업공정 스케줄링, 네트웍 레이아웃, vlsi cad 레이아웃, 채널 라우팅, db 질의 최적화, 자동차 스케쥴링, 그래프 분할, 최대 완전 그래프 문제, 스타이너(Steiner) 트리 최적화, 부하 밸런스(load balancing) 문제, 시간표 문제(timetabling), 이차원 배정 문제(quadratic assignment problem), 단백질 구조 최적화(protein folding) 등 한정된 공간에 나열하기 힘들 정도로 많다.

 


저작자 표시 비영리 변경 금지

'★ 내가 원하는 A.I > - 유전 알고리즘' 카테고리의 다른 글

유전 알고리즘  (0) 2012/03/22
Posted by 찬휘 Trackback 0 : Comment 0
prev 1 2 3 4 5 ... 83 next