통합된 FastAPI 서버로 STT(Speech-to-Text)와 발화 점수 계산 기능을 제공합니다.
pip install -r requirements.txt.env 파일을 생성하고 다음 내용을 추가하세요:
ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
# 방법 1: Python으로 직접 실행
python main.py
# 방법 2: uvicorn으로 실행
uvicorn main:app --host 0.0.0.0 --port 8000 --reload- GET
/health - 서버 상태 확인
- POST
/stt - 음성 파일을 텍스트로 변환하고 발화를 구분
- 요청: PCM 오디오 데이터 (바이너리)
- 응답:
{
"message": "End of speech",
"utterances": [
{
"speaker_id": "speaker_0",
"text": "첫 번째 발언입니다.",
"start": 0.119
}
]
}- POST
/api/v1/score_utterance - 발화에 대한 질문 필요성 점수 계산
- 요청:
{
"speech_id": 1,
"utterance": "회의 안건에 대해 제안하고 싶습니다.",
"has_agenda": true,
"agenda_text": "프로젝트 진행 방향 논의",
"recent_utterances": ["이전 발화 내용"]
}- 응답:
{
"speech_id": 1,
"score": 15.0,
"isQuestionNeeded": true
}서버 실행 후 다음 URL에서 자동 생성된 API 문서를 확인할 수 있습니다:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
elevenlabs_server.py: 독립적인 FastAPI 앱 (포트 8000)score_utterance.py: 독립적인 FastAPI 앱 (별도 포트 필요)- 각각 별도 프로세스로 실행해야 함
main.py: 통합된 FastAPI 앱- 모든 엔드포인트가 하나의 서버에서 제공
- 단일 포트(8000)에서 모든 기능 사용 가능
- 코드 중복 제거 및 유지보수성 향상
발화 점수는 다음 요소들을 종합하여 계산됩니다:
-
유사도 점수 (0-15점)
- 안건지와의 유사도 또는 최근 발화와의 맥락 유사도
-
키워드 점수 (0-12점)
- 제안/추천 키워드: +5점
- 결정/합의 키워드: +3점
- 정보 요청 키워드: +4점
-
Named Entity 점수 (0-5점)
- 2개 이상: +5점
- 1개: +3점
-
형식 점수 (0-7점)
- 의문문: +4점
- 요청문: +3점
-
길이 점수 (-3~+2점)
- 적절한 길이: +2점
- 너무 짧음: -3점
총점 10점 이상일 때 질문이 필요하다고 판단됩니다.