실시간 AI 대화 코파일럿 잠금 해제 - 당신의 휴대폰에서

실시간 AI 대화 동료를 휴대폰에서 사용하세요. 실시간으로 대화를 전사하고 분석하여 즉각적인 제안과 피드백을 제공하는 강력한 도구를 구축하세요. 이 AI 지원 도우미를 통해 인터뷰, 회의, 사회적 상호 작용을 향상시키세요.

2025년 2월 21일

party-gif

이 블로그 게시물은 채용 면접과 사용자 조사와 같은 작업을 지원할 수 있는 실시간 AI 대화 코파일럿의 잠재력을 탐구합니다. 저자는 고급 음성-텍스트 및 언어 모델을 활용하여 즉시 전사 및 제안 기능을 제공하는 웹 및 모바일 애플리케이션 개발을 선보이며, 이러한 도구가 의사소통과 생산성 향상에 미치는 이점을 강조합니다.

실시간 AI 대화 코파일럿 소개

약 1년 전인 2023년 3월 무렵, ChatGPT가 막 나오고 세계적인 화제가 되었을 때 저는 Arony가 만든 "Interview Breaker"라는 데모를 분명히 보았습니다. 이는 ChatGPT를 활용해 채용 면접을 돕는 도구였습니다. 이번 주에 저도 "Interview Breaker"라는 개념 증명을 만들었습니다. 이는 ChatGPT를 활용해 채용 면접을 돕는 도구입니다. 사용자의 경험을 활용하고 면접관과의 대화를 듣고 무엇을 말해야 할지 알려줍니다.

선임 아키텍트로서 백엔드 서비스에 집중할 사항을 우선순위화할 때 저는 확장성을 최우선으로 합니다. 이런 도구는 채용 면접 프로세스에 큰 혼란을 일으킬 것입니다. 일반적으로 컴퓨터나 인터넷과 같은 큰 기술이 등장하면 이전에 있었던 프로세스들이 모두 바뀌게 됩니다. 즉, 먼 미래를 내다보면 이런 질문들이 더 이상 의미가 없어질 수 있습니다.

당시 저도 채용 면접 과정을 겪고 있었기 때문에 실시간으로 도움을 줄 수 있는 도구가 있다면 정말 좋을 것 같았습니다. 실제로 음성을 텍스트로 변환하고 대형 언어 모델을 사용해 답변을 생성하는 프로토타입을 만들어 보았지만, 실제로는 잘 작동하지 않았습니다. 실시간 면접 또는 대화 보조 도구의 핵심 요구사항은 지연 시간이 매우 짧아야 한다는 것입니다. 30-40초가 걸리면 실용적이지 않습니다. 작년 3월 당시에는 음성 인식 모델과 대형 언어 모델 모두 추론에 상당한 시간이 걸렸기 때문에 이 프로젝트는 이론상으로는 간단했지만 실제로 구현하기는 매우 어려웠습니다.

하지만 몇 달 후에 유사한 시나리오를 거의 실시간으로 구현한 다른 제품을 보았습니다. 항공 우주 공학에서 제트 엔진이나 우주선 재진입과 같은 문제에 어떻게 접근합니까?

실시간 대화 녹취 및 빠른 추론 구축의 과제

실시간 대화 보조 도구를 구축하는 데에는 두 가지 핵심 요소가 있습니다: 실시간 대화 전사와 빠른 추론입니다.

실시간 대화 전사

실시간 대화 전사를 달성하는 것이 가장 큰 과제입니다. Whisper와 같은 일반적인 음성-텍스트 변환 모델은 전체 녹음이 아닌 작은 청크로 오디오를 처리하는 스트리밍 시나리오에 맞춰 설계되지 않았습니다.

이를 극복하기 위해서는 작은 오디오 청크(예: 2-5초마다)를 지속적으로 캡처하고, 이를 음성-텍스트 변환 모델에 보내 작은 전사본을 만든 뒤 이를 연결하는 반복 루프를 만드는 것이 일반적인 해결책입니다. 이 접근법에서는 연결되는 단어의 타임스탬프를 비교하여 최종 전사본의 정확성을 높이는 등의 최적화가 필요합니다.

다행히도 음성-텍스트 변환 기술이 빠르게 발전하여 Replicate와 같은 플랫폼에서 호스팅되는 초고속 모델이나 Whisper Kit와 같은 경량 모델을 모바일 기기에 직접 배포하여 실시간 전사를 가능하게 하는 솔루션이 등장했습니다.

빠른 추론

두 번째 과제는 대형 언어 모델을 사용하여 실시간으로 제안을 생성하는 것입니다. 이를 해결하기 위해서는:

  1. 빠르고 작은 언어 모델 선택: Meteo 7B와 같은 모델은 GPT-4보다 훨씬 작고 빠르므로 더 적은 컴퓨팅 리소스로도 빠른 응답 생성이 가능합니다.

  2. 입력 크기 줄이기: 대화가 길어질수록 언어 모델의 입력이 너무 커질 수 있습니다. 언어 모델 요약 기술을 사용하여 관련 정보만 추출하고 입력 크기를 줄일 수 있습니다.

  3. 출력 생성 최적화: 프롬프트 엔지니어링 기법 등을 사용하여 출력 토큰 수를 더 줄일 수 있습니다.

실시간 대화 전사와 빠른 추론 기술을 결합하면 대화 중에 유용한 제안과 지원을 제공할 수 있는 반응성이 높은 실시간 대화 보조 도구를 구축할 수 있습니다.

웹 기반 대화 코파일럿 데모 구축

웹 기반 대화 보조 데모를 구축하기 위해 Flask(Python 웹 프레임워크)와 Replicate(오픈 소스 AI 모델 실행 플랫폼)를 사용할 것입니다.

