본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 04. 22:30

의료 클리닉용 음성 AI 전담원무관 구축: 8 주간의 모든 결정과 이유

요약

본 기사는 의료 클리닉 환경에 실제 운영 가능한 음성 AI 전담원무관(Virtual Receptionist) 시스템을 구축하는 과정에서 발생한 기술적 결정과 이유를 상세히 다룹니다. 8주간의 개발 여정을 통해 Twilio, Deepgram, Anthropic Claude, ElevenLabs 등 각 단계별 최적의 공급자를 선정하고, 특히 음성 AI 구현의 핵심 난제인 '지연 시간(Latency)'을 극복하는 데 초점을 맞춥니다. 이 과정에서 단순히 똑똑한 시스템을 만드는 것을 넘어, 자연스러운 대화 경험을 제공할 수 있도록 실시간 스트리밍과 예측적 처리를 최우선 과제로 삼았음을 강조합니다.

핵심 포인트

  • 음성 AI 구축의 핵심은 지능(Intelligence)보다 속도(Speed/Low Latency)에 달려 있다. 인간 대화의 자연스러움을 위해 200ms 단위의 낮은 지연 시간 확보가 필수적이다.
  • 각 구성 요소별로 최고의 성능을 내는 전문 공급자를 선택하는 것이 중요하다: 통신은 Twilio, STT는 Deepgram(지연 시간 및 의료 용어 정확도), LLM은 Claude(예측 가능한 명령 수행 및 뉘앙스 처리), TTS는 ElevenLabs(스트리밍 API를 통한 지연 시간 단축).
  • 시스템 아키텍처는 실시간 스트리밍과 예측적 처리를 활용하여 전체 파이프라인의 병목 현상을 해결해야 한다. 특히, 최종 전사(Final Transcript)를 기다리지 않고 임시 전사(Interim Transcript)를 사용하여 LLM 추론을 조기에 시작하는 것이 핵심 기술이다.
  • 기술 스택은 NestJS/TypeScript와 AWS Docker 기반으로 견고하게 구축되었으며, PostgreSQL과 Prisma를 활용하여 예약 및 대화 기록 관리를 체계화했다.

8 주. 우리 팀이 Autor 에서 "의료 클리닉에 음성 AI 전담원무관을 구축해야 한다"라는 생각에서 실제 캐나다의 치과 및 의료 클리닉에서 실제 전화기를 처리하는 시스템으로 가는 데 걸린 시간입니다. 데모도, 프로토타입도 아닙니다. 24/7 운영하며 수천 통의 자동화를 처리하는 Loquent(로퀸트)이라는 실제 시스템입니다. 흥미로운 점은 그것이 오늘 무엇을 하는 것이 아니라, 그 8 주 동안 우리가 내는 결정이 작동 여부를 결정했던 47 개의 결정입니다. 여기에는 우리가 내 모든 주요 기술적 및 제품 결정과 그 이유, 그리고 다시 한 번 했다면 어떻게 바꿀지 설명합니다.

1 주 ~ 2 주: 스택 선택
첫 번째 결정은 음성 파이프라인 (voice pipeline) 입니다. 우리는 전화 수신, 음성에서 텍스트 변환, 텍스트에서 음성 변환을 위한 세 가지 방법을 필요로 했습니다. 종이에 보면 간단해 보입니다. 통신 (telephony) 을 위해 Twilio(트위ilio)를 선택했습니다. 가장 저렴한 것은 아니지만, 50 개 이상의 제품을 출시하며 Twilio 의 에지 케이스 (edge cases) 를 알고 있었기 때문입니다. 8 주 안에 프로덕션에 배포해야 할 때, battle-tested(전투 테스트된) 인프라가 아닌 것을 감행하지 않습니다. Twilio 의 미디어 스트림은 WebSocket 을 통한 실시간 오디오를 제공하여 지연 시간을 낮추는 데 필수적이었습니다.

