자바 음성 API
Java Speech API이 글은 광고처럼 쓰인 내용을 담고 있다. 한 외부 링크를 하고에서 콘텐츠를 2017년 4월)(이 템플릿 하는 방법 및 학습 |
자바 스피치 API(Java Speech API, JSAPI)는 명령어 및 제어 인식자, 받아쓰기 시스템, 음성 합성기의 교차 플랫폼 지원을 위한 애플리케이션 프로그래밍 인터페이스다.JSAPI는 인터페이스를 정의하지만, 예를 들어 Free와 같이 제3자에 의해 생성된 몇 가지 구현이 있다.TTS.
핵심 기술
자바 스피치 API를 통해 음성합성과 음성인식이라는 두 가지 핵심 음성기술이 지원된다.
음성 합성
음성 합성은 응용 프로그램, 애플릿 또는 사용자에 의해 생성된 텍스트로부터 합성 음성을 생산하는 역 과정을 제공한다.흔히 문자 대 음성 기술이라고 한다.
텍스트에서 발음을 만드는 주요 단계는 다음과 같다.
- 구조 분석:입력 텍스트를 처리하여 문단, 문장 및 기타 구조물의 시작과 끝을 결정한다.대부분의 언어의 경우 문장 부호 및 형식 지정 데이터가 이 단계에서 사용된다.
- 텍스트 사전 처리: 언어의 특수 구성에 대한 입력 텍스트 분석.영어에서는 약어, 두문자어, 날짜, 시간, 숫자, 통화량, 전자우편 주소, 그리고 많은 다른 형태에 대해 특별한 치료가 필요하다.다른 언어들은 이러한 형태들을 위한 특별한 처리가 필요하며, 대부분의 언어들은 다른 전문화된 요구조건들을 가지고 있다.
이 처음 두 단계의 결과는 쓰여진 텍스트의 구어 형태다.다음은 쓰여진 텍스트와 구어체의 차이점 예시들이다.
성 마태복음 병원은 메인 세인트 ->>"성 마태복음 병원은 메인 스트리트" 55374에 20달러 추가. -> "5달러, 3달러 74센트에 20달러 추가"
나머지 단계는 구어 텍스트를 음성으로 변환한다.
- 텍스트 대 포네임 변환:각 단어를 음운으로 변환한다.음핵은 언어에서 소리의 기본 단위다.
- 프로소디 분석:문장 구조, 단어 및 음소를 처리하여 문장에 적합한 프로소디를 결정한다.
- 파형 생산:각 문장에 대한 오디오 파형을 생성하기 위해 음소 및 프로소디 정보를 사용한다.
음성 합성기는 위에서 설명한 처리 단계에서 오류를 발생시킬 수 있다.인간의 귀는 이러한 오류를 감지하도록 잘 조정되어 있지만, 개발자들의 세심한 작업이 오류를 최소화하고 음성 출력 품질을 향상시킬 수 있다.자바 스피치 API 1은 자바 스피치 API Markup Language(JSML)에 의존한 반면, 최신 릴리즈는 SSML을 활용하여 음성 합성기의 출력 품질을 향상시킬 수 있는 여러 가지 방법을 제공한다.
음성인식
음성 인식은 컴퓨터에게 구어를 듣고 말한 것을 결정할 수 있는 능력을 제공한다.즉, 음성이 포함된 오디오 입력을 텍스트로 변환하여 처리한다.
일반적인 음성 인식기의 주요 단계는 다음과 같다.
- 문법 설계:사용자가 말할 수 있는 단어와 말할 수 있는 패턴을 정의한다.
- 신호 처리: 수신 오디오의 스펙트럼(즉, 주파수) 특성을 분석한다.
- 음소 인식:스펙트럼 패턴을 인식되고 있는 언어의 음소 패턴과 비교한다.
- 단어 인식:가능한 음소의 순서를 활성 문법에서 지정한 단어와 패턴과 비교한다.
- 결과 생성: 인식자가 수신 오디오에서 탐지한 단어에 대한 정보를 응용 프로그램에 제공.
문법은 사용자가 어떤 단어를 말할 것으로 기대되며 어떤 패턴이 발생할 수 있는지를 나타내는 자바 스피치 API의 객체다.문법은 인식 과정을 제약하기 때문에 음성 인식자에게 중요하다.이러한 제약조건은 인식자가 엽기적인 문장을 확인할 필요가 없기 때문에 보다 빠르고 정확하게 인식하게 한다.
자바 스피치 API 1은 규칙 문법과 받아쓰기 문법의 두 가지 기본 문법을 지원한다.이러한 유형은 응용 프로그램이 그래머를 설정하는 방법, 허용 문장의 유형, 결과 제공 방법, 필요한 계산 리소스의 양, 응용 프로그램 설계에 사용되는 방법 등 다양한 방식으로 다르다.규칙 문법은 JSGF에 의해 JSAPI 1에서 정의된다. Java 음성 문법 형식이다.새로운 JSAPI 2는 보다 최신의 SRGS 형식을 지원한다.JSAPI 2는 받아쓰기를 지원하지 않는다.
Java 음성 API의 클래스 및 인터페이스
Java 음성 API를 구성하는 다른 클래스 및 인터페이스는 다음과 같은 세 가지 패키지로 그룹화된다.
- javax.speech: 일반 음성 엔진의 클래스 및 인터페이스 포함
- havax.properties.properties:음성 합성을 위한 클래스 및 인터페이스를 포함한다.
- Javax.properties.recognition:음성 인식을 위한 클래스 및 인터페이스 포함.
EngineManager 클래스는 모든 Java Speech API 애플리케이션이 사용하는 공장 클래스와 같다.음성 합성 및 음성 인식 엔진에 접근할 수 있는 정적 방법을 제공한다.엔진 인터페이스는 자바 스피치 API 호환 음성 엔진이 음성 애플리케이션에 제공해야 하는 일반적인 작동을 캡슐화한다.
음성 애플리케이션은 주로 음성 엔진의 특성 및 상태 검색, 음성 엔진에 대한 자원 할당 및 할당 해제와 같은 작업을 수행하는 방법을 사용할 수 있다.또한 엔진 인터페이스는 음성 엔진에 의해 생성되거나 처리되는 오디오 스트림을 일시 중지하고 재개하는 메커니즘을 제공한다.오디오 매니저는 스트림을 조작할 수 있다.엔진 인터페이스는 추가 음성 합성 및 음성 인식 기능을 정의하는 신디사이저와 인식기 인터페이스에 의해 세분화된다.신디사이저 인터페이스는 음성 애플리케이션을 위한 자바 음성 API 호환 음성 합성 엔진의 작동을 캡슐화한다.
자바 스피치 API는 이벤트 처리를 기반으로 한다.음성 엔진에서 생성된 이벤트는 식별하고 필요에 따라 처리할 수 있다.음성 이벤트는 EngineListener 인터페이스를 통해, 특히 IncognizerListener와 SyntheticsizerListener를 통해 처리할 수 있다.
관련 사양
자바 스피치 API는 자바 커뮤니티 프로세스(JCP) 이전에 작성된 것으로 자바 플랫폼 표준 에디션(Java SE)을 대상으로 했다.그 후 JCP 하에서는 Java Speech API 2(JSAPI2)가 JSR 113으로 생성되었다.이 API는 Java Platform, Micro Edition(Java ME)을 대상으로 하지만 Java SE를 준수한다.
참조
- Sun/Oracle별 Java 음성 API FAQ
- JSAPI 1용 JavaDocs
- 오픈 소스 JSAPI 2 래퍼
- 이 기술은 다양한 보안 목적으로 사용됨