public final class

Action.VoiceRecognition

org.smartrobot.android.action.Action.VoiceRecognition

Class Overview

폰의 마이크를 통해 음성을 인식하는 액션의 모델 ID와 각 디바이스의 ID에 대한 상수 값을 정의한다.

Action.VoiceRecognition은 7개의 커맨드 디바이스와 1개의 센서 디바이스, 1개의 이벤트 디바이스로 구성되어 있으며, 각 디바이스의 데이터는 스트링 배열 또는 정수형 배열, 실수형 배열로 선언되어 있다.

종류 디바이스 ID 디바이스 이름 데이터 형 배열 크기 단위 값의 범위 초기 값
커맨드 COMMAND_LANGUAGE_MODEL "LanguageModel" String [ ] 1 "free_form"
커맨드 COMMAND_LANGUAGE "Language" String [ ] 1 ""
커맨드 COMMAND_COUNTRY "Country" String [ ] 1 ""
커맨드 COMMAND_VARIANT "Variant" String [ ] 1 ""
커맨드 COMMAND_VISIBILITY "Visibility" int [ ] 1 0 또는 1 (0: 대화창 감추기, 1: 대화창 보이기) 1
커맨드 COMMAND_PROMPT "Prompt" String [ ] 1 ""
커맨드 COMMAND_MAX_RESULTS "MaxResults" int [ ] 1 0 ~ 255 5
센서 SENSOR_MIC_LEVEL "MicLevel" float [ ] 1 dB -100 ~ 100 -100
이벤트 EVENT_TEXT "Text" String [ ] -1 ""

  • COMMAND_LANGUAGE_MODEL
    음성 인식의 언어 모델을 나타낸다. "free_form" 또는 "web_search" 중의 하나이다.
  • COMMAND_LANGUAGE
    음성 인식의 로케일에서 언어 코드를 나타낸다. 설정하지 않으면 기본 언어 코드를 사용한다.
  • COMMAND_COUNTRY
    음성 인식의 로케일에서 국가 코드를 나타낸다. 설정하지 않으면 기본 국가 코드를 사용한다.
  • COMMAND_VARIANT
    음성 인식의 로케일에서 이형(異形) 코드를 나타낸다. 설정하지 않으면 기본 이형(異形) 코드를 사용한다.
  • COMMAND_VISIBILITY
    음성 인식 대화창을 나타나게 할지 감출지의 여부를 나타낸다.
  • COMMAND_PROMPT
    음성 인식 대화창에 표시할 문자열을 나타낸다.
  • COMMAND_MAX_RESULTS
    음성 인식 결과 후보의 최대 개수를 나타낸다.
  • SENSOR_MIC_LEVEL
    폰의 마이크를 통해 입력된 소리의 크기(RMS)를 데시벨로 나타낸다. 소리가 커질수록 값이 커진다.
  • EVENT_TEXT
    음성 인식된 결과 문자열을 스트링 배열로 나타낸다. 스트링 배열의 크기는 음성 인식 결과 후보의 최대 개수로 설정된 값과 같다.

