핵심 Method 요약
- Input: Speech query + Podcast audio passages
- Output: Retrieved relevant audio segments + Generated text answers
- Transformation: Speech → CLAP embedding → Vector retrieval → Transcription-based generation
알고리즘 구조
- Audio Processing: NeMo ClusteringDiarizer + Silero VAD + Segmentation
- Embedding: CLAP (Contrastive Language-Audio Pre-training)
- Retrieval: FAISS vector DB + L2-normalized cosine similarity
- Generation: Faster-Whisper transcription + GPT-4o
핵심 수식
코사인 유사도: similarity = cos(θ) = (A·B) / (∥A∥∥B∥)
→ ASR 전사 없이 오디오 임베딩 공간에서 직접 의미 기반 검색
1. 연구 배경 및 동기
기존 오디오 RAG의 한계
전통적인 음성 기반 RAG 시스템은 cascaded pipeline을 따른다.
Audio → ASR → Text Retrieval → Text Generation
문제점
ASR 오류 전파 (Error Propagation)
- ASR 단계에서 발생한 오류가 검색과 생성 단계로 누적되어 최종 성능을 크게 저하시킨다.
- 특히 팟캐스트와 같은 비정형 구어체 오디오에서 ASR 성능이 떨어짐
의미적 표현 손실
- 텍스트 변환 과정에서 음성의 운율적 특징, 화자 특성, 감정적 뉘앙스 등이 완전히 소실
- 단순한 단어 매칭에 의존하여 의미적 유사성 포착에 한계
팟캐스트 특화 문제
- 비공식적 언어, 겹치는 화자, 배경 소음, 웃음 등 복잡한 오디오 환경
- 고유명사나 전문용어의 잘못된 전사로 인한 검색 실패
연구의 핵심 질문
"ASR 전사 단계를 완전히 우회하고 음성 쿼리로 오디오 문서를 직접 검색할 수 있다면?"
→ VoxRAG로 해결하자!
2. Method
전체 아키텍처 개요
Stage 1: Speech-to-Speech Retrieval
음성 쿼리를 입력받아 관련된 오디오 세그먼트를 직접 검색. 핵심은 CLAP을 통해 텍스트와 음성을 동일한 임베딩 공간에 매핑하는 것.
Stage 2: Transcription-based Generation
검색된 오디오 세그먼트를 전사하여 GPT-4o가 최종 답변을 생성.
팟캐스트 인덱싱 파이프라인
오디오 전처리
- 모노 변환, 16kHz 리샘플링
- NeMo ClusteringDiarizer를 통한 화자 분리
- Silero VAD를 통한 음성 구간 감지
세그멘테이션 전략
- 침묵 구간 기반 세그멘테이션과 화자 전환점을 결합
- 각 세그먼트를 90초 이하로 제한하여 의미 단위 유지
- 논문 실험에서는 2시간 에피소드를 202개 세그먼트로 분할
CLAP 임베딩
- 각 오디오 세그먼트를
laion/clap-htsat-unfused 모델로 임베딩
- 음성과 언어의 공동 임베딩 공간에서 의미적 표현 생성
- L2 정규화를 통해 코사인 유사도와 내적 계산 동등성 확보
검색 메커니즘
쿼리 처리
query_embedding = clap_model.encode_audio(spoken_query)
query_embedding = normalize(query_embedding)
유사도 검색
- FAISS FlatIP 인덱스를 사용한 효율적인 벡터 검색
- 코사인 유사도 기반 Top-10 세그먼트 검색
- 선택적으로 ms-marco-MiniLM-L6-v2 교차 인코더 재순위화 적용
컨텍스트 확장
- 검색된 세그먼트의 인접 구간도 포함하여 연속성 보장
답변 생성
하이브리드 접근법
검색은 완전 음성 기반이지만, 생성 단계에서는 전사 텍스트를 활용
검색된 오디오 세그먼트 → Faster-Whisper 전사 → GPT-4o 프롬프트 → 최종 답변
프롬프트 구성
- 검색된 세그먼트별 화자 정보와 전사 텍스트
- 사용자 쿼리의 전사 텍스트
- 컨텍스트 정보를 포함한 구조화된 프롬프트
3. 실험 설계 및 결과 분석
데이터셋
Trash Taste 팟캐스트
- 20개 에피소드 코퍼스, 주요 평가는 단일 에피소드(2시간 3분)
- 3명의 주요 화자: Joey, Connor, Garnt
- 202개 세그먼트로 분할 (90초 이하)
쿼리 세트 구성
- 유기적 쿼리 11개: Tokyo Weekender 인터뷰 + 라이브 QA 세션
- 합성 쿼리 39개: GPT-4o/o1으로 생성, 중복 제거 후 샘플링
- 총 50개 다양성 높은 테스트 쿼리
- 동일한 남성 영어 원어민이 통제된 환경에서 녹음
평가 Metric 및 Baseline
검색 성능
- Recall@10: 찾아야 할 것 중에 얼마나 찾았나?
- nDCG@10: 좋은 결과가 앞쪽에 얼마나 잘 배치되었나?
답변 품질
- Relevance: 질문과의 관련성 (0-2점)
- Accuracy: 사실적 정확성 (0-2점)
- Completeness: 답변 완전성 (0-2점)
- Precision: 구체적 정밀성 (0-2점)
LLM-as-a-Judge 평가
RAGElo 프레임워크를 활용한 GPT-4o 기반 자동 평가
실험 결과
검색 성능
| Setup | Very Relevant (Recall@10) | Very Relevant (nDCG@10) | Somewhat Relevant (Recall@10) | Somewhat Relevant (nDCG@10) |
|---|
| Cosine | 0.34 | 0.03 | 0.60 | 0.27 |
| Cos + CE | 0.26 | 0.03 | 0.46 | 0.14 |
KEY INSIGHTS
- 주제적 Alignment은 우수: Somewhat Relevant에서 60% Recall@10 달성
- 정밀 검색은 한계: Very Relevant에서 34% Recall@10으로 낮음
- 교차 인코더 역효과: 재순위화가 오히려 성능 저하 초래
답변 품질
| Metric | Mean | Std Dev | vs Relevance |
|---|
| Relevance | 0.84 | 0.87 | — |
| Accuracy | 0.58 | 0.81 | p < 0.01 ↓ |
| Completeness | 0.56 | 0.81 | p < 0.01 ↓ |
| Precision | 0.46 | 0.81 | p < 0.01 ↓ |
KEY FINDINGS
- 관련성은 높지만 정밀도 부족: "대충 맞는" 내용은 찾지만 "정확한" 답변 부족
- 팩트 정확성 연동: Accuracy, Completeness, Precision 간 높은 상관관계 (r > 0.91)
- 완벽 답변 비율: 20%의 쿼리에서 모든 차원 만점 달성
- 특정 주제 편향: "shower" 관련 쿼리에서 상대적 우수 성능
노이즈 강건성
- 다양한 SNR 수준의 가우시안 노이즈 환경에서 안정적 성능 유지
- 전통적인 ASR 기반 시스템 대비 강건성 우위 확인
4. 한계점
Architecture에서의 한계
완전한 전사 없는 시스템 미달성
- 검색은 음성 기반이지만 생성 단계에서 여전히 ASR 전사에 의존
- "Transcription-Free"라는 목표와 실제 구현 간 괴리
CLAP 임베딩의 한계
- 거친 의미적 정렬: 주제적 관련성은 포착하지만 세밀한 의미 매칭 부족
- 시간적 정보 손실: Average pooling으로 인한 순서 및 강조점 정보 소실
- 복잡한 관계 모델링 한계: 단순 코사인 유사도의 표현력 제약
실험 설계의 제약
데이터셋 일반화 한계
- 단일 에피소드 평가: 다양한 주제, 화자, 환경에 대한 일반화 능력 미검증
- 언어 제한: 영어 데이터셋만으로 다언어 적용 가능성 불명확
- 도메인 특화: 팟캐스트 외 다른 오디오 도메인에서의 성능 미지
베이스라인 비교 부재
- 전사 기반 검색과의 비교 없음: BM25, Dense Retriever 등과의 성능 비교 부재
- 트레이드오프 평가 불가: 전사 회피의 실제 이득/손실 정량화 어려움
평가 편향 가능성
- Self-agreement 문제: GPT-4o로 생성하고 평가하여 과대평가 위험
- 합성 쿼리 편향: 실제 사용자 쿼리 특성과의 차이
5. 개선 방향 및 Future Work
시간적 모델링 강화
Cross-Modal Alignment 개선
- Contrastive Learning 강화
- InfoNCE Loss를 통한 더 강력한 음성-텍스트 정렬
- Hard negative mining으로 세밀한 의미 구분 능력 향상
- Multi-Modal Fusion
- 음성의 prosodic 특징과 semantic 특징의 분리된 모델링
- 화자 특성, 감정, 맥락 정보의 명시적 통합
완전한 Audio-Native 시스템
- Speech Language Model 통합
- Qwen-Audio, SpeechGPT 등을 활용한 음성 직접 처리
- 전사 단계 완전 제거로 진정한 "Transcription-Free" 구현
- Audio-to-Audio Generation
- 검색된 오디오 세그먼트를 직접 조건으로 하는 음성 답변 생성
- 화자 특성, 억양 정보까지 포함한 자연스러운 음성 응답
평가 프레임워크 개선
- Cross-Lingual 확장
- 한국어, 일본어 등 다언어 팟캐스트 데이터셋 구축
- 언어별 CLAP 모델 성능 비교 분석
6. 가능한 질문들
"정말 ASR을 완전히 대체할 수 있는가?"
현재는 생성 단계에서 여전히 전사에 의존하며, ASR 기술도 지속 발전 중. 하지만 음성 고유 정보 보존과 오류 전파 방지 측면에서 장기적 가치 존재.
"Average Pooling이 정말 최선인가?"
명백한 한계. 시간 정보의 불필요한 손실로 이어지며, attention 기반 또는 hierarchical 접근법이 더 적합할 것.
"단일 에피소드 평가의 신뢰성은?"
심각한 일반화 한계. 다양한 도메인, 화자, 언어에서의 검증이 필수적이며, 현재 결과만으로는 실용성 판단 어려움.
"실제 산업 환경에서 적용 가능한가?"
실시간 처리, 대용량 검색, 기존 시스템 통합 등 현실적 제약들이 많음. 특히 3.02초의 응답 시간은 개선 필요.
"CLAP 임베딩의 도메인 특화 성능은?"
팟캐스트 외 회의록, 강의, 뉴스 등에서의 성능 미검증. 도메인별 fine-tuning이나 specialized CLAP 모델 필요할 것.
VoxRAG와 SpeechRAG의 차이점
1. 질문 방식의 차이
VoxRAG: 사용자가 음성으로 직접 질문하는 시나리오를 위해 설계되었다. 시스템은 사용자의 말하는 쿼리를 입력받아 오디오 데이터베이스를 검색한다.
SpeechRAG: 사용자가 타이핑하여 질문을 입력하는 방식을 따른다. 텍스트 기반 쿼리를 사용하여 음성 데이터를 검색하도록 설계되었다.
2. 핵심 기술의 차이
VoxRAG: CLAP이라는 범용 오디오-언어 모델을 그대로 활용한다. 음성 질문과 팟캐스트 오디오 조각을 모두 동일한 의미 공간의 벡터로 변환하며, 별도의 미세 조정 없이 기존 모델을 조합하는 방식이다.
SpeechRAG: 텍스트 모델의 파라미터는 고정시킨 채, 음성 데이터를 텍스트 모델의 의미 공간에 정렬시키는 'Speech Adapter'를 별도로 학습시킴 → 음성과 텍스트 사이의 의미적 간극을 메우기 위한 미세 조정 방식
3. 최종 답변 생성 방식의 차이
VoxRAG: 관련 오디오 조각을 찾은 후, Faster-Whisper와 같은 ASR 시스템을 통해 텍스트로 변환한다. 그 후 변환된 텍스트를 GPT-4o 같은 LLM에 입력하여 최종 답변을 생성함. → 검색 단계에서는 ASR을 피했지만 답변 생성 단계에서 ASR에 다시 의존하게 되어 오류의 영향을 받을 수 있다.
SpeechRAG: 파이프라인 전체에 걸쳐 'ASR-Free' 원칙을 지킨다. 검색된 원본 오디오 파일을 변환 과정 없이 그대로 원래의 텍스트 질문과 함께 음성 언어 모델(SLM)에 직접 입력한다. 이 SLM은 음성과 텍스트를 동시에 이해할 수 있어, 중간 단계의 텍스트 전사 없이도 최종 답변을 생성해낼 수 있다.
VoxRAG
음성 질문 → 오디오 조각 검색 → 전사(텍스트 변환) → LLM 답변 생성
처리 단계
- 음성 질문 → 의미 벡터 변환
- 입력:
shower_question.wav
- 모델: CLAP
- 출력: Query Vector (예:
[0.12, -0.45, 0.81, ...])
- 팟캐스트 오디오 인덱싱
- 긴 오디오를 세그먼트(202개)로 분할
- 각 세그먼트를 CLAP으로 벡터화 → 벡터 DB(FAISS)에 저장
- 질문과 유사한 오디오 검색
- 방법: 코사인 유사도
- 예시: Segment 17 (샤워 토론)과 0.92 → 가장 유사
- 검색된 오디오 → 텍스트 변환 후 LLM 입력
- 상위 10개 오디오 전사(Faster-Whisper)
- 전사 + 사용자 질문을 LLM(GPT-4o)에 프롬프트로 전달
- 최종 출력: 정리된 텍스트 답변
SpeechRAG
텍스트 질문 → 오디오 벡터 직접 검색 → 음성 그대로 LLM 입력 (전사 불필요)
처리 단계
- 텍스트 질문 → 텍스트 의미 벡터 변환
- 입력:
"Who composed the Sabre Dance?"
- 모델: E5-Mistral-7B
- 출력: Text Query Vector
- 오디오 파일 → 텍스트와 같은 의미 공간으로 변환
- 입력: 원본 오디오 (
...Aram Khachaturian...Sabre Dance...)
- 처리: HuBERT(음성 특징 추출) + Speech Adapter(텍스트 의미 공간으로 매핑)
- 최종 출력: Audio Passage Vector
- 질문 벡터 vs 오디오 벡터 검색
- 방법: 코사인 유사도
- 결과: 관련 오디오 상위 5개 반환
- 검색된 오디오를 직접 활용해 답변 생성
- 입력: 질문(텍스트) + 원본 오디오 클립
- 모델: Qwen-Audio (Speech Language Model)
- 특징: 전사 과정 없이 음성에서 직접 정답 추출
- 최종 출력:
"The Sabre Dance was composed by Aram Khachaturian."
비교 요약
| 항목 | VoxRAG | SpeechRAG |
|---|
| 질문 입력 | 음성 | 텍스트 |
| 인덱싱 대상 | 오디오 세그먼트 (CLAP 벡터) | 오디오 (Speech Adapter → Text Retriever 공간) |
| 검색 단위 | 텍스트 변환된 세그먼트 | 원본 오디오 파일 |
| LLM 입력 | 전사 텍스트 + 질문 | 질문(텍스트) + 원본 오디오 |
| 장점 | CLAP 기반, 전사로 텍스트 품질 제어 가능 | 전사 불필요, 음성 그대로 활용 |
| 단점 | 전사 과정 필요, 오류 누적 가능 | 음성-텍스트 정렬 학습 필요 |
결론
VoxRAG는 "ASR 없는 직접 음성 검색"이라는 혁신적 아이디어를 구현하여 새로운 연구 방향을 제시했다. 특히 ASR 오류가 빈번한 환경에서의 강건성과 의미 기반 검색 가능성을 보였다.
하지만 정밀 검색의 한계, 시간 정보 손실, 베이스라인 비교 부재 등의 한계는 여전히 해결해야 할 과제다. 이러한 한계점들은 오히려 향후 연구의 명확한 개선 방향을 제시한다는 점에서 의미가 있다.