AIPilotSmarteasy 사용해 보기 – 나 교수와 함께 유튜브 영상 내용 읽기 – Realtime 오디오 관련
이 영상은 라이브킷(LiveKit) 플랫폼을 사용하여 웹캠과 마이크 입력을 기반으로 실시간 상호작용이 가능한 AI 비서를 구축하는 방법을 설명합니다. 영상은 데모 시연, 코드 설명, 실행 방법 안내 순으로 구성되어 있습니다.
1. 데모 시연:
제작자는 AI 비서와의 실시간 상호작용을 시연합니다. 비서는 웹캠을 통해 손가락 개수, 시계 색깔, 들고 있는 물건 등을 인식하고 질문에 답변합니다. 이를 통해 시청자에게 구현될 AI 비서의 기능과 성능을 직관적으로 보여줍니다.
2. 코드 설명:
핵심 코드는 assistant.py
파일이며, entry_point
함수에서 주요 로직이 실행됩니다. 다음은 주요 코드 구성 요소에 대한 설명입니다.
AssistantFunction
클래스: 함수 호출 기능을 구현합니다.image
함수는 비서가 이미지 정보가 필요하다고 판단할 때 호출되며, 웹캠에서 캡처한 최신 이미지를 비서에게 전달합니다. 이는 불필요한 이미지 전송을 줄여 네트워크 부하를 줄이고 응답 속도를 향상시킵니다.entry_point
함수:- 시스템 메시지를 통해 AI 비서의 페르소나(이름, 성격)를 설정합니다.
- GPT-4를 LLM으로 사용하고, Deepgram을 음성-텍스트 변환에 사용합니다.
- OpenAI API를 사용하여 텍스트를 음성으로 변환합니다.
ChatContext
를 생성하여 대화 맥락을 유지합니다.ChatMessage
를 통해 사용자 메시지와 이미지 정보를 LLM에 전달합니다.VoiceAssistant
클래스를 통해 음성 활동 감지, 음성-텍스트 변환, LLM 호출, 텍스트-음성 변환 등을 처리합니다.ChatManager
를 사용하여 대화 흐름을 관리합니다.get_video_track
함수를 통해 웹캠에서 비디오 트랙을 가져옵니다. 이 함수는 연결된 첫 번째 웹캠을 사용하도록 설계되어 있습니다.on_message_receive
이벤트 핸들러는 사용자의 음성 메시지를 수신하고answer
함수를 호출합니다.on_function_call_finished
이벤트 핸들러는image
함수 호출이 완료된 후answer
함수를 호출하고 이미지 정보를 함께 전달합니다.answer
함수는 사용자 메시지와 이미지 정보를 LLM에 전달하고, LLM의 응답을 음성으로 변환하여 출력합니다.
- 이미지 처리: 비서는 비디오가 아닌 이미지를 기반으로 작동합니다. 웹캠에서 프레임을 캡처하여 최신 이미지를 저장하고, 필요한 경우에만 LLM에 전달합니다.
3. 실행 방법 안내:
- 가상 환경 생성 및 필요한 라이브러리 설치
- LiveKit, Deepgram, OpenAI API 키 설정
python assistant.py start
명령어로 실행- LiveKit에서 제공하는 호스팅된 플레이그라운드에 접속하여 웹캠과 마이크 권한 부여
영상은 LiveKit 플랫폼과 함수 호출 기능을 활용하여 효율적이고 실시간 상호작용이 가능한 AI 비서를 구축하는 방법을 상세하게 설명합니다. 코드 구조와 각 함수의 역할을 이해하면, 필요에 따라 기능을 수정하거나 확장할 수 있습니다. 또한, 영상은 시청자들이 직접 AI 비서를 구축하고 실험해 볼 수 있도록 실행 방법을 단계별로 안내합니다.
이 영상은 가장 빠른 LLM과 가장 빠른 텍스트 음성 변환(TTS) 모델을 결합하여 초저지연 AI를 구현하는 방법을 설명합니다. 딥그램(Deepgram)의 Nova 2와 Aura, 그리고 그록(Grok) API를 사용하여 음성을 텍스트로 변환하고, LLM으로 응답을 생성하고, 텍스트를 다시 음성으로 변환하는 과정을 보여줍니다.
1. 구성 요소:
- 음성-텍스트 변환(STT): 딥그램의 Nova 2 모델을 사용합니다. 빠른 속도와 정확성, 다양한 시나리오별 모델 제공, 스트리밍 및 엔드포인팅 기능이 장점입니다. 엔드포인팅은 대화의 자연스러운 끊김을 감지하여
speech_final
플래그로 알려줍니다. - LLM: 그록 API를 사용합니다. 자체 LPU 칩을 사용하여 빠른 추론 속도를 제공합니다. 배치 및 스트리밍 방식 모두 지원하며, 토큰 처리 속도가 매우 빠릅니다.
- 텍스트-음성 변환(TTS): 딥그램의 Aura 스트리밍 모델을 사용합니다. 실시간 스트리밍을 통해 빠른 응답 시간을 제공하며, 오디오 데이터를 청크 단위로 전송하여 Time to First Byte(TTFB)를 최소화합니다. 1초 미만의 데이터 처리 속도로 실시간 재생보다 빠르게 처리합니다.
2. 작동 방식:
- 사용자 음성을 마이크를 통해 입력받습니다.
- Deepgram Nova 2가 음성을 텍스트로 변환합니다.
- 변환된 텍스트를 Grok API에 전달하여 LLM 응답을 생성합니다.
- Grok API의 응답을 Deepgram Aura에 전달하여 음성으로 변환합니다.
- 변환된 음성을 스피커로 출력합니다.
- “goodbye”와 같은 종료어가 감지될 때까지 2~5단계를 반복합니다.
3. 코드 설명:
- STT:
on_message
함수는 Deepgram에서 스트리밍되는 데이터 청크를 처리합니다.speech_final
플래그를 확인하여 발화 종료 시점을 감지합니다. - LLM: Grok API를 사용하여 텍스트를 전달하고 응답을 받습니다. 배치 및 스트리밍 예제 코드를 제공합니다.
- TTS:
response.iter_content
를 사용하여 Deepgram Aura에서 스트리밍되는 오디오 청크를 처리하고,ffplay
를 통해 실시간으로 재생합니다. - 전체 과정:
ConversationManager
클래스는 Langchain을 사용하여 대화 맥락을 유지하고, STT, LLM, TTS를 순차적으로 호출합니다.
4. 고려 사항:
- 지연 시간(Latency) 최적화: LLM의 응답 속도가 가장 큰 병목 지점이며, 토큰 생성 속도가 중요합니다. 딥그램의 TTS는 매우 빠른 속도를 보여줍니다.
- 필러 단어: LLM 응답 지연을 감추기 위해 필러 단어를 사용할 수 있습니다.
- 실시간 인터럽트: 데모에서는 구현되지 않았지만, 오디오 스트림 인터럽트는 소프트웨어 엔지니어링 문제입니다.
- 예측 기반 응답 생성: 사용자 발화의 전반부를 기반으로 후반부를 예측하고 미리 응답을 생성하는 방법을 고려할 수 있습니다. 비용이 많이 들 수 있지만, 토큰 및 인공지능 비용 감소 추세를 고려하면 가능성 있는 방법입니다.
핵심 요약:
빠른 STT, LLM, TTS 모델을 결합하여 초저지연 대화형 AI를 구현할 수 있습니다. Grok API와 Deepgram의 Nova 2 및 Aura는 이러한 목표를 달성하는 데 효과적인 도구입니다. 지연 시간 최적화 및 예측 기반 응답 생성과 같은 추가적인 기술을 통해 더욱 자연스러운 대화 경험을 제공할 수 있습니다.