AISmarteasy – 시맨틱 커널 포크로 개발하기 5f – Worker – Audio

소프트웨어 봇 까지는 챗 방식의 텍스트 인터페이스도 중요하다.

그러나 가전이나 하드웨어 봇이라면, 텍스트로 커뮤니케이션 하기는 쉽지 않다. 오디오 인터페이스가 기본이 될 것 같다.

 

봇은 한계나 비용으로 인해 소프트 시대를 거쳐 하드웨어 시대로 넘어갈 것 같다. 하드웨어 봇 시대에 텍스트 인터페이스는 과거 유산이 될 것 같다. 하드웨어 봇은 사람과 비슷하니, 음성이 의사 전달 수단이 기본이고 그 다음 감각적인 부분들이 있을 것 같다.

하드웨어 봇을 생각해서 음성-말로 상호작용 한다면, 주의해야 할 것은 사람들은 아무때나 말을 건다는 거다. 상대는 들리는 말을 듣고  대응한다. 음성 녹음 버튼을 누루고 재생하면서 상호작용 할 수 없다.

 

음성으로 상호작용 할 때는 소음이나, 내가 전달하고자 하는 대상이 아닌 경우에도 내 음성을 들을 수 있다는 거다. 지금도 버스 타고 갈 때 음성으로 크게 전화하는 사람이 있긴 하지만, 대부분 카톡으로 텍스트로 대화한다. 두 가지 모드를 다 지원해야 한다. 텍스트로 잘 할 해야 할 때는 텍스트로, 음성으로 잘 할 수 있을 때는 음성으로. 상황에 맞게.

[음성 지원]

  1. 오디오를 사용하지 않아야 할 상황이 있을 수 있다. 오디오로 의사소통할 지 여부를 설정할 수 있어야 한다.
  2. 오디오가 있는 지 없는지 오디오 감지(audio detection) 기능이 있어야 한다.
  3. 오디오 감지가 가능하면, 오디오 없음(침묵; silence)으로 의사 전달을 할 수 있다. 잠깐 말하기를 멈추거나 좀 길게 말하기를 멈출 수 있다. 침묵 길이로, 말하기 멈춤과 말하기 종료라는 의사 표현이 가능하다.
    1. 녹음 시작이나 종료 버튼을 두지 않아도 된다. 가전 제품이나 하드웨어 봇에서 이런 것으로 의사 소통하는 것은 많이 불편하다.
  4. 말하기가 중단 될 때 마다 녹음된 오디오 파일을 whisper와 같은 음성 인식 ai 모델에 전달해 텍스트로 변환한다. 음성 인식은 비동기로 처리되어야 할 수 있기 때문에, 오디오 녹음 과정과 제어가 섞어지 않도록 한다. 녹음된 파일을 복사해서 ai 모델에 전달한다.
  5. 말하기가 종료 되면 음성 녹음을 끝낸다. 이미 중단을 통해 녹음은 끝난 상태다. 변환 된 텍스트를 프롬프트로 llm에게 전달하고 응답을 받는다. 응답을 받고나야 다음 뭘 말할 지를 정하니까, 응답 받으면 다시 이 과정을 시작하면 된다.

* 사용자가 오디오 감지 시작 설정을 하면, 음성 감지를 시작 한다. 소리가 나면 – 사람의 소리가 나면 – 그냥 소리인지 사람 소리인지 구분할 수  있어야 함 – 한 번의 말하기를 위한 음성 감지를 시작하면 된다. 말하기는 잠시 멈췄다가 할 수도 있고 끝낼 수도 있다. 말하기를 멈추는 것은 여러 번 가능하다. 말하기를 멈췄으면 끝내려고 하는지를 알기 위해 계속 들어야 한다. 말하기를 끝냈음을 나타내는 길이가 멈춤을 여러 번 했을 때 보다 더 길다면, 멈춤 다음의 멈춤은 처리 할 필요가 없는 멈춤이다. 말하기가 멈추면 변환 된 텍스트로 llm에게 전달하고 응답 받으면 된다.

 

[설계 결정]

  1. 오디오 처리를 위해 NAudio를 사용한다.
  2. 음성 지원 ai모델은 openai의 위스퍼를 사용한다.
  3. 오디오 감지는 우선은 소리의 크기로 한다. 사람 소리인지 구분은 차후에 한다.
About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*