음성에서 텍스트 변환을 위해 Deepgram(딥그람)을 선택했습니다. Google Speech-to-Text, AWS Transcribe, 그리고 Deepgram 을 실제 클리닉 전화 통화 (허락된 경우) 의 200 개의 샘플 오디오 클립으로 head-to-head(헤드 투 헤드) 테스트했습니다. Deepgram 은 두 가지 축에서 승리했습니다: 의료 용어에 대한 정확도와 지연 시간. 그들의 스트리밍 API 는 일관되게 300ms 미만으로 부분 전사 (partial transcripts) 를 반환했습니다. Google 은 정확도에는 근접했지만 150~200ms 추가 지연을 가졌습니다. 음성 AI 에서 그 200ms 는 자연스러운 대화와 나쁜 VoIP 연결에 대화하는 것 사이의 차이입니다.

LLM 뇌 (LLM brain) — 실제로 호출자가 무엇을 원하는지 이해하고 무엇을 말해야 할지 결정하는 부분 — Anthropic Claude(안스틱 클로드)를 선택했습니다. 우리는 다른 프로젝트에서 GPT-4 를 광범위하게 사용했지만, Claude 는 우리가 필요로 했던 두 가지 것을 제공했습니다: 복잡한 시스템 프롬프트에 대한 예측 가능한 명령 수행과 의료 통화 요구 사항에 대한 대화적 뉘앙스를 더 잘 처리하는 능력. 환자가 "저는 내원해야 할 것 같지만 확실하지 않다"라고 말할 때, Claude 는 적절한 의료주의와 함께 도움이 되는 조합으로 그 모호함을 측정 가능하게 더 잘 처리했습니다.

텍스트에서 음성 변환을 위해 ElevenLabs(일레븐랩스)를 선택했습니다. 6 개의 공급자를 테스트했습니다. ElevenLabs 는 가장 자연스러운 소리를 내는 목소리를 가지고 있었고, 결정적으로 그들의 스트리밍 API 는 전체 응답이 생성되기 전에 오디오 재생을 시작할 수 있게 했습니다. 이는 인식된 지연 시간을 400ms 더 줄였습니다.

백엔드는 NestJS 와 TypeScript(타입스크립트)이며 AWS 에서 Docker(도커)를 사용합니다. 우리의 API 레이어는 이러한 모든 서비스 간의 오케스트レーション을 처리합니다. 우리는 PostgreSQL 와 Prisma 를 호출 로그, 예약 데이터 및 대화 기록에 사용합니다. 클리닉 직원을 위한 프론트엔드 대시보드 는 Vercel(버첼) 에서 Next.js(넥스지스)를 사용합니다.

스택 결정 총 시간: 4 일. 우리는 음성 공급자 벤치마킹에 3 일의 시간을 썼습니다. 왜냐하면 우리가 가장 적은 사전 경력을 가지고 있었기 때문입니다.

3 주 ~ 4 주: 지연 시간 문제
여러분에게 말하지 않는 것이 있습니다. 음성 AI 를 구축하는 기술적 도전은 그것을 똑똑하게 만드는 것이 아니라, 그것을 빠르게 만드는 것입니다. 일반적인 인간 대화는 턴 (turn) 사이에 약 200ms 의 침묵이 있습니다. 우리의 첫 번째 엔드 투 엔드 프로토타입은 호출자가 말한 후 AI 가 응답을 듣기까지 2.4 초의 지연 시간이 있었습니다. 이는 끔찍합니다. 호출자는 전화기를 끊거나 AI 와 함께 말을 걸었습니다.

우리는 지연 시간을 다음과 같이 분해했습니다:
음성에서 텍스트 최종화: ~400ms
LLM 추론 (Claude): ~800ms
텍스트에서 음성 생성: ~600ms
서비스 간 네트워크 오버헤드: ~600ms
그중 하나라도 줄여야 합니다. 여기 우리가 한 것입니다.
음성에서 텍스트: 우리는 최종 전사 (final transcripts) 를 기다리는 대신, 0.85 이상의 신뢰도 임계값을 가진 interim(임시) 전사를 사용하여 행동했습니다. 이는 평균적으로 LLM 추론을 300ms 더 일찍 시작할 수 있게 했지만, occasiona (일부 경우)...

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0