Kakao i Agent SDK::Wallpad::개발 프로세스::음성 인식 개발

페이지 이동경로

음성 인식 개발

음성 인식 개발을 위한 사전 작업Android Studio 설정을 사전에 완료 후에 다음 순서에 따라 SDK를 연동하여 음성 인식 개발을 진행합니다. 음성 인식 개발 프로세스는 SDK 초기화, Permission 추가, 필수 호출 앱 구현, 음성 인식 서비스 시작 등을 포함하여, 최종적으로 애플리케이션을 실행하는 과정을 모두 포함합니다.

SDK 초기화

SDK를 초기화하기 위해서 다음 순서에 따라 Application.onCreate() 메서드에서 KakaoI 클래스에 내장된 메서드들을 체이닝(Chaining) 방식으로 확장합니다.

  1. 사전에 협의된 개발 Phase 정보를 KakaoIWallpad.with() 항목에 입력합니다.

    코드예제KakaoIWallpad.with

    KakaoIWallpad.with(applicationContext, "{사용 가능 Phase}")
    

  2. Kakao 계정 토큰 갱신을 위해, Kakao Developers 사이트에서 앱 등록 후 획득한 REST API 키 값을 restApiKeyProvider{}에 입력합니다.

    • REST API 키 정보는 Kakao Developers > 내 애플리케이션 > 앱 설정 > 요약 정보에서 확인할 수 있습니다.
    주의
    REST API 키를 입력하지 않을 경우, Kakao 계정 인증을 진행할 수 없습니다.
  3. 만약 SDK로 시리얼 번호를 전달해야 할 경우, serialNumberProvider{}를 확장합니다.

Sample Code

SDK 초기화를 위한 샘플 코드는 다음과 같습니다.

코드예제SDK 초기화

private fun initKakaoI() {
 KakaoIWallpad.with(applicationContext, "stage")
 .serialNumberProvider { getSerial() }
 .restApiKeyProvider { getString(R.string.demo_rest_key) }
 .init()
}

안내
SDK에서 제공하는 전체 메서드 목록은 Kakao i Agent SDK for Wallpad 메서드를 참고하시기 바랍니다.

Runtime Permission 추가

다음의 권한(Runtime Permission)을 Manifest에 추가하여, 사용자가 런타임에 각 권한을 승인하도록 요청합니다.

Runtime Permission
권한 필수 여부 설명
android.permission.RECORD_AUDIO 필수 마이크 사용을 위한 권한
- 자세한 설명은 Google Developers 사이트 참고
android.settings.action.MANAGE_OVERLAY_PERMISSION 필수 플로팅 마이크 버튼 사용을 위한 권한
- 권한 설정 화면을 팝업시켜 권한을 인가받음
주의
android.permission.RECORD_AUDIO 권한을 획득하지 않으면 Kakao i 음성 인식 서비스를 시작할 수 없습니다.

Sample Code

다음은 android.settings.action.MANAGE_OVERLAY_PERMISSION 추가를 위한 예제 코드입니다.

코드예제android.settings.action.MANAGE_OVERLAY_PERMISSION

const val REQUEST_OVERLAY_PERMISSIONS = 200

 fun grantOverlayPermission(activity: Activity) {
 val intent = Intent(
         Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
         Uri.parse("package:" + activity.packageName)
 )
 activity.startActivityForResult(intent, REQUEST_OVERLAY_PERMISSIONS)
 }

안내
Permission 추가와 관련한 자세한 설명은 Google Developers > Android 개발자 > 앱 권한 요청 문서를 참고하시기 바랍니다.

호출 앱 구현

Wallpad에서 카카오 i 설정 화면을 호출하는 앱을 필수로 구현해야 하며, 앱 실행 시 카카오 i 서비스에 인텐트를 호출하여 해당 화면을 호출해야 합니다.
Wallpad 자체에 알람 기능이 없는 경우에는 Kakao i 알람 기능을 구현하는 것을 권장하며, 이 경우에도 알람 화면을 호출하는 앱을 구현해야 합니다. 각 앱을 구현 시, 필요한 앱 아이콘 이미지는 다음의 경로에서 다운로드 받을 수 있습니다.

