DOI QR코드

DOI QR Code

The Implementation of Smartphone Application servicing HD(High Definition)-Voice

HD 음성 서비스를 제공하는 스마트폰 어플리케이션의 구현

  • Received : 2013.06.04
  • Accepted : 2013.07.26
  • Published : 2013.08.31

Abstract

This paper represents the development of the HD-Voice application with G.711.1 coder-the latest wideband codec standard from ITU-T-for smartphone based on android platform. The work also includes the structure of the HD-voice application and the result of speech quality of HD-Voice application with G.711.1 coder. The paper shows that the speech quality of HD-Voice application with G.711.1 coder is excellent.

본 논문은 ITU-T 표준 코덱인 G.711.1 광대역 코덱을 적용한 HD 보이스 스마트폰 어플리케이션의 개발 내용을 설명한다. 개발 내용에는 G.711.1 광대역 코덱을 적용한 HD 보이스 스마트폰 어플리케이션의 구조와 개발된 HD보이스 어플리케이션의 음성 품질 결과를 포함하고 있으며, ITU-T의 다른 표준 코덱인 G.722 코덱을 적용한 어플리케이션 보다 음성 품질이 MOS값 - 0.5(패킷 손실 환경 포함)로 향상된 결과가 나왔다.

Keywords

I. 서론

최근 사용자의 고품질 음성 서비스에 대한 요청과 고사양 스마트폰의 지원으로 MVNO(Mobile Virtual Network Operators), 기간 통신사 등의 서비스 제공자, 카카오톡, 다음, 네이버 등의 콘텐츠 제공자, 그리고, 스마트폰 어플리케이션 개발자들은 HD 보이스 어플리케이션에 대한 개발의 필요성을 가지게 되었다. 전통적인 음성 서비스는 제한된 전송 대역폭으로 인해서 300 Hz ~ 3.4 kHz 협대역 음성 주파수를 사용했다[그림 1]. 하지만, 전송 대역폭의 증가와 HD 보이스에 대한 사용자들의 요청으로 50 Hz ~ 7kHz 광대역 음성 주파수를 적용한 HD 보이스 기술을 개발하게 되었다. 현재, ITU-T(International Telecommunication Union-Telecommunication Standardization Sector) 의 광대역 주파수 기반의 광대역 코덱은 G.722, G.722.1 AMR-WB(H.722.2), G.729.1 G.718, 그리고 G.711.1 코덱이 표준으로 지정되어 있다.[15]

[그림 1] 오디오 주파수 대역의 분류

여러 개의 광대역 음성 코덱중에 G.711.1 코덱은 기존 대다수의 VoIP(Voice over IP) 단말에 적용되는 G.711 협대역 코덱의 확장으로 G.711 코덱과 호환성을 가지기 때문에, 기존 VoIP 단말과 상호 연동 할 수 있는 장점을 가진다. 즉, 기존 협대역 기반의 VoIP 망을 HD 보이스 망으로 변환하는 과정에서 비용이 가장 적게 소요된다. 또한, G.711.1 광대역 코덱의 손실 보정 기능은 패킷 손실이 빈번하게 발생하는 네트워크 환경에서 음성 품질의 저하를 막는 기능을 수행한다. 현재, WiFi, 3G, LTE Wibro 등과 같은 무선 통신망에는 패킷 손실의 빈도가 유선망에 비해서 많기 때문에, 손실 보정 기능의 중요성이 커지고 있다.

본 논문에서는 G.711.1 광대역 코덱, HD 보이스 미디어 엔진, HD 보이스 지원 시그널링 프로토콜을 포함하는 HD 보이스 스마트폰 어플리케이션의 구현 내용과 구현된 HD 보이스 스마트폰 어플리케이션의 음성 품질 결과를 설명하고자 한다.

II. 배경 연구

