pile·
AI / ML·twilio-engTwilio Engineering·

PHP로 AI 음성을 더 인간적으로 만드는 방법

Twilio Conversation Relay와 OpenAI, PHP로 고객 상담 AI 음성 에이전트를 구축하면서 로봇 느낌을 줄이고 인간적인 음성을 구현하는 기법을 다룬다. 토큰별 스트리밍으로 500ms 미만 응답을 달성하고, ElevenLabs TTS, SSML 호흡 브레이크, 인터럽트 처리로 자연스러운 대화 흐름을 만든다.

핵심 포인트
  • PHP 8.5 + Swoole 비동기 확장으로 WebSocket 연결 유지 및 OpenAI 토큰별 스트리밍 구현 — 500ms 미만 응답 달성.
  • ElevenLabs TTS를 사용해 표준 TTS 대비 더 자연스러운 음성 리듬을 확보.
  • "..."를 SSML `<break time="200ms"/>`로 변환해 실제 호흡 멈춤 효과 구현.
  • 시스템 프롬프트로 "2문장 이내 응답", "Oh, okay... 같은 캐주얼 필러 사용" 지시 → LLM 답변 자체를 대화체로 유도.
  • 인터럽트 발생 시 Twilio의 clear 커맨드로 대기 중인 오디오를 즉시 중단 — 어색한 오버랩 없이 새 입력 처리.
상세 정리
  • 핵심 아키텍처: Swoole WebSocket 서버가 Twilio로부터 오디오 이벤트를 받아 OpenAI 스트리밍 → ElevenLabs TTS → Twilio 실시간 전달 파이프라인.
  • TwiML 설정: Deepgram으로 STT, ElevenLabs로 TTS, eotThreshold: 0.8(발화 종료 감지), ignoreBackchannel: true(추임새 오반응 방지), interruptible: any(언제든 인터럽트 허용), speechModel: nova-3-general.
  • 이벤트 처리 3가지: setup(연결 초기화 로깅), prompt(사용자 전사 수신 → OpenAI 스트리밍 → 토큰별 오디오 전송), interrupt(큐 초기화 + 대화 상태 리셋).
  • SSML 변환 패턴: PHP 코드에서 "..."를 정규식으로 감지해 `<break time="200ms"/>`로 교체 — Twilio가 ElevenLabs에 SSML을 전달해 실제 멈춤 구현.
  • OpenAI 시스템 프롬프트 전략: 전화 통화용으로 극단적 간결함(2문장 이내) 강제. 자연스러운 필러 표현("Oh, okay...", "Let me check that") 명시적 지시. 격식체 금지.
  • 인터럽트 흐름: Twilio가 사용자 발화 감지 → interrupt 이벤트 서버에 전송 → 서버가 OpenAI 스트림 중단 + Twilio에 clear 커맨드 → 대기 오디오 즉시 제거 → 새 사용자 입력 처리.
  • 로컬 테스트: ngrok으로 로컬 터널 후 Twilio 웹훅에 등록 → 실제 전화로 지연, 인터럽트, 자연스러움 검증.
  • 확장 방향: tool calling으로 실제 항공편 조회 같은 외부 API 연동 추가 가능.
왜 읽나Twilio Conversation Relay 기반 PHP 음성 AI 상담원을 구축하면서 로봇 느낌을 줄이고 싶은 개발자에게 스트리밍, TTS 선택, SSML, 프롬프트 전략을 조합한 실전 구현 가이드.
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