Action.VoiceRecognition은 음성 인식이 완료되면 onCompleted(Action) 메소드를 호출한다.

 void someMethod(Action action)
 {
     Device deviceLanguageModel = action.findDeviceById(Action.VoiceRecognition.COMMAND_LANGUAGE_MODEL);
     deviceLanguageModel.writeString("free_form"); // 언어 모델을 쓴다.

     Device deviceLanguage = action.findDeviceById(Action.VoiceRecognition.COMMAND_LANGUAGE);
     deviceLanguage.writeString("ko"); // 로케일의 언어 코드를 쓴다.

     Device deviceCountry = action.findDeviceById(Action.VoiceRecognition.COMMAND_COUNTRY);
     deviceCountry.writeString("KR"); // 로케일의 국가 코드를 쓴다.

     Device deviceVariant = action.findDeviceById(Action.VoiceRecognition.COMMAND_VARIANT);
     deviceVariant.writeString("POSIX"); // 로케일의 이형(異形) 코드를 쓴다.

     Device deviceVisibility = action.findDeviceById(Action.VoiceRecognition.COMMAND_VISIBILITY);
     deviceVisibility.write(1); // 대화창을 나타나게 한다.

     Device devicePrompt = action.findDeviceById(Action.VoiceRecognition.COMMAND_PROMPT);
     devicePrompt.writeString("말씀하세요"); // 대화창에 표시할 문자열을 쓴다.

     Device deviceMaxResults = action.findDeviceById(Action.VoiceRecognition.COMMAND_MAX_RESULTS);
     deviceMaxResults.write(5); // 인식 결과 후보는 최대 5개로 한다.

     Device deviceMicLevel = action.findDeviceById(Action.VoiceRecognition.SENSOR_MIC_LEVEL);
     float micLevel = deviceMicLevel.readFloat(); // 마이크의 소리 크기 값을 읽는다.

     Device deviceText = action.findDeviceById(Action.VoiceRecognition.EVENT_TEXT);
     if(deviceText.e())
     {
         String[] results = new String[5];
         deviceText.readString(results); // 인식 결과를 읽는다.
     }
 }

 @Override
 public void onDeviceDataChanged(Device device, Object values, long timestamp)
 {
     float micLevel;
     String[] results;
     switch(device.getId())
     {
     case Action.VoiceRecognition.SENSOR_MIC_LEVEL: // 마이크의 소리 크기 값이 갱신되었다.
         micLevel = ((float[])values)[0]; // 마이크의 소리 크기 값을 얻는다.
         break;
     case Action.VoiceRecognition.EVENT_TEXT: // 음성 인식 결과 값이 갱신되었다.
         results = (String[])values; // 음성 인식 결과 값을 얻는다.
         break;
     }
 }

Summary

Constants
int COMMAND_COUNTRY 국가 커맨드 디바이스의 ID를 나타내는 상수.
int COMMAND_LANGUAGE 언어 커맨드 디바이스의 ID를 나타내는 상수.
int COMMAND_LANGUAGE_MODEL 언어 모델 커맨드 디바이스의 ID를 나타내는 상수.
int COMMAND_MAX_RESULTS 최대 결과 수 커맨드 디바이스의 ID를 나타내는 상수.
int COMMAND_PROMPT 프롬프트 커맨드 디바이스의 ID를 나타내는 상수.
int COMMAND_VARIANT 이형(異形) 커맨드 디바이스의 ID를 나타내는 상수.
int COMMAND_VISIBILITY 보이기 커맨드 디바이스의 ID를 나타내는 상수.
int ERROR_AUDIO 마이크 입력에 문제가 있음을 나타내는 오류 코드 상수.
int ERROR_CLIENT 애플리케이션 측에 문제가 있음을 나타내는 오류 코드 상수.
int ERROR_NETWORK 네트워크에 문제가 있음을 나타내는 오류 코드 상수.
int ERROR_NETWORK_TIMEOUT 네트워크 시간 초과를 나타내는 오류 코드 상수.
int ERROR_NO_MATCH 인식 결과가 없음을 나타내는 오류 코드 상수.
int ERROR_RECOGNIZER_BUSY 처리할 음성 데이터가 너무 많아 입력된 음성 데이터를 처리하지 못함을 나타내는 오류 코드 상수.
int ERROR_SERVER 음성 인식 서버 측에 문제가 있음을 나타내는 오류 코드 상수.
int ERROR_SPEECH_TIMEOUT 주어진 시간 내에 음성을 입력하지 않았음을 나타내는 오류 코드 상수.
int EVENT_TEXT 문장 이벤트 디바이스의 ID를 나타내는 상수.
String ID VoiceRecognition 액션의 모델 ID를 나타내는 상수.
int SENSOR_MIC_LEVEL 음량 센서 디바이스의 ID를 나타내는 상수.
int STATE_BEGINNING_OF_SPEECH 마이크 입력에서 음성이 시작된 상태를 나타내는 상수.
int STATE_END_OF_SPEECH 마이크 입력에서 음성이 끝난 상태를 나타내는 상수.
int STATE_READY_FOR_SPEECH 마이크 입력으로 음성을 받아들일 준비가 된 상태를 나타내는 상수.