[표 1]은 G.711/G.722/G.711.1 코덱의 특징을 비교한 표이다. G.711은 협대역 음성 신호를 인코딩하는 코덱이며, G.722는 광대역 음성 신호를 인코딩하는 코덱이다. G.711.1은 협대역 및 광대역 음성 신호 모두를 인코딩하는 코덱이다.

[표 1] G.711/G.722/G.711.1 코덱의 특징 비교

2008년 3월에, G.711 협대역 표준 코덱[1]의 확장 코덱인 G.711.1 광대역 코덱[2]이 ITU-T 표준 코덱으로 승인되었다. 주요 특징으로는 코딩 알고리즘은 저지연, 낮은 복잡도, 그리고, 기존 VoIP 단말과의 트랜스코딩 문제를 해결하면서 고품질 음성을 유지하도록 설계 되었다. 특히, G.711 코덱의 광대역 확장 버전으로 IP 폰이나, 다자간 음성 컨퍼런스의 코덱으로 적합하며, 기존 G.711 기반의 시스템이나 단말과 끊김없는 서비스를 지원할 수 있는 특징을 가지고 있다[3][4][16]. IUT-T 소프트웨어 도구 라이브러리(v2.2)의 의해서 측정된 복잡도는 가장 높을 때에 8.7 WMOPS(Weighted Million Operations Per Second)로 측정되었고, 지연은 11.285 ms로 측정되었다.

[표 2]는 G.711.1 광대역 코덱의 모드와 서브비트스트림(sub-bitstream)의 조합을 나타낸 표이다. 모드는 64kb/s 비트스트림의 레이어0에 16kb/s 비트스트림의 레이어1과 레이어2를 조합해서, R1, R2a, R2b, R3 4가지 모드로 인코딩한다. R1, R2a 모드는 8kHz의 협대역 주파수이고, R2b, R3모드는 16kHz의 광대역 주파수이다.

[표 2] G.711.1 광대역 코덱의 모드에 따른 분류

HD 보이스 기반 어플리케이션을 개발하기 위해서 선택한 스마트폰 플랫폼은 안드로이드 플랫폼이다. 안드로이드 플랫폼을 탑재한 스마트폰이 아이폰과 함께 가장 대중적으로 널리 사용되며, 플랫폼을 최적화하기 위한 개방 환경을 제공하기 때문에 선택했다. [그림 2]는 안드로이드 시스템의 소프트웨어 구조[13]를 도시한 일반적인 그림이다. 안드로이드 플랫폼은 운영체제인 리눅스 커널, 화면/사운드/멀티미디어 기능을 제공하는 안드로이드 라이브러리, 자바 런타임 기능을 수행하기 안드로이드 런타임, 그리고, API 기반의 인터페이스를 제공해서 다양한 으용을 개발 할 수 있도록 하는 어플리케이션 프레임워크로 구성된다.

[그림 2] 안드로이드 소프트웨어 구조

[그림 3]은 안드로이드 플랫폼에서 자바 코드가아닌 C/C++ 코드를 구현된 소프트웨어의 동작 구조[14]를 도시한 그림이다. 자바 가상 머신 환경에서 자바 코드는 미디어 처리 성능이 C/C++과 같은 네이티브 코드에 비해서 낮기 때문에 시그널링 프로토콜 및 음성 미디어 엔진은 네이티브 코드로 구현되며, 사용자 인터페이스는 자바 코드로 구현되며, 시그널링 프로토콜과 미디어 엔진을 처리 하는 부분은 JNI(Java Native Interface)롤 연결되어 동작한다.

[그림 3] 네이티브 코드 동작 구조

III. 스마트폰을 위한 HD 보이스 어플리케이션의 구현

