데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      나야, 에이닷 음성모드

      Cesc 24.11.08
      3,823 10 1
      DEVOTEE 요약
      에이닷 3.1 버전에서는 한국어에 최적화된 음성모드를 도입하여 사용자가 음성으로 간편하고 자연스럽게 대화할 수 있도록 개선되었습니다. 음성모드는 다양한 서비스에 적용되어, 대화 기록을 유지하거나 미디어 요청 시 음성모드를 전환하는 등의 유용한 기능을 제공합니다. 구현 과정에서는 음성 인식과 TTS의 자연스러운 흐름을 위해 Chunking 기법을 활용하여 응답 지연 시간을 줄이는 등의 기술적 노력을 기울였습니다.
      DEVOTEE 추천 블로그

      이번 에이닷 3.1 버전 개편에 맞춰, 에이닷 에이전트와 음성으로만 대화를 이어갈 수 있는 ‘음성모드’를 새롭게 선보였습니다.

      ChatGPT나 Gemini Live 등을 써보신 분들에게는 익숙한 기능일 수 있지만, 에이닷이 좀 더 국내향의 에이전트이고,

      캘린더, 맛집추천, 라디오 등 다양한 Built-in 서비스들을 제공하고 있는 만큼 에이닷 음성모드만이 가진 특징들이 있습니다.

      본 글을 통해 이러한 에이닷 음성모드만의 특장점을 소개하고, 그 구현 과정에 대해 살펴보도록 하겠습니다.


      1. 에이닷 음성모드: 간편하고 직관적인 음성 대화의 시작

      image.png

      에이닷 음성모드는 앱을 실행하고 바로 보이는 대화창에서 바로 시작할 수 있습니다.

      우하단의 ‘음성모드’ 버튼을 누르면 즉시 음성 입력 대기 상태로 전환되고, 사용자가 말하는 즉시 음성 인식 기능이 활성화되는데요.

      음성 모드를 통해 주고받은 대화는 채팅창에 기록되어 음성모드 종료 이후에도 확인할 수 있으며, 채팅을 통해서도 대화를 이어갈 수 있습니다.

      또한 음성 인식 과정에 따라 각기 다른 애니메이션이 나타나도록 해서, 현재 상태를 직관적으로 파악할 수도 있습니다.


      image.png

      1. Listening passive: 마이크를 열고 발화를 기다리는 중

      2. Listening active: 사용자가 말하고 있는 중

      3. Processing: 사용자의 요청을 처리 중

      4. Speaking: TTS로 응답을 재생하는 중

      5. Pause: 마이크가 닫힌 일시정지 상태

      이와 같은 단계별 인터페이스는 에이닷 음성모드를 더 편리하게 사용할 수 있도록 돕습니다.


      2. 에이닷 음성모드의 특장점

      한국어에 최적화된 자연스러운 대화 경험

      에이닷 음성모드의 가장 큰 장점은 한국어 대화에 최적화된, 자연스러운 발화체 음성 합성 모델을 지원한다는 점입니다.

      사실 에이닷 2.0대 버전에서도 에이전트의 응답을 음성으로 전달하기 위해 다양한 보이스를 지원했었는데요.

      이전 버전에서는 정보 전달에 초점을 맞춘 낭독형 보이스 옵션을 제공했다면, 3.1 버전에서는 실제 대화에 가까운 합성음을 구현했습니다.

      특히, 한국어 발음이 어색하거나 혹은 한국어 음성을 지원하지 않는 타사 서비스와 달리, 에이닷은 한국어에 최적화된 TTS를 통해 편안하고 자연스러운 대화를 가능하게 했습니다.

      뿐만 아니라 자연스러운 영어 응답이 지원되고 이에 대한 개선도 지속적으로 진행되고 있어, 앞으로 더욱 다양한 언어로의 확장이 기대됩니다.

      음성모드에서도 다양한 UX 제공

      에이닷 에이전트는 캘린더, 뉴스, 라디오 등 다양한 유틸리티/미디어 서비스를 제공하기 때문에,

      음성모드 사용 중에도 해당 기능이 잘 수행되도록 하거나, 이미지나 버튼, 플레이어 등이 적절한 시점에 자연스럽게 노출되도록 하는 사용자 경험이 중요하다고 생각했습니다.

      따라서 채팅모드에서 노출되는 부가적인 시각 정보의 도움 없이, 음성으로 전달되는 내용만으로도 정보의 완결성이 지켜지도록 응답을 설계하였습니다.

      image.png

      또한 “라디오 틀어줘”와 같이 미디어 콘텐츠가 재생돼야 하는 요청이 들어오면 즉시 음성모드를 종료하고 플레이어를 띄우도록 하거나,

      일정 관리나 날씨 홈 화면 등에 진입하는 버튼 등도 음성모드 레이어가 닫히면 노출하도록 돼있어, 음성모드 전후로도 에이닷의 다양한 기능들을 편리하게 사용할 수 있도록 했습니다.


      3. 에이닷 음성모드의 구현 과정

      음성모드가 채팅모드에 비해 가지는 가장 큰 차이점은 사용자 입력을 음성으로 받고, 생성된 응답을 TTS(Text to Speech)로 송출하는 과정일 것입니다.

      채팅모드에서 사용자의 입력은 즉시 텍스트 형태로 전달이 되지만, 음성모드에서는 사용자의 입력 방식이 음성으로 이뤄지기 때문에 다음과 같은 과정을 필요로 합니다.


      image.png

      1~2. 음성 파일 생성: 클라이언트에서 사용자의 입력을 음성 파일 형태로 생성

      3~4. ASR 서버 호출: 음성 파일을 ASR(Automatic Speech Recognition) 서버에 전송하여 텍스트로 변환

      5~6. 응답 서버 호출: 변환된 텍스트를 파라미터로 하여 LLM을 호출 및 응답 생성

      7~8. TTS 생성: LLM 응답을 TTS(Text to Speech)로 생성

      9~10. 음성 송출: 생성된 음성합성음을 클라이언트를 통해 유저에게 송출

      여러 시도가 필요했던 TTS 구현 과정

      기존 버전의 에이닷 서비스에서도 보이스바를 통한 음성 입력 기능을 지원해왔기 때문에 ASR 적용에는 비교적 큰 어려움이 없었지만,

      음성 응답을 실시간으로 제공하는 TTS 구현 과정은 다소 까다로웠습니다.

      LLM이 생성한 응답은 스트리밍(Streaming) 형식으로 한 글자씩 전송되기 때문에, 이를 TTS로 변환하는 과정에서 데이터를 한 번에 처리할 수 없는 상황이 발생했기 때문입니다.

      우선은 해당 문제를 해결하기 위해 LLM의 생성한 응답 데이터가 모두 생성이 되면, 생성된 전문을 데이터로 하여 TTS 서버를 호출하는 식으로 구현을 시도해보았습니다.

      이 방식은 TTS를 생성하기 위한 데이터를 확보할 수 있다는 점은 해소해주었지만,

      응답 스트리밍이 종료된 시점부터 음성 답변이 나갈 수 있기 때문에 그만큼 응답에 지연(Latency)이 생긴다는 한계점이 있었습니다.

      따라서 응답 스트리밍이 시작되자 마자 거의 동시에 TTS를 생성할 수 있는 방법을 고안해야 했고, 저희는 Chunking 기법으로 이 문제를 해결하고자 했습니다.

      LLM 응답이 문장 단위로 완성될 때마다 Chunk를 만들어 비동기적으로 TTS 서버를 호출할 수 있도록 로직을 개선한 것입니다.

      이를 통해 TTS 응답의 지연 시간을 크게 줄이고, 더욱 자연스럽고 빠른 대화 경험을 제공할 수 있었습니다.

      [*Chunking: 대용량 데이터를 다룰 때 데이터를 작은 덩어리(Chunk)로 나누어 효율적인 저장 및 처리가 가능하게 하는 기술]

      image.png


      마치며

      오늘은 음성모드에 대한 소개와 함께 출시를 준비하면서 겪게 된 소소한 이야기들을 풀어보았습니다.

      사실 처음 기획을 할 때는 기존 에이닷 버전에서도 음성모드의 기초가 되는 ASR, TTS 기술들을 익히 활용해왔기 때문에,

      음성으로 대화할 수 있는 간단한 인터페이스를 추가한다는 개념으로 접근을 했습니다.

      하지만 단순한 입출력 장치로서 해당 기술들을 사용하는 것과 에이전트와 연속적인 대화를 이어나가기 위한 귀와 목소리로 활용하는 것에는 구현에 있어 적지 않은 차이가 있었고,

      본 블로그 글에는 담지 못했던 어려움들도 많았는데요.

      그런 눈에는 잘 보이지 않는 차이를 보완하기 위해서 여러 TASK 단에서 많은 노력을 해주셨고, 덕분에 큰 차질없이 출시를 마칠 수 있었습니다.

      더 나은 성능을 보이기 위해 지금도 고생해주고 계신 여러 담당자분들에게 감사의 인사를 전하며, 글을 마치도록 하겠습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      Cesc 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기