국내에서 출시된 안드로이드 기반의 스마트폰은 한국어 TTS 엔진이 내장되어 있지 않고, 구글에서도 공식적인 한국어 TTS 기술 개발을 발표하지 않고 있는 상황이다. 따라서 안드로이드 스마트폰을 사용하는 어플리케이션 개발자 및 사용자들의 불편이 갈수록 심해져 가고 있다. 본 논문은 안드로이드 기반의 스마트폰에서 서비스할 수 있는 TTS시스템의 설계 및 구현에 대해 기술하였다. 신속 명료한 TTS를 위해 안드로이드 NDK를 이용하여 텍스트 전처리와 합성음 생성 라이브러리를 구현하였다. 또한, 자바의 스레드 기법과 스트림을 적용한 AudioTrack 클래스 객체를 사용하여 TTS 응답시간을 최소화 하였다. 구현된 한국어 TTS 서비스를 테스트하기 위해 수신된 문자메시지를 읽어주는 어플리케이션을 설계 및 개발하였다. 평가 결과, 임의의 문장에 대해 자연스러운 합성음을 생성하였으며, 실시간 청취가 가능하였다. 또한, 어플리케이션 개발자들은 구현된 한국어 TTS 서비스를 이용하여 음성을 통한 정보 전달을 손쉽게 적용할 수 있다. 본 논문에서 구현한 한국어 TTS 서비스는 기존 제한적 음성합성 방식의 어플리케이션의 단점을 개선하였으며, 음성을 통한 정보전달 어플리케이션 개발자 및 사용자들에게 사용성과 편의성을 제공할 수 있다.
국내에서 출시된 안드로이드 기반의 스마트폰은 한국어 TTS 엔진이 내장되어 있지 않고, 구글에서도 공식적인 한국어 TTS 기술 개발을 발표하지 않고 있는 상황이다. 따라서 안드로이드 스마트폰을 사용하는 어플리케이션 개발자 및 사용자들의 불편이 갈수록 심해져 가고 있다. 본 논문은 안드로이드 기반의 스마트폰에서 서비스할 수 있는 TTS시스템의 설계 및 구현에 대해 기술하였다. 신속 명료한 TTS를 위해 안드로이드 NDK를 이용하여 텍스트 전처리와 합성음 생성 라이브러리를 구현하였다. 또한, 자바의 스레드 기법과 스트림을 적용한 AudioTrack 클래스 객체를 사용하여 TTS 응답시간을 최소화 하였다. 구현된 한국어 TTS 서비스를 테스트하기 위해 수신된 문자메시지를 읽어주는 어플리케이션을 설계 및 개발하였다. 평가 결과, 임의의 문장에 대해 자연스러운 합성음을 생성하였으며, 실시간 청취가 가능하였다. 또한, 어플리케이션 개발자들은 구현된 한국어 TTS 서비스를 이용하여 음성을 통한 정보 전달을 손쉽게 적용할 수 있다. 본 논문에서 구현한 한국어 TTS 서비스는 기존 제한적 음성합성 방식의 어플리케이션의 단점을 개선하였으며, 음성을 통한 정보전달 어플리케이션 개발자 및 사용자들에게 사용성과 편의성을 제공할 수 있다.
Though Android-based smart phones are being released in Korea, Korean TTS engine is not built on them and Google has not announced service or software developer's kit related to Korean TTS officially. Thus, application developers who want to include Korean TTS capability in their application have di...
Though Android-based smart phones are being released in Korea, Korean TTS engine is not built on them and Google has not announced service or software developer's kit related to Korean TTS officially. Thus, application developers who want to include Korean TTS capability in their application have difficulties. In this paper, we design and implement Android OS-based Korean TTS system and service. For speed, text preprocessing and synthesis libraries are implemented using Android NDK. By using Java's thread mechanism and the AudioTrack class, the response time of TTS is minimized. For the test of implemented service, an application that reads incoming SMS is developed. The test shows that synthesized speech are generated in real-time for random sentences. By using the implemented Korean TTS service, Android application developers can transmit information easily through voice. Korean TTS service proposed and implemented in this paper overcomes shortcomings of the existing restrictive synthesis methods and provides the benefit for application developers and users.
Though Android-based smart phones are being released in Korea, Korean TTS engine is not built on them and Google has not announced service or software developer's kit related to Korean TTS officially. Thus, application developers who want to include Korean TTS capability in their application have difficulties. In this paper, we design and implement Android OS-based Korean TTS system and service. For speed, text preprocessing and synthesis libraries are implemented using Android NDK. By using Java's thread mechanism and the AudioTrack class, the response time of TTS is minimized. For the test of implemented service, an application that reads incoming SMS is developed. The test shows that synthesized speech are generated in real-time for random sentences. By using the implemented Korean TTS service, Android application developers can transmit information easily through voice. Korean TTS service proposed and implemented in this paper overcomes shortcomings of the existing restrictive synthesis methods and provides the benefit for application developers and users.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 안드로이드 OS 기반의 TTS 시스템을 제안하고 한국어 TTS 서비스를 구현하였다. 구현된 한국어 TTS 서비스를 테스트하기 위해 SMS Reader 어플리케이션을 설계 및 개발, 구현하여 제안된 한국어 TTS 서비스의 효용을 검증하였다.
이에 본 논문에서는 기존의 음절편집합성 방식의 어플리케이션의 단점을 개선하며, 안드로이드 어플리케이션 사용자들에게 사용성과 편의성을 제공할 수 있도록 안드로이드 OS 기반의 한국어 TTS 서비스를 설계하고 구현하였다.
제안 방법
본 논문에서는 안드로이드 OS 기반의 TTS 시스템을 제안하고 한국어 TTS 서비스를 구현하였다. 구현된 한국어 TTS 서비스를 테스트하기 위해 SMS Reader 어플리케이션을 설계 및 개발, 구현하여 제안된 한국어 TTS 서비스의 효용을 검증하였다.
구현된 한국어 TTS 서비스의 텍스트 전처리 라이브러리는 한국어 발음 규칙에 따라 합성음을 듣는 사용자가 자연스럽고 이해하기 쉽게끔 입력된 텍스트 정보의 음소 기호 처리가 이루어지도록 구현하였다. 합성음 생성부에서는 신속한 무제한 합성이 가능하도록 구현하기 위해 HMM 기반 음성 합성 방식의 라이브러리를 생성하였으며, 훈련된 HMM 파라미터들을 사용하였다.
우선 주어진 텍스트를 문맥종속 레이블 열로 변환하고 레이블 열에 따라 대응하는 문맥종속 HMM 모델을 연결함으로써 문장 HMM 모델을 만든다. 그리고 문장 HMM에서 상태지속시간 모델을 기반으로 각 상태의 지속시간을 결정하고, HMM의 관측확률이 최대가 되는 스펙트럼과 특징 파라미터들을 결정한다. 마지막으로 생성된 스펙트럼과 특징 파라미터들로부터 MLSA(Mel Log Spectrum Approximation) 필터를 통해 합성음을 만들어 낸다.
또한, 이러한 개발 툴은 안드로이드 개발자 웹페이지에서 무료로 배포되고 있다. 따라서 신속한 TTS 처리를 위해 아래 [그림 4]의 순서에 따라 안드로이드 NDK를 이용하여 두 개의 라이브러리를 구현하였다.
합성음 생성부에서는 신속한 무제한 합성이 가능하도록 구현하기 위해 HMM 기반 음성 합성 방식의 라이브러리를 생성하였으며, 훈련된 HMM 파라미터들을 사용하였다. 또한, 합성음의 생성과 재생을 동시에 수행하기 위해 스트림이 적용된 AudioTrack 클래스 객체와 자바의 스레드 기법을 사용하여 사용자의 TTS 요청에 대한 응답시간을 최소화하였다.
훈련에 사용된 문장 수는 1,000개이며, 음성신호는 16kHz 샘플링에 16bits로 양자화되었다. 멜 캡스트럼과 로그 기본주파수(log F0 ), 그리고 이들의 차분값(Delta coefficients), 차분-차분값(Acceleration coefficients) 등 75개의 값을 산출하여 특징벡터의 스펙트럼 파라미터로 사용하였다. HMM에 의한 음성모델링에서의 음성 신호는 단순 좌우 천이(Left-to-Right topology)만을 갖는 HMM으로 모델링되며, 각 상태에서는 특징벡터가 출력된다.
본 논문에서 구현된 한국어 TTS 서비스를 테스트하기 위해 문자 메시지를 읽어주는 어플리케이션(SMS Reader)을 설계하였다. 이 어플리케이션은 사용자에게 문자 메시지가 수신되면 자동으로 활성화되어 실행할 수 있게 설계하였다.
본 논문에서 제안하는 한국어 TTS 시스템의 구조는[그림 3]과 같이 TTS 요청을 수행하는 어플리케이션들과 이러한 요청을 받아 텍스트 정보를 음성으로 합성해 재생시켜 주는 서비스로 이루어진다.
사용자의 요청에 의해 생성되는 합성음의 실시간 재생을 위해서 한국어 TTS 서비스에 자바 스트림 버퍼(Java Stream Buffer)를 이용한 오디오 트랙(AudioTrack) 객체를 적용하였다. 또한, 합성음 생성과 합성음 재생의 병렬화를 위해 스레드(Java Thread) 기법을 적용하였다.
오픈 소스인 HTS 엔진을 이용하여 합성음 생성 라이브러리 모듈을 구현하였다[11]. 입력된 문장에 대하여 HMM 훈련 과정을 통해 산출된 문맥종속 HMM 모델들의 관측 확률값이 최대가 되는 스펙트럼과 특징 파라미터, 상태지속시간 모델들을 결정하고 연결하여 MLSA 필터를 통해 합성음을 만들어 낸다.
아래 [그림 2]는 HMM 합성 과정을 나타낸다. 우선 주어진 텍스트를 문맥종속 레이블 열로 변환하고 레이블 열에 따라 대응하는 문맥종속 HMM 모델을 연결함으로써 문장 HMM 모델을 만든다. 그리고 문장 HMM에서 상태지속시간 모델을 기반으로 각 상태의 지속시간을 결정하고, HMM의 관측확률이 최대가 되는 스펙트럼과 특징 파라미터들을 결정한다.
음성 합성을 위한 텍스트의 전처리 성능의 고도화를 위해서는 한국어 형태소 해석기와 대규모의 사전이 필요하나 본 논문에서는 안드로이드 OS 단말기에서의 동작 속도와 저장 공간을 고려하여 형태소 해석이 필요 없는 한국어 읽기 규칙만을 적용하였다[10]. 본 논문에서 구현된 텍스트 전처리 라이브러리에 적용된 규칙은 총 21개이며, 읽기 규칙에 의해 해결되지 않는 예외 발음은 예외 발음 사전을 이용하여 해결하였다.
오픈 소스인 HTS 엔진을 이용하여 합성음 생성 라이브러리 모듈을 구현하였다[11]. 입력된 문장에 대하여 HMM 훈련 과정을 통해 산출된 문맥종속 HMM 모델들의 관측 확률값이 최대가 되는 스펙트럼과 특징 파라미터, 상태지속시간 모델들을 결정하고 연결하여 MLSA 필터를 통해 합성음을 만들어 낸다.
구현된 한국어 TTS 서비스의 텍스트 전처리 라이브러리는 한국어 발음 규칙에 따라 합성음을 듣는 사용자가 자연스럽고 이해하기 쉽게끔 입력된 텍스트 정보의 음소 기호 처리가 이루어지도록 구현하였다. 합성음 생성부에서는 신속한 무제한 합성이 가능하도록 구현하기 위해 HMM 기반 음성 합성 방식의 라이브러리를 생성하였으며, 훈련된 HMM 파라미터들을 사용하였다. 또한, 합성음의 생성과 재생을 동시에 수행하기 위해 스트림이 적용된 AudioTrack 클래스 객체와 자바의 스레드 기법을 사용하여 사용자의 TTS 요청에 대한 응답시간을 최소화하였다.
대상 데이터
HMM 문맥종속 음향모델을 만들기 위해 원광대학교 음성정보기술산업지원센터에서 제작한 합성용 음성 DB를 사용하였다[8]. 훈련에 사용된 문장 수는 1,000개이며, 음성신호는 16kHz 샘플링에 16bits로 양자화되었다.
본 논문에서 구현된 텍스트 전처리 라이브러리에 적용된 규칙은 총 21개이며, 읽기 규칙에 의해 해결되지 않는 예외 발음은 예외 발음 사전을 이용하여 해결하였다. 본 논문에서 사용된 예외 발음은 약 5,400개 정도이다. 따라서 본 논문에서 사용된 텍스트 전처리기의 성능은 형태소 해석기를 사용하는 서버 기반의 전처리기에 비하여 제한된 성능을 갖는다.
이론/모형
사용자의 요청에 의해 생성되는 합성음의 실시간 재생을 위해서 한국어 TTS 서비스에 자바 스트림 버퍼(Java Stream Buffer)를 이용한 오디오 트랙(AudioTrack) 객체를 적용하였다. 또한, 합성음 생성과 합성음 재생의 병렬화를 위해 스레드(Java Thread) 기법을 적용하였다. 앞서 설명한 합성음 생성 라이브러리의 소스코드를 수정하여 네이티브 함수(Native Function)로부터 만들어진 합성음을 프레임 단위로 자바 스트림 버퍼에 누적시키며, 합성음 재생을 위한 조건이 만족되면 바로 합성음 청취가 가능하게 됨으로써 합성음 청취 소요시간을 단축시킬 수 있다.
성능/효과
본 논문에서 사용된 예외 발음은 약 5,400개 정도이다. 따라서 본 논문에서 사용된 텍스트 전처리기의 성능은 형태소 해석기를 사용하는 서버 기반의 전처리기에 비하여 제한된 성능을 갖는다.
음성 합성을 위한 텍스트의 전처리 성능의 고도화를 위해서는 한국어 형태소 해석기와 대규모의 사전이 필요하나 본 논문에서는 안드로이드 OS 단말기에서의 동작 속도와 저장 공간을 고려하여 형태소 해석이 필요 없는 한국어 읽기 규칙만을 적용하였다[10]. 본 논문에서 구현된 텍스트 전처리 라이브러리에 적용된 규칙은 총 21개이며, 읽기 규칙에 의해 해결되지 않는 예외 발음은 예외 발음 사전을 이용하여 해결하였다. 본 논문에서 사용된 예외 발음은 약 5,400개 정도이다.
삼성전자에서 출시한 “갤럭시 S” 단말기에서 80Bytes의 문자 정보를 합성음으로 생성한 결과 약 2초 만에 합성음 청취가 가능하였다.
삼성전자에서 출시한 “갤럭시 S” 단말기에서 80Bytes의 문자 정보를 합성음으로 생성한 결과 약 2초 만에 합성음 청취가 가능하였다. 테스트를 수행한 단말기의 제원을 고려했을 때 개발 초기의 우려와는 다르게 신속한 TTS 처리가 가능했음을 알 수 있었다. 또한, 수신된 문자 메시지 텍스트 정보는 한국어 TTS 서비스에 내장된 텍스트 전처리 라이브러리를 통해 듣기 자연스러운 합성음으로 재생되었다.
후속연구
안드로이드 스마트폰 기반의 다양한 어플리케이션(기상, 증권, 뉴스, 이메일, eBook, 지식, 쇼핑 등)에 구현된 한국어 TTS 서비스를 적용한다면 더욱 효율적이고 사용자 편의적인 정보 전달이 가능할 것이다.
향후 연구 과제로는 텍스트 전처리 수행 시 비문법적 표현에 대한 예외처리 등을 보완하여 텍스트 전처리 라이브러리의 성능을 개선하는 것과, 합성음 품질 개선 및 목소리의 추가이다.
질의응답
핵심어
질문
논문에서 추출한 답변
HMM 기반의 TTS 방법은 무엇인가?
최근 많이 연구되고 있는 HMM(Hidden Markov Model) 기반의 TTS 방법은 음성 신호를 특징 파라미터 형태로 변환하여 통계적으로 모델링해 각 음소의 대표값을 산출하여 합성음을 생성하는 방식으로, 기존의 코퍼스(Corpus) 방식의 TTS에 비해 시스템의 용량이 작아 개인 단말기에서도 TTS 시스템을 탑재시킬 수 있다[7]. 또한, 합성음의 의미파악도 전혀 문제가 없을 정도의 합성음 품질을 보여준다.
HMM 기반의 TTS에서 합성음 품질상태는 어떠한가?
최근 많이 연구되고 있는 HMM(Hidden Markov Model) 기반의 TTS 방법은 음성 신호를 특징 파라미터 형태로 변환하여 통계적으로 모델링해 각 음소의 대표값을 산출하여 합성음을 생성하는 방식으로, 기존의 코퍼스(Corpus) 방식의 TTS에 비해 시스템의 용량이 작아 개인 단말기에서도 TTS 시스템을 탑재시킬 수 있다[7]. 또한, 합성음의 의미파악도 전혀 문제가 없을 정도의 합성음 품질을 보여준다. HMM 기반의 TTS는 훈련과 합성 부분으로 구분된다.
스마트폰에서 TTS 기술을 사용하기 위해 필요한 요소는 무엇인가?
스마트폰에서 TTS 기술을 사용하기 위한 요소로는고품질 합성음을 생성하기 위한 음성 DB 용량과 신속한 TTS를 위한 CPU 성능을 꼽을 수 있다. 기존의 PC 및 서버 환경에서 사용할 수 있는 TTS 기술은 종류와 방식이 다양하지만, 안드로이드 기반의 스마트폰에 한국어 TTS 기술을 적용하는 것은 위와 같은 이유 때문에 국내에서 그 적용 사례를 찾을 수 없고, 공식 배포된 어플리케이션 또한 찾아보기 힘들다.
고석훈, "안드로이드 플랫폼 동향", 한국콘텐츠학회지, 제8권, 제2호, pp.11-122, 2010.
한국소비자원 정보교육국 소비자 정보팀, 스마트폰 이용 만족도 비교정보 조사 결과, 2010.
한국정보통신기술협회(TTA) 웹 표준화 프로젝트 그룹(PG605), 모바일 접근성, 2010.
김종진, 김정세, 김상훈, 박준, 내장형 TTS 기술 동향 및 사례, 전자통신동향분석, 제23권, 제1호, 2008.
T. Yoshimura, K. Tokuda, T. Masuko, T. Kobayashi, and T. Kitamura, "Simultaneous Modeling of Spectrum, Pitch and Duration in HMM-Based Speech Synthesis," Proc. of EUROSPEECH, Vol.5, pp.2347-2350, 1999.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.