[그림 4]는 안드로이드 스마트폰에서 구현된 HD 보이스 어플리케이션의 내부 구조를 도시한 그림이다. 어플레케이션 개발자는 호 관리자(Call Manager), 미디어 관리자(Media Manager), NAT 트래버셜등의 기능과 인터페이스 역할을 하는 ETRI HD 보이스 JNI(Java Native Interface)를 이용해서 자바 코드 기반의 ETRI HD 보이스 사용자 인터페이스 어플리케이션을 개발할 수 있도록 설계 되었다. HD 보이스 사용자 인터페이스 어플리케이션은 호 처리, 미디어 처리를 어플리케이션의 목적에 맞게 로직을 수행하고, 사용자에게 사용자의 입력 이벤트를 받아서 분석하고 수행하며, 호 관리자나 미디어 관리자에서 발생하는 이벤트를 사용자에게 알려주는 알려주는 기능을 수행한다. ETRI JNI Wrapper는 자바 API와 네이티브(Native) API를 연결하는 기능을 수행하며 C++ 코드로 구현되어 있다.

[그림 4] 안드로이드 스마트폰을 위한 HD 보이스 어플리케이션 구조

호 관리자는 IETF SIP(Session Initiation Protocol)[5] 와 SDP(Session Descripton Protocol)[6] 표준 문서에 기반한 호 연결 및 미디어 협상 기능을 수행한다. SIP 스택을 이용해서 상대방 통화 연결을 처리하는 호 연결 기능을 수행하고, SDP 스택을 이용해서 통화 하기 위한 음성 코덱을 협상하는 미디어 협상 기능을 수행한다. 미디어 관리자는 호 연결후에 미디어 처리 기능을 수행한다. G.711.1 광대역 코덱으로 기본으로 포함되어 있으며, 다른 코덱도 쉽게 이식 될 수 있도록 확장성 있는 구조로 구현되었다. 미디어 전송 프로토콜로 IETF 표준 프로토콜인 RTP(Realtime Transport Protocol)[7]가 구현되어 있으며, 음성 패킷의 보안을 위해서 역시 IETF 표준 프로토콜인 SRTP(Secure Realtime Transport Protocol)를 구현 하였다. ETRI 음성 품질 향상 모듈은 음성 코덱이외에 네트워크 상태, 단말 상태, 그리고, 화자가 있는 주의환경에 따라서 음성 품질이 저하 될 수 있는 있기 때문에 저하된 음성 품질을 향상 시키기 위한 기능을 수행한다. ETRI 음성 품질 향상 모듈은 어커스틱 에코 제거(AECAcoustic Echo Cancellation), 자동 게인 조정 (AGC-Automation Gain Control), 잡음 제거 (Noise Suppressor), TSM(Time Scale Modification) 기능이 포함되어 있다.

[그림 5]는 미디어 처리 기능을 수행하는 미디어 관리자의 상세 구조를 도시한 그림이다. 미디어 괸라자의 송신 파트(Sending side)는 6개의 콤포넌트로 구성되어 있다. 스피커와 마이크의 인접한 거리에 의해서 발생되는 어커스틱 에코를 제거하는 기능을 수행하는 어커스틱 에코 제거(AEC) 기능은 마이크로 입력되는 스피커의 신호를 분석해서 제거 한 후에, 상대방에게 송신해야 하기 때문에, 송신 파트에 서 동작하게 된다. TSM은 마이크로부터 일정하지 않은 시간으로 도착한 입력 데이터의 시간차를 보상하기 위한 방법으로 주요 음성 파라미터 변경 없이, 소리를 빠르게, 또는 느리게 출력 시키는 기술을 의미한다. 잡음제거는 음성 품질 저하 없이 신호 대 잡음 비율을 증가 시켜서 소리에 포함된 잡음을 제거하는 기능을 수행한다. 자동 게인 제어(AGC)는 자연스럽게 소리의 크기를 조절하는 기능을 수행한다. G.711.1 광대역 코덱 인코더는 PCM(Pulse Code Modulation) 음성 데이터를 G.711.1 비트 스트림으로 인코딩하는 기능을 수행한다. 인코더는 성능 향상을 위해서 ARM Coretex-A 코어에서 어셈블리 코드로 구현되어 있다.