Constants

public static final int COMMAND_COUNTRY

라이브러리 버전 1.0.0부터

국가 커맨드 디바이스의 ID를 나타내는 상수.

국가 커맨드 디바이스의 데이터는 음성 인식의 로케일에서 국가 코드를 나타낸다. 설정하지 않으면 기본 국가 코드를 사용한다.

Action 클래스의 activate() 메소드를 호출하기 전에 설정해야 한다.

  • 상수 값: 0x40100002
  • 디바이스의 데이터 배열
    • 데이터 형: String [ ]
    • 배열 크기: 1
    • 초기 값: ""

public static final int COMMAND_LANGUAGE

라이브러리 버전 1.0.0부터

언어 커맨드 디바이스의 ID를 나타내는 상수.

언어 커맨드 디바이스의 데이터는 음성 인식의 로케일에서 언어 코드를 나타낸다. 설정하지 않으면 기본 언어 코드를 사용한다.

Action 클래스의 activate() 메소드를 호출하기 전에 설정해야 한다.

  • 상수 값: 0x40100001
  • 디바이스의 데이터 배열
    • 데이터 형: String [ ]
    • 배열 크기: 1
    • 초기 값: ""

public static final int COMMAND_LANGUAGE_MODEL

라이브러리 버전 1.0.0부터

언어 모델 커맨드 디바이스의 ID를 나타내는 상수.

언어 모델 커맨드 디바이스의 데이터는 음성 인식의 언어 모델을 나타낸다. "free_form" 또는 "web_search" 중의 하나이다.

Action 클래스의 activate() 메소드를 호출하기 전에 설정해야 한다.

  • 상수 값: 0x40100000
  • 디바이스의 데이터 배열
    • 데이터 형: String [ ]
    • 배열 크기: 1
    • 초기 값: "free_form"

public static final int COMMAND_MAX_RESULTS

라이브러리 버전 1.0.0부터

최대 결과 수 커맨드 디바이스의 ID를 나타내는 상수.

최대 결과 수 커맨드 디바이스의 데이터는 음성 인식 결과 후보의 최대 개수를 나타낸다.

Action 클래스의 activate() 메소드를 호출하기 전에 설정해야 한다.

  • 상수 값: 0x40100006
  • 디바이스의 데이터 배열
    • 데이터 형: int [ ]
    • 배열 크기: 1
    • 값의 범위: 0 ~ 255
    • 초기 값: 5

public static final int COMMAND_PROMPT

라이브러리 버전 1.0.0부터

프롬프트 커맨드 디바이스의 ID를 나타내는 상수.

프롬프트 커맨드 디바이스의 데이터는 음성 인식 대화창에 표시할 문자열을 나타낸다.

Action 클래스의 activate() 메소드를 호출하기 전에 설정해야 한다.

  • 상수 값: 0x40100005
  • 디바이스의 데이터 배열
    • 데이터 형: String [ ]
    • 배열 크기: 1
    • 초기 값: ""

public static final int COMMAND_VARIANT

라이브러리 버전 1.0.0부터

이형(異形) 커맨드 디바이스의 ID를 나타내는 상수.

이형(異形) 커맨드 디바이스의 데이터는 음성 인식의 로케일에서 이형(異形) 코드를 나타낸다. 설정하지 않으면 기본 이형(異形) 코드를 사용한다.

Action 클래스의 activate() 메소드를 호출하기 전에 설정해야 한다.

  • 상수 값: 0x40100003
  • 디바이스의 데이터 배열
    • 데이터 형: String [ ]
    • 배열 크기: 1
    • 초기 값: ""

public static final int COMMAND_VISIBILITY

라이브러리 버전 1.0.0부터

보이기 커맨드 디바이스의 ID를 나타내는 상수.

