Kakao i Agent::구현 시나리오::노래 틀어줘

페이지 이동경로

노래 틀어줘

노래 틀어줘 시나리오는 사용자가 음성 인식 디바이스의 Wake-up 버튼을 누르고 “아이유 노래 틀어줘”라는 음성 명령을 했을 때, 음성 명령어를 인식하고 음원을 실행하는 과정을 설명합니다.

Wake-up(버튼)

노래 틀어줘 Wake-up(버튼) 그림Wake-up(버튼) 시나리오 예시

  1. 사용자가 음성 인식 디바이스의 Wake-up 버튼을 누릅니다.

  2. Service Agent는 발화 효과음(“띠링”)과 함께 발화가 시작되었음을 인식하는 Recognizer.Speech Event를 KVS에 전송합니다.

    Recognizer.Speech
    구분 설명
    Interface Recognizer.Speech: Service Agent에서 발생한 사용자 발화를 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: Recognizer
    인터페이스: Speech
    Body type으로 구성됨
    type: BUTTON_TAP

음성 명령

노래 틀어줘 음성 명령 그림음성 명령 시나리오 예시

음성 명령 인식 시작

  1. 사용자가 “아이유 노래 틀어줘”라는 음성 명령을 합니다.

  2. KVS가 음성 명령이 시작되었음을 인식하고 Recognizer.InformRecognized Instruction을 Service Agent에 전송합니다.

    • Recognizer.InformRecognized Instruction은 음성 인식 진행 중간 결과와 최종 결과를 Service Agent에 전달해주는 인터페이스이며, 각 단계별 인식 결과를 전송할 때 type을 특정하여 전송합니다.
    Recognizer.InformRecognized
    구분 설명
    Interface Recognizer.InformRecognized: KVS가 음성 인식 진행 중간/최종 결과를 Service Agent에 전달
    메시지 타입: Instruction
    인터페이스 타입: Recognizer
    인터페이스: InformRecognized
    Body type, text로 구성됨
    - type: BPD(인식 시작)
    - text: BPD
    - type: PARTIAL(인식 중)
    - text: 아이유, 아이유 노래, 아이유 노래 틀어줘
    - type: EPD(인식 종료)
    - text: EPD
    안내
    Recognizer.InformRecognized의 Body 타입에 사용되는 약자와 의미는 다음과 같습니다.
    - BPD(Begin Point Detection): 사용자가 발화를 시작하는 것으로 판단
    - PARTIAL(Partial Result) :사용자가 발화를 끝내기 전의 중간 인식 결과
    - EPD(End Point Detection): 사용자가 발화를 종료한 것으로 판단
    - FINAL(Final Result): 사용자가 발화한 음성의 최종 결과

음성 명령 캡처 중지

KVS가 전달받은 음성을 통해 명령어를 완전히 인식하면, Service Agent에 음성 캡처 중지를 요청하는 Recognizer.StopCapture Instruction을 전송합니다. Service Agent는 Recognizer.StopCapture Instruction을 전달받으면 즉시 마이크를 닫습니다.

Recognizer.StopCapture
구분 설명
Interface Recognizer.StopCapture: KVS가 사용자의 의도를 파악했거나 명령어 인식을 종료할 때 사용자의 음성 캡처를 중지하도록 Service Agent에 지시
메시지 타입: Instruction
인터페이스 타입: Recognizer
인터페이스: StopCapture

음성 명령 인식 완료

KVS는 음성 명령어 인식을 완료하면 최종 인식 결과를 Recognizer.InformRecognized(type: FINAL) Instruction을 통해 Service Agent에 전달합니다.

Recognizer.InformRecognized
구분 설명
Interface Recognizer.InformRecognized: KVS가 음성 인식 진행 중간 결과와 최종 결과를 Service Agent에 전달
메시지 타입: Instruction
인터페이스 타입: Recognizer
인터페이스: InformRecognized
Body type, text로 구성됨
type: FINAL(인식 완료)
text: 아이유 노래 틀어줘

오디오 재생

노래 틀어줘 오디오 재생 그림오디오 재생 시나리오 예시

음원 정보 수신

명령어 인식이 완료되면 KVS는 Service Agent에 출력할 응답 정보를 전달니다.

  1. KVS는 AudioPlayer.Play Instruction으로 음악 재생 정보를 전달합니다.

    • AudioPlayer.Play Instruction의 음악 콘텐츠는 Play 채널의 Content Audio Player의 Queue에 등록됩니다.
    AudioPlayer.Play
    구분 설명
    Interface AudioPlayer.Play: KVS가 Service Agent에 오디오 스트림의 재생을 시작하도록 지시
    - 메시지 타입: Instruction
    - 인터페이스 타입: AudioPlayer
    - 인터페이스: Play
    Body - action: REPLACE_ALL
    - audio item: 음원 정보
    - progressReport: 60000
    안내
    Player Queue는 디바이스 전역에 1 개만 존재합니다.
    - 오디오 재생을 할 경우 Play 인터페이스의 값은 music으로, 라디오 재생을 할 경우 radio로 변경합니다.

음원 재생

재생할 음원이 Content Audio Player의 Queue에 등록되면, 음원 재생을 시작합니다.

  1. Service Agent의 Audio Player가 재생 시작, 재생 종료, 다음 음원을 재생할 수 있는 상태로 전환되면 KVS에 AudioPlayer.Started Event를 전송합니다. AudioPlayer.Started

    구분 설명
    Interface AudioPlayer.Started: Service Agent가 오디오 스트림의 재생 시작을 알리기 위해 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: Started
  2. 해당 음원의 재생 시간을 AudioPlayer.ProgressReport Event를 통해 전달합니다.

    • 이 시나리오에서는 상태 전달 기준 시간(60,000 ms)을 기준으로 합니다.
    AudioPlayer.ProgressReport
    구분 설명
    Interface AudioPlayer.ProgressReport: 재생 지시문에 progressReport가 있는 경우, Service Agent가 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: ProgressReport
    Body 음원 재생 시간 (Offset)
  3. Service Agent가 다음 음원의 재생을 준비하기 위해, AudioPlayer.NearlyFinished Event를 KVS에 전송합니다.

    AudioPlayer.NearlyFinished
    구분 설명
    Interface AudioPlayer.NearlyFinished: Service Agent가 재생 대기열에서 다음 스트림을 버퍼링/다운로드할 준비가 되면 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: NearlyFinished
  4. KVS는 Service Agent에 재생할 음원 정보와 데이터를 AudioPlayer.Play Instruction으로 전송합니다.

    AudioPlayer.Play
    구분 설명
    Interface AudioPlayer.Play: 오디오 음원 재생
    메시지 타입: Instruction
    인터페이스 타입: AudioPlayer
    인터페이스: Play
    Body action, action item으로 구성됨
    action: REPLACE_ALL
    audio item: 음원 정보
  5. Service Agent는 현재 재생 중인 음원의 종료를 알리기 위해, AudioPlayer.Finished Event를 KVS에 전송합니다. AudioPlayer.Finished

    구분 설명
    Interface AudioPlayer.Finished: Service Agent가 오디오 스트림의 재생을 완료했음을 KVS에 전달
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: Finished
  6. Service Agent는 다음 곡을 재생하고, KVS에 AudioPlayer.Started Event를 전송합니다. AudioPlayer.Started

    구분 설명
    Interface AudioPlayer.Started: Service Agent가 오디오 스트림의 재생 시작을 알리기 위해 KVS에 전송
    메시지 타입: Event
    인터페이스 타입: AudioPlayer
    인터페이스: Started
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

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