I. 서 론
음성신호를 메모리에 저장하거나 전송하기 위한 음성 부호화법에는 크게 파형부호화법, 신호원부호화법, 혼성부호화법 등 세 가지로 나눌 수 있다. 파형부호화법은 음성의 성분 분리 없이 파형 자체의 잉여 성분만을 제거한 후 부호화하여 전송하고 다시 합성하는 방식으로 고음질과 화자의 개성이 유지되는 반면 전송파형을 유지하기 위한 데이터양이 많기 때문에 전송률이 높으며 대용량의 메모리가 필요하게 된다.[1] 이에 비해 신호원 부호화법은 음성의 발성모델에 근거하여 음성 신호의 여기 성분과 여파기 성분을 분석하여 각각을 독립적으로 분리시켜 부호화하는 방법을 사용하기 때문에 전송 대역폭이 작고 메모리 사용량이 적다. 그러나 분석 및 합성 시에 오차가 누적되어 명료성이 떨어진다는 단점을 갖고 있다.[1,7]
혼성 부호화화법은 고음질의 화자의 개성을 유지시켜 주는 파형 부호화법과 메모리 효율성이 높은 신호원 부호화법을 결합시킨 방법이다. 즉 포만트 정보는 선형 예측 부호화법으로 부호화하고 나머지 잔여 신호를 어떻게 부호화하느냐에 따라 RELP, VELP, MPLPC, CELP법 등이 제안되어져 있다.[1,2]
음성이 선형예측을 통해 얻어 질 수 있다는 가정으로 개발된 CELP(Code Excitation Linear Prediction)계열의 음성부화기들은 음성을 부호화하는 데 있어서 선형예측 계수와 여기신호로 이루어진다. 일반적으로 선형 예측 계수는 LSP를 이용하여 부호화되며 여기신호는 몇 개의 코드북을 이용하여 부호화한다. CELP를 기반으로 발전한 부호화 기법으로는 ACELP, CS-CELP 등이 있다. 또한 CELP계열의 압축 방식은 저 전송률에서에 좋은 통화 품질을 제공해 준다.[1,2,7] 음성 부호화 기술로 현재 거의 주로 사용되는 G.723.1, G.729, AMR, iLBC EVRC 등이 CELP 기반의 음성 부호화기이다. 현재 ITU-T에서는 PCS, IMT-2000등에서 사용할 수 있는 8 kbps 음성 부호화기에 대한 표준화 작업으로 1996년에 CS-CELP를 G.729로 인터폰 및 화상통신용 음성 부호화기로 ACELP/ML-MLQ의 5.3/6.3 kbps 이중 속도 부호화 방식을 G.723.1로 선정하였다.[3]
앞에서 살펴 본 CELP보코더의 과정 중 피치를 검색하는 과정은 코드북 검색과 함께 매우 중요한 과정이다. CELP 부호화법에서는 피치필터를 적용하여 음성신호의 피치 주기 성분을 부호화하고 있다. 이러한 피치필터에 주로 적용되고 있는 피치검색법은 피치지연에 따른 상관관계법이다. 상관관계 피치검색법은 프레임 단위로 피치가 존재하는 모든 피치지연에 대해 원래음성과 합성된 음성의 상관관계를 검색하고, 최상의 상관관계를 갖는 피치필터의 피치지연과 이득을 결정하게 된다. 또한 좀 더 정확한 계수 값들을 얻기 위해 서브프레임 단위로 수행하는데 이는 많은 피치 검색 시간을 필요로 한다.[2]
본 논문에서는 프레임 별 에너지 비를 이용하여 이득을 미리 보상해 줌으로써 최적의 피치지연 값을 구하는 방법과 앞서 구한 에너지비로 신호의 진폭변화를 예측하여 각 프레임마다의 서브프레임 수를 달리하는 방법을 제안한다. 이 방법들로 피치 검색의 전체적인 성능을 그대로 유지하면서 피치 검색 시간을 단축시켜 주고 피치 검색의 정확도를 높일 수 있다. 또한 전송하고자하는 음성신호의 파라미터들을 코딩하는 데도 용이하게 해준다. 먼저 2장에서 CELP계열의 보코더에서의 피치 검색 알고리즘을 살펴보고 본 논문에서 제안하는 알고리즘을 3장에서 설명한다. 4장과 5장에서는 실험 및 결과를 살펴보고 결론을 맺는다.
II. 기존의 피치 검색 방법
2.1 CELP계열의 보코더에서의 피치 검색 개념
보코더 부호화시에 수행되는 피치 검색과정은 음성신호의 자기 상관관계에 해당하는 피치 주기 정보를 얻는 과정이다. 스펙트럼분석이 개회로 구조로 수행되어지는 것에 비해 피치분석은 폐회로 구조에 의해 수행되어 져야한다. 즉, 피치 지연조건을 최적으로 만족하는 값을 반복적인 비교를 통해 결정하게 된다. 피치 이득은 이때 얻어진 피치지연을 이용하여 상대적인 이득 값을 갖도록 양자화하게 된다. 이러한 피치 검색과정은 코드북 검색과 함께 CELP 부호화기의 계산량에 크게 영향을 미치는 중요한 부분이다.[2, 3]
그림 1은 전형적인 피치검색 과정 중 한 과정만을 보여 주고 있다. 피치검색은 합성에 의한 분석을 기초로 하고 피치 예측 필터를 위한 입력신호와 합성된 신호사이의 가중화된 에러를 최소로 하는 피치지연 값인
과 피치이득 값인
를 선택하는 과정이다. 그림 1에서 ZIR(Zero Input Response)은 영(zero) 입력 응답이고 피치검색을 더욱 효과적으로 하기위해 가중여파기,
를 사용하는데 식(1)과 같다.
|
그림 1.피치 검색을 위한 구현 과정의 예 Fig. 1.An example of implementation flow for pitch search. |
| (1) |
여기서
는 포만트 예측 오차 필터이고
는 인지 가중화된 파라미터이다. 피치 합성 필터는 다음 식(2)와 같이 나타낼 수 있다.
| (2) |
가장 최적의 피치지연
과 피치 이득
를 구하는 과정은 식(3)의 MSE(Mean Square Error)를 최소화하는
과
을 구하는 것과 같다.
| (3) |
여기서
는 피치분석 프레임 길이이고
과
은 각각 입력신호와 인지 가중화된 합성 신호이다. 이것은 식(4)의 최대값을 구하는 것과 같다.
| (4) |
여기서
,
이다.
주어진
값에 대해 최적의
는 식(5)와 같이 구한다. 이러한 과정은 각각의 모든
값에 대해 반복적으로 수행된다.[3]
| (5) |
QCELP의 피치검색 알고리즘을 자세히 살펴보면 1/8율의 패킷으로 부호화되는 프레임을 제외하고는 모든 보코더의 프레임은 동일한 길이의 피치 부프레임으로 재차 분할된다. 즉 전송율 1 패킷에 대해서는 피치 프레임이 4개, 전송율 1/2 패킷에 대해서는 피치 프레임이 2개, 전송율 1/4 패킷에 대해서는 피치 프레임이 1개가 있고 전송율 1/8 패킷에 대해서는 피치 프레임이 없다. 피치 합성필터는 식(2)와 같고 피치지연은 7비트로 표현되어 17에서 143까지의 범위를 갖는다.
은
인 경우에 대해 사용한다. 피치 이득
는 3비트로 0에서 2.0까지의 범위를 갖는다. 각 부프레임에 대해 음성 부화화기는 피치지연
과 피치이득
를 결정하고 부호화하게 된다.
피치 파라미터를 선택하는데 적용되는 방법은 합성에 의한 분석법이며 부호화는 입력음성과 합성된 음성간의 가중된 오차를 최소화하는 파라미터를 선택하는 과정이다. 합성된 음성은 LPC 필터에 의해 여파 된 피치 합성필터의 출력이다. 피치합성은 입력으로 모두 영 값 요소로 구성된 코드북 벡터를 사용한다. 피치지연
은 집합{ 17, 18, ........, 143 }에서 선택되고 피치이득
는 집합 { 0, 0.25, 0.5, ..., 2.0 }(0과 2.0 사이를 0.25 간격으로 선형적으로 양자화)에서 선택한다. 가중화 여파기는 식(1)과 같고
는 인지 가중화된 파라미터로 0.8이다. 가중화 필터에 적용된 LPC계수는 현 피치 부프레임에 대한 것과 같다. 음성부호화기에 적용된 합성 필터는 식(6)과 같다.
| (6) |
여기서 인지가중화 필터가 뒤따르는 복호기 음성 합성필터이고 이를 가중화된 합성필터라 한다.[4]
2.2 듀얼에 의한 피치 검색
일반적으로 피치를 검색하기 전에 그림 2와 같이 신호의 주기성을 먼저 강조한 다음 그 신호에서 두드러진 반복 구간을 찾는 방법을 사용한다.
|
그림 2.피치 검색 과정 Fig. 2.Pitch detection process. |
자기상관법에 속하는 듀얼(dual pulse) 기법은 두 개의 임펄스 신호 쌍과 원래신호를 상관관계를 구하여 가장 두드러진 반복구간을 찾는다. 그러므로 신호의 레벨은 중요하지 않고 간격이 중요하다. 즉 이 방법은 한 프레임 내에서 식(7)과 같은 전달특성을 갖는 두 개의 펄스와 원래 음성신호와의 가장 높은 상관관계 값을 구하여 주된 주기를 찾는 방법이다.[4-6]
| (7) |
여기서
은 필터의 이득이며
은 두 펄스간의 간격이다.
| (8) |
(단,
은 프레임사이즈)
식(8)을 이용해서 프레임 내에서 샘플을 증가시켜가며 원래 신호와 두 펄스 간격만큼 지연된 신호 사이의 상관관계를 계산한다. 여기서
는 각각
번째 프레임의 이득과 펄스 간격이다. 이 식에서 얻어진 파형에서의 두드러진 피크와 피크 간격 중에 첫 번째로 찾아지는 가장 큰 값을 피치 주기라 한다. 그러나 이 경우에 찾아진
값이 반드시 피치라는 보장이 없다. 이유는 이 간격이 피치 주기가 아닌 반주기, 배주기 및 세배주기일 수 있다.
반주기나 배주기가 피치 주기로 찾아지는 것을 막기 위해 그림 3에서 나타냈듯이 처음에
을 1로 놓고
값을 증가 시켜가며 원래 신호와
의 상관관계를 구한다. 이때 유사도가 높은 값들 사이의 비율을
값으로 한다. 두 번째 단계로 이렇게 얻은
값을 다시
에 대입하여
값을 증가 시켜가며 원래 신호와
의 상관관계를 구한다. 이때 상관관계 값이 가장 높을 때의
값을 피치 주기로 한다. 이렇게 하면 반주기, 배주기 및 세배주기가 피치 주기로 찾아지는 것을 막는다. 그러나 프레임 마다 이런 과정을 반복하다 보면 원하는 값을 얻기 위해서는 많은 계산 량이 필요하다는 것을 알 수 있다. 또한 신호의 진폭 변화가 크게 없는 프레임에서는 정확한 계수를 얻을 수 있지만 갑작스런 신호의 변화가 있는 구간에서는 신뢰할 수 없는 피치를 얻는다. 이러한 문제점을 해결하기 위해 분석구간을 더욱 짧게 할당하는 방법을 적용한다. 즉, 프레임을 여러 개의 서브프레임으로 세세하게 나누어 분석하는데 이 방법은 피치를 검색하는데 필요한 시간을 증가시킨다.
|
그림 3.Dual Pulse에 의한 피치 검색 과정 Fig. 3.Pitch search using dual pulse. |
III. 제안한 알고리즘
본 논문에서는 위에서 제시한 두 가지 문제점을 개선하기 위해 프레임 내의 에너지 비를 이용하는 두 가지 알고리즘을 제안한다.
먼저 피치를 검색하기 전에 프레임 앞부분의 평균에너지인
과 뒷부분의 평균에너지인
의 평균에너지를 각각 구한다. 식(9)에서처럼 프레임 앞뒤에서 구한 에너지의 값을 이용하여 에너지비율인
번째 프레임의
값을 정한다.
| (9) |
첫 번째 알고리즘에서는 식(9)에서 구한
값을 필터 이득 값으로 정하여 그림 3과 같은 피치 이득을 구하기 위해 필요했던 반복적인 선 처리 과정을 생략한다. 즉 그림 4에서 나타낸 것처럼 피치주기를 검색하기 전에
을 구하여 에너지 변화율만큼을 미리 진폭에 보상하여 준 후 피치주기를 구한다. 이 알고리즘은 필터 이득을 구하는 과정을 수행하지 않으므로 피치검색의 정확도는 그대로 유지한 상태로 검색시간을 단축할 수 있다.
|
그림 4.첫 번째 알고리즘의 블록도 Fig. 4.Block diagram of the first algorithm. |
보코더에서 정확한 피치 주기와 이득을 검색하기 위해 프레임을 여러 개의 서브프레임으로 좀 더 세세하게 나누어 처리하는 이유는 음성 신호 중에 급격한 변화 구간에서의 피치 검색의 정확도를 증가시키기 위함이다. 그러나 그림 5에서처럼 진폭의 변화가 일정한 음성 신호 구간에서는 피치 변화 또한 거의 없다는 것을 실험을 통해 알 수 있었다. 즉, 파형의 변화가 갑자기 발생하는 전이구간에서는 피치 주기 또한 변화한다는 것을 알 수 있다. 그림 5는 진폭 변화가 거의 없는 음성 파형의 기본주파수를 보여 주고 있다. 그림에서 알 수 있듯이 신호의 진폭 변화가 거의 없는 구간에서는 피치 변화도 거의 없음을 알 수 있다.
|
그림 5.전이구간이 없는 음성 파형과 피치 Fig. 5.Waveform and pitch of the stationary speech signal. |
본 논문에서는 식(9)에서 구한 프레임내의 에너지 변화율을 이용하여 진폭 변화의 상태를 추정한 후에 서브프레임의 간격을 결정하는 방법을 제안한다. 즉
값이 1에 가까우면 신호의 진폭 변화가 없는 경우이므로 서브프레임 수를 줄인다. 이 과정을 그림 6에서 설명하였다. 피치를 검색하기 전에 먼저 프레임의 에너지 비를 구한 후 서브프레임의 수를 결정하는 과정을 보여주고 있다.
그림 6을 자세히 살펴보면 i번 째 프레임에서 에너지 비율(
)를 구한 후
값이 1 값에 근사한 값이면 신호의 변화가 거의 없는 것이므로 서브프레임 수(
)를 줄이고, 1 값에 근사한 값이 아닌 경우엔 서브프레임 수(
)를 그대로 적용하여 서브프레임별 피치 주기를 구하는 과정을 볼 수 있다 .
|
그림 6.두 번째 알고리즘의 블록도 Fig. 6.Block diagram of the second algorithm. |
이 방법은 기존의 피치 검색의 정확도를 높이기 위해 무조건 서브프레임 단위로 피치 검색하는 방법을 개선하여 서브프레임 수를 가변적으로 적용하여 피치 검출의 정확도는 그대로 유지하고 계산시간을 단축시켜 준다. 이것은 앞서 설명한 진폭 변화가 없는 구간에서는 피치의 변화도 거의 없다는 음성 신호의 특징 때문에 가능하다. 그 결과 피치검색 시간을 줄일 수 있고 이를 이용하여 다른 파라미터들을 추출하는데 시간을 더 할당할 수 있어 전체적인 보코더의 성능을 개선할 수 있으리라 기대된다.
IV. 실 험
본 논문에서 제안한 방법을 실험하기 위해 시뮬레이션 장비로는 워크스테이션 Z400을 사용하였고 음성 시료는 8 kHz로 샘플링 시켰으며 16 bit A/D 컨버터로 디지털 신호로 변환된 20대 남/녀의 음성을 이용하였다. 음성 시료로는 ‘아, 에, 이, 오, 우’를 약 0.5초 간격으로 발음하게 한 것과 약 3초에서 10초 사이에 발음한 문장을 5개 사용하였다. 프레임의 간격은 160 샘플로 정하였고 서브프레임 길이는 40샘플로 하였다. 식(9)의 값 즉,
번째 프레임의 이득인
를 구하기 위해 프레임의 앞과 뒤 파형의 에너지 비를 구할 때는 각각의 프레임 시작과 끝부분으로 부터 일정 간격인 10 msec 만큼의 에너지를 구하여 계산하였다. 또한 제안한 알고리즘의 성능을 평가하기 위해 피치 검색 과정을 Visual C와 MatLab 프로그램으로 구현하여 기존의 QCELP 보코더에서의 피치 검출 방법과 본 논문에서 제안한 방법을 비교하였다.
그림 7은 QCELP 보코더에서 얻어진 합성음과 제안한 방법으로 얻어진 합성음의 파형을 나타낸 것이고 그림 8은 스펙트럼 형태로 각각을 비교하여 나타낸 것이다. 두 개의 신호를 듣고 비교했을 때 큰 차이를 느끼지 못할 정도로 음질이 비슷했다. 이것을 증명하기 위해 MOS(Mean Opinion Score) 테스트를 사용하여 주관적 음질 평가를 수행하였는데 ITU P.81의 권고안을 준수한 MNRU Ver2.0을 사용하였다. 테스트는 잡음이 거의 없는 환경에서 하였으며 음질을 1점에서 5점까지 5단계로 나누어 평가하게 하였다. 평가에 응한 청취자는 다른 MOS테스트에 경험이 있는 연구원 12명과 일반인 12명이 실험에 참여하였다. 실험 후 표 1에서처럼 5개의 음성 시료에 대한 평균값인 약 3.662 정도의 MOS 점수를 얻을 수 있었다. 실험결과로 얻어진 수치로 알 수 있듯이 주관적 음질 평가의 경우 QCELP와 비교해서 제안한 방법에 의한 음질의 열화는 거의 없었다.
|
그림 7.QCELP 보코더에서의 합성음성과 제안한 방법으로 얻어진 합성음 파형의 비교 Fig. 7.Comparison between synthesis signal by QCELP and synthesis signal by proposed method. |
처리시간 측정은 수행시간 측정함수를 사용하였고 각각의 시료에 대해 QCELP 알고리즘과 제안한 알고리즘에 대한 처리시간을 측정하였다. 또한 각 시료에 7번씩 수행한 다음 최대치와 최소치를 뺀 나머지 5개 값에 대해 평균을 측정하였다. 실험 후 표 2에서 나타낸 것처럼 QCELP에 비해 제안한 방법은 26.84% 만큼의 처리 시간이 감소되었음을 알 수 있었다. 여기서 음성 시료 1과 시료 2는 평균값에 비해 낮게 나타나고 시료 3, 시료4 그리고 시료 5는 높은 이유는 음성 시료 1과 시료 2에 비해 시료 3, 시료 4 그리고 5의 피치의 변화가 적기 때문이다. 앞으로 천이 영역에서의 피치변화에 대한 보상하는 방법을 찾아 검색 시간을 단축할 수 있는 알고리즘을 개발할 필요성이 있다.
표 2. 처리시간 결과 비교 Table2. Comparision of process time. | |||
QCELP (단위 sec) | 제안한 알고리즘 (단위 sec) | 감소율 (단위 %) | |
시료 1 | 45.049 | 33.610 | 25.39 |
시료 2 | 49.378 | 36.668 | 25.74 |
시료 3 | 2.130 | 1.557 | 26.90 |
시료 4 | 6.960 | 4.975 | 28.52 |
시료 5 | 4.050 | 2.930 | 27.65 |
평 균 | 26.84 | ||
V. 결 론
음성신호처리 분야에서 피치를 검색하는 과정은 중요하다. 자기상관함수 방법에 속하는 듀얼펄스 기법은 주기성을 강조한 후 피치를 검색하는 방법이다. 한 프레임 내에서 두 개의 펄스 간격을 변경시키면서 상관관계 값을 구하여 주기가 가장 두드러지는 반복 구간을 찾아 피치를 검색한다. 이때 반주기, 배주기 및 세배주기가 발생하는 경우에는 찾아진 간격을 피치라 할 수 없어 이를 해결하기위한 여러 가지 방법들이 제안되어있다.
본 논문에서는 먼저 피치를 검색하기 전에 프레임내의 전체 에너지변화율을 추정하여 피치 검색 전에 신호의 에너지 레벨을 보상 하여 줌으로써 피치 이득을 구하기 위해 필요했던 반복적인 선 처리 과정을 생략하였다. 두 번째로 에너지 변화율에 따라 프레임별 서브프레임의 개수를 조절하여 시간을 단축하는 방법을 제안하였다. 실험 결과를 살펴보면 MOS 점수는 3.662로써 기존의 방법과 비교해 음질의 변화가 거의 없음을 알 수 있었고 프레임별 피치검색 시간은 26.84% 만큼 단축되었음을 알 수 있다. 이결과 통화 품질은 그대로 유지되면서 음성신호처리시간을 단축시킬 수 있음으로 전송하고자하는 음성신호의 파라미터들을 추출하고 코딩하는 데도 용이하게 해주어 전반적인 보코더 성능 개선에도 기여할 수 있다.












