2026년 7월 21일 화요일

main_client.py



# 실행 전 터미널에 설치 필요: pip install httpx pyaudio
import httpx
import pyaudio

# 1. 내 PC의 스피커(오디오 출력 장치) 열기
p = pyaudio.PyAudio()
stream = p.open(
    format=pyaudio.paInt16, # Fish Speech 혹은 설정한 오디오 포맷에 일치시킴
    channels=1,
    rate=32000,             # 샘플 레이트 설정
    output=True
)

# 2. FastAPI 메인 서버에 질문 던지기
url = "http://localhost:8000/chat-voice-rag"
payload = {"question": "나 10일 전에 무슨 옷 사러 간다고 했었지?"}

print("AI가 과거 대화를 조회하고 답변 음성을 생성하고 있습니다...")

# 3. 서버가 스트리밍으로 주는 오디오 조각(Chunk)을 실시간으로 스피커에 밀어넣기
with httpx.stream("POST", url, json=payload, timeout=20.0) as r:
    for chunk in r.iter_bytes():
        # 데이터 조각이 들어오는 족족 스피커로 즉시 출력 (지연 시간 최소화)
        stream.write(chunk)

print("재생 종료.")
stream.stop_stream()
stream.close()
p.terminate()


database.py

import os from contextlib import contextmanager # contextmanager 임포트 from typing import Generator from dotenv...