핵심 구성 요소는 다음과 같습니다:

  1. 실시간 대화 전사: Replicate의 빠른 음성-텍스트 변환 모델을 사용하여 대화의 실시간 전사를 생성합니다. 이를 위해 작은 오디오 청크를 지속적으로 캡처하고, 이를 음성-텍스트 변환 모델에 보내 결과를 연결하는 방식을 사용합니다.

  2. 빠른 추론: Replicate의 작고 빠른 언어 모델(Minitram 등)을 사용하여 실시간으로 제안과 답변을 생성합니다. 입력 크기 줄이기, 대화 요약 등의 기술을 활용하여 속도를 높일 것입니다.

웹 앱에는 다음과 같은 기능이 포함됩니다:

  • 대화 맥락을 제공하는 텍스트 입력 필드
  • 오디오 녹음을 시작/중지하는 "녹음" 버튼
  • 언어 모델을 실행하여 제안을 얻는 "제안 받기" 버튼
  • 실시간 대화 전사 표시
  • 생성된 제안 표시

단계별 프로세스는 다음과 같습니다:

  1. Flask 앱 설정:

    • app.py 파일을 만들고 필요한 라이브러리를 가져옵니다(Replicate Python SDK 포함).
    • 인덱스 페이지와 오디오 처리 엔드포인트에 대한 Flask 라우트를 정의합니다.
    • 오디오 녹음을 임시로 저장할 AWS S3 버킷과 자격 증명을 설정합니다.
  2. 실시간 대화 전사 기능 구현:

    • Replicate Whisper 모델을 사용하여 오디오 청크를 지속적으로 캡처하고 전사합니다.
    • 단어 경계 처리와 청크 간 컨텍스트 유지 등으로 전사 결과를 최적화합니다.
  3. 빠른 추론 기능 구현:

    • Replicate Minitram(또는 유사한 작고 빠른 언어) 모델을 사용하여 전체 대화 전사를 기반으로 제안을 생성합니다.
    • 입력 크기 줄이기, 대화 요약 등의 기술을 활용하여 추론 속도를 높입니다.
  4. HTML과 JavaScript로 프론트엔드 구축:

    • templates 폴더에 index.html 파일을 만듭니다.
    • 텍스트 입력, 녹음 버튼, 제안 표시 등의 HTML 구조를 정의합니다.
    • 녹음, 오디오 업로드, Flask 백엔드 API 호출 등의 JavaScript 로직을 구현합니다.
  5. 웹 앱 테스트 및 배포:

    • 로컬에서 Flask 앱을 실행하고 기능을 테스트합니다.
    • 앱을 호스팅 플랫폼(Heroku, AWS 등)에 배포합니다.

이러한 단계를 따르면 대화를 듣고 실시간 전사를 생성하며 맥락 기반 제안을 제공하는 웹 기반 대화 보조 데모를 구축할 수 있습니다.

모바일 대화 코파일럿을 위한 Whisper Kit 활용

웹 기반 대화 보조 데모의 인상적인 모습을 보고 나서 저는 Whisper Kit 오픈 소스 프레임워크를 사용하여 모바일 버전을 만들어 보기로 했습니다. Whisper Kit는 iOS 기기에서 Whisper 음성-텍스트 변환 모델을 직접 배포할 수 있는 Swift 패키지를 제공하여 최소한의 지연 시간으로 실시간 전사를 가능하게 합니다.

시작하기 위해 Whisper Kit GitHub 리포지토리를 복제하고 Xcode에서 예제 프로젝트를 열었습니다. 프로젝트에는 Whisper Kit 사용을 보여주는 샘플 iOS 앱의 소스 코드가 포함된 whisper-ax 폴더가 있습니다.

ContentView.swift 파일에서 먼저 프롬프트 입력과 대형 언어 모델의 API 응답 요약을 처리하기 위한 추가 상태 변수를 정의했습니다. 그리고 사용자가 프롬프트를 사용자 정의할 수 있는 입력 필드를 추가했습니다.

다음으로 getSuggestion() 함수를 구현했습니다. 이 함수는 전사본과 프롬프트를 Replicate API에 보내 Mistral 언어 모델의 응답을 생성합니다. 이 함수는 Replicate API의 스트리밍 특성을 처리하며, 응답이 완료될 때까지 지속적으로 상태를 확인하고 API_response_summary 상태 변수에 생성된 제안을 업데이트합니다.

마지막으로 "제안 받기" 버튼을 추가하여 getSuggestion() 함수를 트리거하고, API 응답 요약을 실시간 전사 아래에 표시했습니다.

결과적으로 사용자는 대화를 시작하고 실시간 전사를 보며, 대형 언어 모델의 즉각적인 제안을 받을 수 있는 iOS 앱을 사용할 수 있습니다. Whisper Kit의 음성-텍스트 기능과 Replicate API 통합을 통해 사용자의 모바일 기기에서 원활하고 반응성 있는 대화 보조 경험을 제공할 수 있습니다.

이러한 접근 방식은 실시간, 맥락 인식 대화 지원을 위한 새로운 가능성을 열어줍니다. 중요한 토론, 면접, 사회적 상호 작용 중에 사용자를 지원할 수 있는 지능형 도구가 될 수 있습니다. 음성 인식과 대형 언어 모델의 최신 발전을 활용하여 모바일 대화 보조 도구는 의사소통과 생산성 향상을 위한 귀중한 도구가 될 수 있습니다.

이 모바일 대화 보조 앱을 계속 개선하고 정제하여 곧 커뮤니티와 공유할 수 있기를 기대합니다. 앱을 시험해 보거나 개발에 대한 피드백을 주시기 바랍니다.

결론

결론적으로, 실시

자주하는 질문