[그림 5] 미디어 관리자의 구조

수신 파트(Receiving side)는 총 5개의 콤포넌트로 구성되어 있다. 어댑티브 디지터(Adaptive Dejitter)는 네트워크 상황에 따라서 음성 품질을 저하시키는 지연과 지터를 해결하기 위한 기능을 수행한다. G.711.1 광대역 코덱 디코더는 G.711.1 비트 스트림을 PCM(Pulse Code Modulation) 음성 데이터로 디코딩하는 기능을 수행한다. PLC(Packet Loss Concealment)는 패킷 손실이 발생 했을 때에, 손실된 음성 프레임을 보정하기 위한 기능을 수행한다.

다음은 G.711.1 광대역 코덱을 위한 RTP 포맷을 설명한다[9]. [그림 6]은 RTP 헤더 구조를 도시한 그림으로 G.711.1 코덱에 대해서 M(Marker) 비트는 정의되어 있지 않다. PT(Payload Type)는 RTP 페이로드의 데이터 타입을 정의하는데, RTP Profile[10] 표준 문서에 따라서 지정하게 된다. G.711.1 코덱은 동적 페이로드 번호 할당에 해당되며, 동적 페이로드 번호의 범위는 96에서 127로 지정되었다. 본 설계에서는 G.711.1 mu-law 프레임페이로드는 96으로, G.711.1 A-law 프레임 페이로드는 87로 지정했다. G.711.1 광대역 코덱의 프레임 크기는 5ms 이고, 16kHz이므로 샘플링수는 80 샘플이 되기 때문에, RTP 타임스탬프는 80씩 증가하게 된다.

[그림 6] RTP 헤더 구조

[그림 7]은 G.711 RTP 페이로드 포맷의 구조를 됫한 그림으로써, 전체 RTP 페이로드는 1 바이트의 페이로드 헤더와 나머지 코덱 프레임들로 구성되어 있다.

[그림 7] G.711.1 RTP 페이로드 포맷

[그림 8]은 G.711.1 RTP 페이로드 헤더의 구조를 도시한 그림이다. 1 바이트 중 4 비트는 모드 인덱스 필드를 나타낸다. 이것은 페이로드 헤더 이후에 RTP 페리로드에 적재되는 G.711.1 코덱 모드를 나타낸다. G.711.1 RTP 페이로드를 수신한 미디어 관리자의 RTP 처리 모듈은 페이로드 헤더의 모드 인덱스 필드를 분석해서 모드 인덱스에 정의된 모드는 G.711.1 디코더에게 파라미터로 프레임과 함께 전달한다. 페이로드 헤더의 나머지 5 비트는 확장을 위해서 예약되었고, 0로 셋팅되어야 하며, 이 부분에 대해서 어떤 동작도 하지 않는다.

[그림 8] G.711.1 RTP 페이로드 헤더 구조

상대방과의 성공적인 HD 보이스 전화 연결을 위해서는 코덱 협상 과정이 필요하다. [그림 9]는 G.711.1 코덱 협상을 위한 SDP(Session Description Format) 포맷을 도시한 그림이다. 상세하게는, mu-law G.711.1 인코딩의 RTP 페이로드 타입 번호를 위해서 96, A-law G.711.1 인코딩의 RTP 페이로드 타입 번호를 위해서 97로 정의된다. 또한, mu-law G.711.1 타입의 서브이름은“PCMU-WB” 이고, A-law G.711.1 타입의 서브이름은 “PCMA-WB” 로 정의된다. 클럭(clock rate) 은 광대역이므로 “16000“으로 정의된다. ”mode-set“파라미터는 현재 HD 보이스 어플리케이션이 디코딩 가능한 G.711.1 의 코덱 모드를 의미한다. 번호 4,3,2,1은 각각 R3, R2b, R2a, R1 모드를 의미한다. 모든 순서에 따라서 우선순위가 정해지는데, [그림 9]에서 가장 우선순위가 높은 모든 R3(4)모드 이다. 모드 셋이 SDP 포맷에 나타나지 않으면, 모든 모드를 디코딩 할 수 있다는 의미를 가진다. 협상 과정에 의해서, 코덱 모드가 정해지면, 미디어 관리자는 RTP 페이로드 헤더의 모드 인덱스 필드에 선택된 코덱 모드를 표시하며, G.711.1 코더에 의해서 인코딩된 오디오 프레임을 페이로드 뒷부분에 적재한다.