설정 앱 구현
구분 필수 여부 설명
Kakao i 설정 호출 앱 필수 필수 애플리케이션으로 별도 구현하여 com.kakao.i.agent.SHOW_SETTINGS를 호출
- 앱 아이콘 이미지 다운로드 경로: 다운로드
Kakao i 알람 호출 앱 권장 Wallpad에 자체 알람기능이 없는 경우 알람 기능 구현을 권장하며, 알람 화면을 호출하는 앱 구현 후com.kakao.i.agent.SHOW_ALAM_SETTINGS를 호출
- 앱 아이콘 이미지 다운로드 경로: 다운로드

카카오 i 설정 아이콘 그림카카오 i 설정 및 알람 아이콘

안내
애플리케이션 호출에 대한 자세한 설명은 SDK 제어 문서를 참고하시기 바랍니다.

음성 인식 서비스 시작

음성 인식 서비스 시작을 위해 사용할 Activity에서 AgentService를 시작합니다.

코드예제AgentService

ContextCompat.startForegroundService(applicationContext, AgentService.newIntent(applicationContext))

애플리케이션 실행

위 작업을 모두 완료하고 애플리케이션을 생성(APK 파일)하고 설치하면, Wallpad 애플리케이션에서 Kakao i 음성 인식 서비스를 사용할 수 있습니다.

안내
음성 인식 개발, 호출 앱 구현, 음성 인식 서비스 시작 작업은 모두 필수 작업이며, 필요 시에는 View Template을 수정하거나 Mini Media Player를 구현할 수 있습니다.

  • View Template 수정: SDK에 기본 탑재되어 있는 UI 화면 템플릿인 View Template 수정 가능
  • Mini Media Player 구현: SDK의 음악 플레이어의 닫힘 유무에 상관없이 사용자가 Wallpad 화면에서 플레이어 화면을 제어할 수 있도록 Mini Media Player를 구현하는 것을 권장

SDK 제공 메서드

Kakao i Agent SDK for Wallpad에서 제공하는 전체 메서드는 다음과 같습니다.

Kakao i Agent SDK for Wallpad 메서드
메서드 필수 여부 설명
restApiKeyProvider{} 필수 Kakao 계정 토큰 갱신을 위해 Kakao Developers 사이트에서 생성된 애플리케이션의 REST API 키 전달 필요
serialNumberProvider{} 권장 유일값인 시리얼 번호를 SDK로 전달 시 필요
- 계정 연결 시 디바이스 정보를 보여주며, 내부적으로 고유한 Key 생성에 사용됨
disableAlarm() 선택 Wallpad에 알람/모닝콜 기능을 끌 때 사용
- 기본값: 알람/모닝콜 사용
disableWifiScreen() 선택 안드로이드 Wi-Fi 설정으로 이동하는 화면을 사용하지 않도록 설정
- Wallpad 애플리케이션에서 별도 생성한 Wi-Fi 설정 화면을 사용할 경우 사용
screenOrientation(orientationInfo : Int) 선택 Wallpad 디바이스가 가로 모드와 세로 모드를 모두 지원할 경우 선언 필요
- 가로/세로 모드 중 하나의 모듈만 지원할 경우에는 선언하지 않아도 됨
setFloatingViewSize(size: Int) 선택 플로팅 마이크 버튼의 사이즈(Pixel) 수정
- 기본값: 디바이스에 따라 자동 설정
setTemplateRenderer(customRenderer: TemplateManager.Renderer) 선택 View Template을 사용하여 화면을 수정(레이아웃, 사이즈 등)할 때 사용
- View Template 수정 문서 참고

restApiKeyProvider{ }

