Evaluate your Amazon Nova Sonic voice agent at scale, no microphone required
Quick Summary
이 글은 마이크 없이 Nova Sonic 음성 에이전트를 자동 대화·평가·배치 실행으로 검증하는 오픈소스 테스트 하네스의 필요성과 작동 방식을 설명한다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
이 글은 마이크 없이 Nova Sonic 음성 에이전트를 자동 대화·평가·배치 실행으로 검증하는 오픈소스 테스트 하네스의 필요성과 작동 방식을 설명한다.
📌 핵심 요약
- 음성 에이전트는 예약, 주문 문의, 계정 관리처럼 자연어 대화를 처리하지만, 양방향 오디오 스트리밍·비결정적 응답·다중 턴 문맥·실시간 도구 호출 때문에 기존 텍스트 챗봇 방식으로 테스트하기 어렵다.
- 현재 많은 팀은 사람이 직접 말하고 응답을 듣는 방식으로 품질을 확인하기 때문에 프롬프트나 도구 설정을 바꿀 때마다 수십~수백 개 시나리오를 반복 점검해야 하며, 이는 느리고 일관성이 낮으며 확장되지 않는다.
- Nova Sonic Test Harness는 JSON으로 시나리오와 성공 기준을 정의한 뒤 사용자 시뮬레이터, Nova Sonic 대화 실행, 도구 호출 처리, 로그 저장, LLM 심사 평가까지 무인으로 수행한다.
- 평가는 정확한 문자열 일치가 아니라 목표 달성, 응답 정확성, 도구 사용, 대화 흐름, 시스템 프롬프트 준수, 음성 표현 적합성 같은 지표와 YES/NO 루브릭으로 이루어지며, 중요한 지표의 통과 여부가 전체 PASS/FAIL을 결정한다.
- 이 하네스는 텍스트 출력과 실제 음성 출력이 어긋나는 오디오 환각도 탐지하고, 여러 시나리오·페르소나·반복 실행을 병렬로 돌려 배포 전 회귀와 품질 변동성을 확인할 수 있게 한다.
🧩 주요 포인트
- 음성 에이전트는 예약, 주문 문의, 계정 관리처럼 자연어 대화를 처리하지만, 양방향 오디오 스트리밍·비결정적 응답·다중 턴 문맥·실시간 도구 호출 때문에 기존 텍스트 챗봇 방식으로 테스트하기 어렵다.
- 현재 많은 팀은 사람이 직접 말하고 응답을 듣는 방식으로 품질을 확인하기 때문에 프롬프트나 도구 설정을 바꿀 때마다 수십~수백 개 시나리오를 반복 점검해야 하며, 이는 느리고 일관성이 낮으며 확장되지 않는다.
- Nova Sonic Test Harness는 JSON으로 시나리오와 성공 기준을 정의한 뒤 사용자 시뮬레이터, Nova Sonic 대화 실행, 도구 호출 처리, 로그 저장, LLM 심사 평가까지 무인으로 수행한다.
- 평가는 정확한 문자열 일치가 아니라 목표 달성, 응답 정확성, 도구 사용, 대화 흐름, 시스템 프롬프트 준수, 음성 표현 적합성 같은 지표와 YES/NO 루브릭으로 이루어지며, 중요한 지표의 통과 여부가 전체 PASS/FAIL을 결정한다.
- 이 하네스는 텍스트 출력과 실제 음성 출력이 어긋나는 오디오 환각도 탐지하고, 여러 시나리오·페르소나·반복 실행을 병렬로 돌려 배포 전 회귀와 품질 변동성을 확인할 수 있게 한다.
🧠 상세 정리
1. 음성 에이전트 테스트가 병목이 되는 이유
글은 음성 에이전트가 기업의 고객 상호작용 방식을 바꾸고 있다는 설명에서 출발한다. 예약, 주문 문의, 계정 관리 같은 업무를 자연스러운 음성 대화로 처리할 수 있지만, 기능이 좋아질수록 이를 어떻게 검증할지가 핵심 문제가 된다. 텍스트 챗봇은 입력을 스크립트화하고 출력을 비교할 수 있지만, 음성 에이전트는 오디오를 양방향으로 스트리밍하고 문맥을 유지하며 도구를 실시간으로 사용한다. 그래서 많은 팀은 실제 사람이 마이크로 말하고 결과를 듣는 수동 테스트에 의존하며, 이 방식은 느리고 반복성이 낮으며 규모를 키우기 어렵다.
2. 수동 검증이 만드는 두 가지 품질 문제
저자는 테스트 공백이 두 가지 직접적인 문제를 만든다고 설명한다. 첫째, 시스템 프롬프트와 도구 정의를 조금만 바꿔도 그 변화가 정확도를 높였는지 낮췄는지 확인하려면 여러 대화 시나리오를 다시 사람이 검증해야 한다. 자동 피드백이 없으면 프롬프트 엔지니어링은 근거 있는 개선보다 추측에 가까워진다. 둘째, 배포 전에 회귀 테스트를 돌리거나 수백 개 엣지 케이스에서 품질을 측정하는 안정적인 평가 프레임워크가 없다. 예를 들어 50개 시나리오와 3개 사용자 페르소나가 있으면 150개의 수동 테스트가 필요하고, 매번 몇 분씩 걸리므로 프롬프트 변경마다 며칠의 QA 비용이 발생할 수 있다.
3. Nova Sonic Test Harness의 목적
이 글에서 소개하는 Nova Sonic Test Harness는 이러한 두 문제를 해결하기 위해 만든 오픈소스 프레임워크다. 역할은 두 갈래로 정리된다. 하나는 프롬프트와 도구 설정을 빠르게 조정하기 위한 반복 도구로서, 대화를 실행하고 결과를 보고 다시 조정하는 과정을 자동화한다. 다른 하나는 음성 에이전트 품질을 대규모로 검증하는 평가 프레임워크로서, 완전한 다중 턴 대화를 자동 실행하고 LLM-as-judge 방식으로 평가한다. 또한 텍스트 출력과 실제 오디오 출력이 서로 다른 경우, 즉 오디오 환각까지 탐지할 수 있으며 이 모든 과정은 마이크 없이 수행된다.
4. 음성-음성 모델 테스트가 텍스트 테스트와 다른 점
글은 기존 텍스트 기반 LLM 테스트 도구를 그대로 적용하기 어려운 이유를 구체적으로 나열한다. 음성-음성 모델은 단순한 요청-응답 구조가 아니라 오디오와 텍스트가 동시에 오가는 지속적인 풀듀플렉스 연결을 사용하므로 일반 HTTP 테스트 방식으로 다루기 어렵다. 같은 질문에도 매번 표현, 오디오 타이밍, 도구 호출 순서가 달라질 수 있어 정확한 문자열 비교가 맞지 않는다. 또한 한 턴만 보면 품질을 판단하기 어렵고, 이전 발화를 기억하는지, 적절히 후속 질문을 하는지, 대화 종료 시점을 아는지처럼 여러 턴에 걸친 행동이 중요하다. 여기에 텍스트에는 ‘3:00 PM’이라고 나오지만 오디오에서는 ‘3:30 PM’이라고 말하는 식의 오디오-텍스트 불일치와 약 8분 세션 제한도 별도로 처리해야 한다.
5. 테스트 시나리오 정의 방식
하네스의 첫 단계는 JSON 구성 파일로 테스트 시나리오를 정의하는 것이다. 이 파일에는 Nova Sonic이 어떤 역할을 맡는지, 호출자는 어떤 페르소나인지, 어떤 도구를 사용할 수 있는지, 성공을 어떤 기준으로 판단할지 등이 들어간다. 예시에서는 병원 예약 접수 에이전트를 검증하며, 시스템 프롬프트, 음성 ID, 예약 가능 여부 확인 같은 도구 구성, 사용자 시뮬레이터 모델, 사용자 역할 프롬프트, 최대 턴 수, 자동 평가 여부, 평가 기준과 루브릭이 포함된다. 핵심은 기대 출력 문자열을 쓰는 것이 아니라 목표와 평가 기준을 정의한다는 점이다. Nova Sonic의 응답은 매번 달라질 수 있으므로, 정확한 문장 일치가 아니라 목표 달성과 루브릭 충족 여부로 평가한다.
6. 자동 대화 실행과 세션 처리
구성 파일이 준비되면 하네스는 대화를 자동으로 실행한다. 각 턴에서 사용자 시뮬레이터 역할의 LLM이 지금까지의 대화를 읽고, 지정된 페르소나에 맞춰 다음 발화를 생성한다. 이 발화는 빠른 테스트에는 텍스트로, 전체 음성 인식 경로를 검증할 때는 음성 합성 오디오로 Nova Sonic에 전달될 수 있다. Nova Sonic은 텍스트, 오디오, 도구 호출을 비동기적으로 스트리밍하고, 하네스는 이를 실시간으로 처리한다. 턴 종료는 침묵이나 단순 타임아웃이 아니라 speculative 텍스트 블록이 최종화되었는지를 기준으로 감지한다. 도구 호출이 발생하면 등록된 핸들러가 연결을 끊지 않고 결과를 반환하며, 최종 텍스트, WAV 오디오, 도구 호출, 타이밍 메타데이터가 모두 저장된다. 긴 대화에서는 SessionContinuationManager가 연결 수명을 감시해 기본 6분 전에 새 세션을 만들고 대화 이력을 재생한다.
7. LLM 심사 기반 품질 평가
대화가 끝나면 전체 transcript와 평가 기준이 별도의 LLM judge에 전달된다. 심사 모델은 테스트 내부 설정을 보지 않고 대화와 기준만 보도록 설계되어 평가 편향을 줄인다. 기본 평가는 목표 달성, 응답 정확성, 도구 사용, 대화 흐름, 시스템 프롬프트 준수, 음성 포맷이라는 여섯 지표를 사용한다. 이 지표들은 Critical, Important, Advisory 계층으로 나뉘며, 전체 PASS를 받으려면 Critical에 해당하는 목표 달성과 응답 정확성이 모두 통과해야 한다. 각 지표는 여러 루브릭 질문의 엄격한 YES/NO 판정으로 평가되고, 하나의 지표는 모든 질문이 통과해야만 통과한다. 실패 시 어떤 질문에서 실패했는지와 심사 이유를 확인할 수 있어 수정 지점을 구체적으로 파악할 수 있다.
8. 결과 확인, 오디오 환각 탐지, 대규모 실행
결과는 여러 작업 흐름에 맞게 제공된다. Streamlit 대시보드에서는 배치 결과를 시각적으로 탐색하고, 실행 간 비교, 실패 사례 드릴다운, transcript 검색을 할 수 있다. 구조화된 JSON과 CSV, 상호작용 로그, 평가 결과, 오디오 파일도 세션별 디렉터리에 저장되며, PASS/FAIL과 pass rate는 CI/CD 품질 게이트에 연결하기 쉽게 설계되어 있다. 특히 글은 음성-음성 모델이 텍스트와 오디오를 동시에 만들기 때문에 두 출력이 사실적으로 어긋날 수 있다고 강조한다. 이를 잡기 위해 각 턴의 오디오를 저장소에 올리고, 실제 발화 내용을 전사한 뒤, 텍스트 출력과 비교해 filler, 의미가 같은 표현 차이, 날짜·숫자·이름·주장 같은 사실 오류를 구분한다. 또한 배치 러너는 의료, 은행, 고객서비스 시나리오와 반복 실행을 병렬로 돌려 비결정성에 따른 변동성과 여러 페르소나·엣지 케이스의 품질을 함께 확인하게 한다.
🧾 핵심 주장 / 시사점
- 음성 에이전트 품질 평가는 ‘정답 문장’ 검사가 아니라 목표 달성, 사실 정확성, 도구 사용, 대화 흐름을 함께 보는 루브릭 기반 평가로 설계되어야 한다.
- 텍스트 로그만으로는 음성 에이전트를 충분히 검증할 수 없으며, 실제 오디오가 텍스트와 다른 사실을 말하는 오디오 환각은 별도 탐지 대상이 되어야 한다.
- 프롬프트와 도구 설정을 빠르게 개선하려면 단일 수동 테스트보다 페르소나·시나리오·반복 실행을 자동화한 회귀 평가 체계가 더 중요하다.
✅ 액션 아이템
- 예약·주문·계정 처리까지 포함한 음성 스트리밍 시나리오를 정의해 비결정성·다중 턴·실시간 도구 호출 조건에서 결함 패턴을 정밀 분류한다.
- Nova Sonic 테스트 하네스를 JSON 시나리오와 사용자 시뮬레이터, 대화 실행, 도구 호출 처리, 로그 저장, LLM 심사로 구성해 무인 검증 흐름을 확보한다.
- 평가를 문자열 일치에서 목표 달성·응답 정확성·도구 사용·대화 흐름·시스템 프롬프트 준수·음성 표현 적합성의 YES/NO 루브릭으로 전환해 PASS/FAIL 규칙을 통일한다.
❓ 열린 질문
- 텍스트 출력과 실제 음성 출력 불일치에서 오디오 환각을 판단할 임계 규칙은 어떤 형태의 발화쌍에서 가장 신뢰도 있게 적용할 수 있을까?
- 여러 시나리오와 페르소나, 반복 실행의 병렬 테스트에서 회귀 탐지를 확보하기 위한 최소 조합 수와 반복 횟수는 어떻게 산정할 것인가?
- 핵심 지표 중 하나가 실패해도 다른 지표가 통과하면 배포 판단을 허용할 예외 기준이 필요한가?