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

페이지 이동경로

음성 인식 개발

사전 작업, iOS 개발 환경 설정, SDK 초기화를 사전에 완료 후에 다음 순서에 따라 Kakao i Agent SDK를 연동하여 음성 인식 개발을 진행합니다. 음성 인식 개발 프로세스는 SDK 초기화 완료 후, 음성 인식 활성화, 클래스 구현, 화면 출력 등을 포함하여 최종적으로 애플리케이션을 실행하는 과정을 포함합니다.

안내
음성 인식 개발 프로세스를 진행하기 전에는 반드시 SDK 초기화 작업을 완료해야 합니다.

개발 전 체크리스트

음성 인식 개발 프로세스를 정상적으로 수행하기 위해서는 다음의 사전 작업을 완료해야 합니다.

개발 전 체크리스트
항목 설명
Kakao i Agent SDK 연동 해당 프로젝트에 Kakao i Agent SDK 연동
- Kakao Developers 사이트의 Kakao SDK v2 사용법 문서에 따라 연동 작업 필요
애플리케이션 등록 Kakao Developers 사이트에 개발한 애플리케이션 등록
- 사전 작업 > 애플리케이션 등록 문서 참고
iOS 개발 환경 설정 iOS 버전의 Kakao i Agent SDK를 사용하기 위해 필요한 최소 요구사항 확인 및 환경 설정
- iOS 개발 환경 설정 문서 참고
SDK 초기화 Phase 설정과 인터페이스 및 Delegate 설정
- SDK 초기화 문서 참고

음성 인식 활성화하기

카카오 i 음성 인식을 활성화하기 위해 false(기본값)로 설정되어 있는 초기값을 KakaoI.shared.setEnabled() 메서드를 사용하여 true 값으로 변경합니다.

코드예제KakaoI.setEnabled() 예시

KakaoI.shared.setEnabled(enabled: true)

Wake-up Word(호출명령어) 변경

Wake-up Word(호출명령어)의 초기 값은 “헤이 카카오”로 고정되지만, 최종 사용자는 설정 화면에서 Wake-up Word를 다르게 설정할 수 있습니다.

  • Wake-up Word가 유입될 때, 발화 효과음을 재생하는 과정은 SDK 내부적으로 수행됩니다.
KakaoI.shared.wakeUpWord = .heyKakao            // "헤이 카카오"
KakaoI.shared.wakeUpWord = .kakao                   // "카카오"
KakaoI.shared.wakeUpWord = .kakaoya              // "카카오야"
KakaoI.shared.wakeUpWord = .kakaomini          // "카카오 미니"
KakaoI.shared.wakeUpWord = .user("사용자 호출 명령어")  // "사용자 호출 명령어"

음성 인식 결과 화면 출력

Kakao i Agent SDK에서는 음성 인식 결과를 UI 화면으로 출력할 때, View Template이라는 레이아웃 화면을 사용합니다. SDK는 기본적인 View Template을 제공하지만, 클라이언트의 특정 서비스에 맞춰서 View Template 수정도 가능합니다.

안내
View Template 수정 시에도 음성 답변은 Kakao i Agent SDK를 통해 재생됩니다.

  • 다양한 음성 인식 결과를 UI 화면으로 출력하는 자세한 설명은 View Template 문서를 참고하시기 바랍니다.

View Template을 화면에 출력하기 위해서는 TemplateRender의 templateRenderReceived()를 사용합니다. templateRenderReceived()templateRenderHeadertemplateRenderBody를 파라미터로 전달받아 사용합니다. 다음은 SDK가 기본적으로 제공하는 화면 출력 메서드에 대한 설명입니다.

화면 출력 메서드
메서드 설명
templateRenderReceived 세 개의 버튼 색상 조합 가능
token?: 각 View Template을 식별하기 위한 토큰 값
template: templateRenderObject으로 고정
body: JSON을 Dictionary 형태로 바꾼 값(bodyJson과 동일값)
bodyJson: JSON String(body와 동일값)
templateCloseReceived 클라이언트가 표시하고 있는 템플릿을 닫도록 알려줌
token?: 각 View Template을 식별하기 위한 토큰 값

코드예제메서드 확장

// @note: KITemplateInterfaceDelegate 프로토콜의 templateRenderReceived 메서드를 확장해서 사용하고 있는 예제입니다.
func templateRenderReceived(token: String?, template: KITemplateRenderObject, body: [String : Any], bodyJson: String) {
    if let voiceAgentActionData = VoiceAgentDataBuilder.buildVoiceAgentActionData(with: template) {
        currentViewTemplateRenderData = voiceAgentActionData
        delegate?.receivedVoiceAgentAction(voiceAgentActionData)
        viewTemplateDelegate?.receivedVoiceAgentAction()

        return
    }

    currentViewTemplateRenderData = nil
}

// @note: KITemplateInterfaceDelegate 프로토콜의 templateCloseReceived 메서드를 확장해서 사용하고 있는 예제입니다.
func templateCloseReceived(token: String?) {
    delegate?.closeViewTemplate(with: token)
}

Kakao i 설정 화면 출력

사용자가 호출명령어 설정, 서비스 이용 설정, 앱 정보 확인 등을 할 수 있는 카카오 i 설정 화면을 출력할 때 사용하는 UIViewController 입니다.

  • UINavigationController에서 푸시하거나 새로운 UINavigationController로 감쌀 경우, Modal 방식이 적용됩니다.
@objc public static var settingsViewController: UIViewController & InsetsAdjustable & CustomNavigationControllerUsable {
    return SettingsMainViewController()
}

코드예제Sample Code UINavigationController에서 푸시하는 방법으로 출력하거나 새로운 UINavigationController로 감쌀 경우, Modal 화면전환 방식이 적용됩니다.

코드예제Kakao i 설정 화면 출력

let vc = KakaoI.settingsViewController
let nc = UINavigationController(rootViewController: vc)
nc.modalPresentationStyle = .fullScreen
self.present(nc, animated: true, completion: nil)

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

더 자세한 의견은 contact.dkt@kakaocorp.com 으로 제보해주세요.