Kakao 계정 토큰 갱신을 위해 필요한 모듈로서, Kakao Developers 사이트에서 생성된 애플리케이션의 REST API 키를 전달해야 합니다. REST API 키 정보는 Kakao Developers > 내 애플리케이션 > 앱 설정 > 요약 정보에서 확인할 수 있습니다.

serialNumberProvider{ }

유일값인 시리얼 번호를 SDK로 전달할 때 필요한 모듈로, 계정 연결 시 디바이스 정보를 보여주며, 내부적으로 고유한 Key를 생성합니다.

disableAlarm()

기본 설정으로 사용함으로 설정되어 있는 Wallpad의 알람 또는 모닝콜 기능을 끌 수 있는 모듈입니다.

disableWifiScreen()

기본적으로 사용자가 Wallpad에서 마이크 버튼을 클릭할 때, Wi-Fi가 연결되지 않았거나 네트워크가 느릴 경우 안드로이드 기본 설정에 따라 Wi-Fi 설정 화면으로 이동합니다.
만약 고객사에서 개발한 별도의 Wi-Fi 설정 화면이 존재하는 경우, disableWifiScreen()를 사용하여 기본 Wi-Fi 설정으로 이동하는 기능을 비활성(Disable) 하고 별도 구현한 Wi-Fi 연결 화면을 연결할 수 있습니다.

Wi-Fi 연결하기 버튼(안드로이드 기본 설정) 그림Wi-Fi 연결하기 버튼(안드로이드 기본 설정)

안내
disableWifiScreen() 설정 시 Wi-Fi 연결 시점에 com.kakao.i.agent.ACTION_KAKAO_I_WIFI_DISCONNECTED 인텐트가 브로드케스트로 전송됩니다. 이 경우에 해당 인텐트가 수신되면 별도 구현한 Wi-Fi 설정 화면으로 이동하도록 설정해야 합니다.
- 브로드케스트 수신과 관련한 자세한 사항은 Google Developer 사이트를 참고하시기 바랍니다.

screenOrientation(orientationInfo : Int)

Wallpad 디바이스가 가로 모드와 세로 모드를 모두 지원할 경우 선언해야 하는 메서드입니다.

  • Wallpad 디바이스가 가로 모드와 세로 모드 중 하나만 지원할 경우에는 선언하지 않아도 됩니다.
screenOrientation(orientationInfo : Int) 선언
구분 선언
가로 모드 Activityinfo.SCREEN_ORIENTATION_LANDSCAPE
세로 모드 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

setFloatingViewSize(size : Int)

기본 설정으로, 플로팅 마이크 버튼의 크기는 Wallpad 디바이스의 사이즈와 해상도에 따라 자동으로 조정됩니다.
만약 플로팅 마이크의 아이콘 사이즈를 수정하고 싶은 경우에는 SDK 초기화(init) 시 setFloatingViewSize(size : Int) 메서드를 사용하여 원하는 사이즈를 입력하여 변경할 수 있습니다.

플로팅 마이크 사이즈 조정 그림플로팅 마이크 사이즈 자동 조정

Sample Code

다음은 SDK 초기화(init)시 플로팅 마이크의 버튼 사이즈(가로 x 세로)를 50dp로 수정하는 샘플 코드입니다.

코드예제플로팅 마이크 버튼 사이즈 수정

.setFloatingViewSize(resources.getDimensionPixelSize(R.dimen.floating_btn_size))

코드예제플로팅 마이크 버튼 사이즈를 50dp로 수정

 <resources>
     <dimen name="floating_btn_size">50dp</dimen>
 </resources> 

setTemplateRenderer(customRenderer : TemplateManager.Renderer)

View Template을 사용하여 Wallpad 화면의 레이아웃이나 사이즈 등을 수정할 때 사용합니다. 관련한 샘플 코드는 View Template 수정 문서를 참고하시기 바랍니다.

이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 documentation@kakaoenterprise.com 으로 제보해주세요.