[그림 9] G.711.1 코덱 SDP 포맷

IV. HD 보이스 어플리케이션 성능 시험

우리는 구현된 HD 보이스 어플리케이션을 성능 시험하기 위해서 안드로이드 초기 레퍼런스폰인 HT 넥서스원을 선택했다. 넥서스원은 퀄컴 QSD8250 프로세서(snapdragon/1GHz/ARM Cortex-A8)가 탑재되어 있다. [그림 10]은 우리가 개발한 안드로이드 기반 HD 보이스 어플리케이션이 스마트폰에 탑재된 상태와 음성 품질을 시험하기 위한 시험 환경을 보여주는 사진이다. 음성 품질 측정 기준인 MOS(Mena of Opinion)값을 객관적으로 측정하기 위해서 측정 장비 중에 가장 많이 사용하고 검증이 된 Malden Electronics 사의 DSLA II(Digital Speech Level Analyzer II) 장비를 선택해서 HD 보이스 어플리케이션의 음성 품질을 측정했다. DSLA 음성 품질 측정 장비는 인공적인 음성 신호를 발생해서 시험 받는 장비를 거쳐서 나오는 결과 신호를 원본 음성 신호와 비교해서 음성 품질을 측정하게 된다. 음성 품질 측정은 ITU-T P.862[11] 표준 문서 기준으로 객관적인 음성 품질을 측정하며, HD 보이스의 음성 품질 측정을 위해서 P.862.2[12] 표준 문서를 지원하는 DSLA 측정 장비의 음성 품질 측정 기능을 이용했다. HD 보이스 어플리케이션이 두 개의 스마트폰에 탑재되었으며, 스마트폰의 마이크/이어폰 포트는 DSLA 장비에서 나오는 음성 품질 측정을 위한 입력/ 출력 신호 잭이 연결 되었다. 음성 픔질 측정은 두 개의 스마트폰에서 나오는 이어폰 포트의 신호를 양방향으로 DLSA에서 잡아서 음성 품질을 측정하게 된다.

[그림 10] HD 보이스 어플리케이션 음성 품질 측정을 위한 시험 환경

[그림 11]은 HD 보이스 어플리케이션의 음성 품질을 측정한 결과를 나타내는 그래프이다. 음성 품질 측정은 HD 보이스 어플리케이션에서 G.711.1, G.722, G.711 코덱을 차례로 선택해서 음성 통화를 연결한 후에, 음성 품질을 측정했다. 또한, 기존에 가장 많이 사용하는 HD 보이스급의 S VoIP(Voice over IP) 어플리케이션에 대해서도 같은 조건에서 음성 품질을 측정했다. 그래프에서 기기존 VoIP 단말에서 사용하는 G.711 코덱을 적용한 어플리케이션의 음성 품질 보다 G.711.1 코덱을 적용한 어플리케이션의 음성 품질이 훨씬 좋은 것을 알 수 있다. 또한, 같은 광대역 코덱이라고 하더라도 G.722 보다는 G.711.1 코덱을 적용한 어플리케이션의 음성 품질이 좋은 것을 알 수 있다. HD 보이스급의 S VoIP 어플리케이션보다는 G.711.1 코덱하에서 우리가 개발한 HD 보이스 어플리케이션의 음성 품질이 좋은 것을 시험 결과를 통해서 알 수 있었다.

