pile·
AI / ML·twilio-engTwilio Engineering·

Node.js로 AI 음성을 더 자연스럽게 만드는 방법

저지연 스트리밍과 자연스러운 인터럽션 처리는 AI 음성 에이전트를 로봇처럼 느끼게 하지 않는 핵심 공학 과제다. 이 튜토리얼은 Node.js, Twilio Conversation Relay, OpenAI를 사용해 토큰 단위 스트리밍과 AbortController 기반 인터럽션 핸들링을 구현하고, SSML 마크업과 시스템 프롬프트 설계로 AI 음성의 자연스러움을 개선하는 방법을 단계별로 다룬다.

핵심 포인트
  • 저지연의 핵심: OpenAI 응답을 요청-응답 방식 대신 토큰 단위로 WebSocket을 통해 Twilio에 직접 스트리밍해 첫 응답 500ms 이내 달성
  • 인터럽션 처리 체계: `interrupt` 이벤트 수신 시 AbortController.abort()로 OpenAI 스트림 중단 + Twilio에 `{type: "clear"}` 전송으로 오디오 버퍼 즉시 비움
  • ElevenLabs TTS + Deepgram Nova-3 조합이 자연스러운 음성 출력의 기반
  • 시스템 프롬프트에 구어체 필러("Oh...", "Uhm..."), 마크다운/이모지 금지, 숫자 영문 발음 지침 삽입
  • SSML `<break time="200ms"/>` 태그로 LLM이 출력한 `...`을 명시적 호흡 구간으로 변환
상세 정리
  • `express-ws`로 WebSocket 서버 구성, `prompt`(발화)와 `interrupt`(인터럽션) 이벤트 분리 처리
  • 각 발화 시작 시 새 `AbortController` 생성; 이전 컨트롤러 즉시 abort로 이전 스트림 강제 종료
  • OpenAI `gpt-4o` 스트리밍 API의 `signal` 파라미터에 AbortController 연동
  • 스트리밍 루프: `data:` 라인 파싱 → `choices[0].delta.content` 추출 → Twilio WebSocket으로 `{type: "text", token, last}` 전송
  • 마지막 토큰에 `last: true` 플래그로 Twilio에 발화 턴 종료 신호 전달
  • TwiML 설정: `interruptible="any"`, `ignoreBackchannel="true"`, `eotThreshold="0.8"`, `speechModel="nova-3-general"`
  • 시스템 프롬프트: 2문장 이내 응답, 콤마/말줄임표로 자연스러운 호흡, 구어체 필러, 불릿/이모지 금지
  • tool calling 연동 시 실시간 항공편 조회 등 실제 데이터 처리로 확장 가능
왜 읽나토큰 스트리밍과 AbortController 인터럽션 패턴을 Node.js로 구현해 AI 음성 에이전트의 자연스러움과 반응성을 동시에 끌어올리는 실전 코드 가이드다.
twilio-eng
Twilio Engineering 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. AI / ML·AWS KoreaAWS Korea Tech·

    1시간 대화로 만드는 Amazon Connect Customer AI Agent [AICC Builder 시리즈 #1]

    Amazon Connect Customer AI Agent를 1시간 내에 구축할 수 있게 해주는 오픈소스 샘플 앱 AICC Builder를 다룬다. 요구사항 인터뷰를 통해 Lambda 함수, OpenAPI 명세, AI 프롬프트, Contact Flow JSON, CDK 인프라 코드, FAQ/지식베이스 총 6가지 배포 에셋을 자동 생성한다. 코드 한 줄 없이 전화받는 PoC까지 완성하는 것이 핵심 목표다.

    #mcp#voice-ai#bedrock+2
  2. AI / ML·twilio-engTwilio Engineering·

    PHP에서 Conversation Relay 사용 시 배경 소음 처리 방법

    Twilio Conversation Relay를 PHP로 구현할 때 배경 소음이 STT(음성→텍스트) 정확도를 저하시키는 문제를 다룬다. 음성 AI는 STT → LLM → TTS 순차 파이프라인이라 전사 오류가 전체 응답 품질을 망친다. Nova-3 모델 설정 튜닝과 Flux 모델 전환 두 가지 해결책을 실측 테스트 결과와 함께 제시한다.

    #voice-ai#stt#deepgram+2