보이기 커맨드 디바이스의 데이터는 음성 인식 대화창을 나타나게 할지 감출지의 여부를 나타낸다.

Action 클래스의 activate() 메소드를 호출하기 전에 설정해야 한다.

  • 상수 값: 0x40100004
  • 디바이스의 데이터 배열
    • 데이터 형: int [ ]
    • 배열 크기: 1
    • 값의 범위: 0 또는 1 (0: 대화창 감추기, 1: 대화창 보이기)
    • 초기 값: 1

public static final int ERROR_AUDIO

라이브러리 버전 1.0.0부터

마이크 입력에 문제가 있음을 나타내는 오류 코드 상수.

  • 상수 값: -103

public static final int ERROR_CLIENT

라이브러리 버전 1.0.0부터

애플리케이션 측에 문제가 있음을 나타내는 오류 코드 상수.

  • 상수 값: -105

public static final int ERROR_NETWORK

라이브러리 버전 1.0.0부터

네트워크에 문제가 있음을 나타내는 오류 코드 상수.

  • 상수 값: -102

public static final int ERROR_NETWORK_TIMEOUT

라이브러리 버전 1.0.0부터

네트워크 시간 초과를 나타내는 오류 코드 상수.

  • 상수 값: -101

public static final int ERROR_NO_MATCH

라이브러리 버전 1.0.0부터

인식 결과가 없음을 나타내는 오류 코드 상수.

  • 상수 값: -107

public static final int ERROR_RECOGNIZER_BUSY

라이브러리 버전 1.0.0부터

처리할 음성 데이터가 너무 많아 입력된 음성 데이터를 처리하지 못함을 나타내는 오류 코드 상수.

  • 상수 값: -108

public static final int ERROR_SERVER

라이브러리 버전 1.0.0부터

음성 인식 서버 측에 문제가 있음을 나타내는 오류 코드 상수.

  • 상수 값: -104

public static final int ERROR_SPEECH_TIMEOUT

라이브러리 버전 1.0.0부터

주어진 시간 내에 음성을 입력하지 않았음을 나타내는 오류 코드 상수.

  • 상수 값: -106

public static final int EVENT_TEXT

라이브러리 버전 1.0.0부터

문장 이벤트 디바이스의 ID를 나타내는 상수.

문장 이벤트 디바이스의 데이터는 음성 인식된 결과 문자열을 스트링 배열로 나타낸다. 스트링 배열의 크기는 음성 인식 결과 후보의 최대 개수로 설정된 값과 같다.

  • 상수 값: 0x40100008
  • 디바이스의 데이터 배열
    • 데이터 형: String [ ]
    • 배열 크기: -1
    • 초기 값: ""

public static final String ID

라이브러리 버전 1.0.0부터

VoiceRecognition 액션의 모델 ID를 나타내는 상수.

  • 상수 값: "org.smartrobot.android.action.voicerecognition"

public static final int SENSOR_MIC_LEVEL

라이브러리 버전 1.0.0부터

음량 센서 디바이스의 ID를 나타내는 상수.

음량 센서 디바이스의 데이터는 폰의 마이크를 통해 입력된 소리의 크기(RMS)를 데시벨로 나타낸다. 소리가 커질수록 값이 커진다.

  • 상수 값: 0x40100007
  • 디바이스의 데이터 배열
    • 데이터 형: float [ ]
    • 배열 크기: 1
    • 값의 범위: -100 ~ 100 [dB]
    • 초기 값: -100

public static final int STATE_BEGINNING_OF_SPEECH

라이브러리 버전 1.0.0부터

마이크 입력에서 음성이 시작된 상태를 나타내는 상수.

  • 상수 값: 101

public static final int STATE_END_OF_SPEECH

라이브러리 버전 1.0.0부터

마이크 입력에서 음성이 끝난 상태를 나타내는 상수.

  • 상수 값: 103

public static final int STATE_READY_FOR_SPEECH

라이브러리 버전 1.0.0부터

마이크 입력으로 음성을 받아들일 준비가 된 상태를 나타내는 상수.

  • 상수 값: 105