[그림 11] HD 보이스 어플리케이션 음성 품질 측정 결과

V. 결론

지금까지 G.711.1 광대역 코덱을 적용한 HD 보이스 스마트폰 어플리케이션의 구조와 개발된 HD 보이스 어플리케이션의 음성 품질 시험 결과를 설명하였다. 개발된 HD 보이스 스마트폰 어플리케이션은 다양한 코덱을 이식학 위한 유연성 있는 구조로 되어 있으며, 코덱 이외에 음성 품질 향상을 위한 기능을 가지고 있다. 또한 개발된 HD 보이스 스마트폰 어플리케이션은 기존 VoIP 단말에서 사용하는 G.711 코덱을 적용한 어플리케이션의 음성 품질, 같은 광대역 코덱인 G.722를 적용한 어플리케이션의 음성 품질, 뿐만 아니라, 기존에 가장 많이 사용하는 HD 보이스급의 S VoIP 어플리케이션의 음성 품질 보다도 좋은 음성 품질 시험 결과가 도출되었다.

앞으로 연구로는 개발된 호 관리자, 미디어 관리자들의 HD 보이스 코어 모듈을 안드로이드 기반 스마트폰이외에 아이폰 기반으로 HD 보이스 어플리케이션을 개발해서 음성 품질을 시험하고자 하며, 기존의 구조에 비디오 기능을 포함한 연구 또한 진행하고자 한다.

References

  1. ITU-T, Geneva, Switzerland, ITU-T G.711 - Pulse code modulation (PCM) of voice frequencies, Nov. 1988.
  2. ITU-T, Geneva, Switzerland, ITU-T G.711.1 - Wideband embedded extension for G.711 pulse code modulation, Mar. 2008.
  3. Yuseke Hiwasaki, Hitoshi Phmuto, IEEE Communications Magazine, "Extending G.711 to Higher-Quality Wideband Speech," Jun.2003, pp. 110-116.
  4. Y. Hiwasaki et al., "G.711.1: A Wideband Extension to ITU-T G.711," Proc. EUSIPCO '08, Lausanne, Aug. 2008.
  5. J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J. Peterson, R. Sparks, M. Handley, E. Schooler, "SIP(Session Initiation Protocol)," IETF RFC 3261, Jun. 2002.
  6. M. Handley, V. Jacobson, C. Perkins, "SDP(Session Description Protocol)," IETF RFC 4566, Jul. 2006.
  7. H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson, "RTP: A Transport Protocol for Real-Time Applicationsm," IETF RFC 3550, Jul. 2003.
  8. M. Baugher, D. McGrew, M. Naslund, E. Carrara, K. Norrman, "SRTP: The Secure Real-time Transport Protocol", IETF RFC 3711, Mar. 2004.
  9. A. Sollaud, "RTP Payload Format for ITU-T Recommendation G.711.1," IETF RFC 5391, Nov. 2008
  10. H. Schulzrinne, S. Casner, "RTP Profile for Audio and Video Conferences with Minimal Control," IETF RFC 3551, Jul. 2003.
  11. ITU-T Recommendation P.862, Perceptual evaluation of speech quality (PESQ): An objective method for end-to-end speech quality assessment of narrow-band telephone networks and speech codecs, Feb. 2001.
  12. ITU-T Recommendation P.862.2, Wideband extension to Recommendation P.862 for the assessment of wideband telephone networks and speech codecs, Nov. 2007.
  13. http://developer.android.com/about/versions/index.html.
  14. www.embeddedworld.co.kr, Mar. 2012.
  15. 김도영, 성종모, 이미숙, 배현주, 이병선, "음성기반 오디오 융합코덱 기술동향," 전자통신동향분석 제24권 제5호, 한국전자통신연구원
  16. Sung, Jongmo, Ko, YunHo, "Transform coding based on source filter model in the MDCT domain," ETRI Journal, Volume 35, Jun. 2013.