음성 관련 애플리케이션 프로젝트입니다.
- Python 3.11+
# 가상환경 생성 및 활성화
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 의존성 설치
pip install -r requirements.txt개발 서버(Uvicorn) 실행:
uvicorn app.main:app --reload --port 8000API 문서: http://127.0.0.1:8000/docs
업로드 API(/users/voices) 호출 후 서버는 다음을 비동기로 수행합니다.
- STT → 텍스트 감정 분석 →
voice_content저장 - 음성 감정 분석(오디오 자체) →
voice_analyze저장
응답은 업로드 및 메타/매핑 저장 후 즉시 반환되며, 분석 결과는 나중에 조회 API에서 확인할 수 있습니다.
.env 파일에 AWS RDS 및 필요한 설정을 추가하세요:
# 데이터베이스 (AWS RDS)
DB_HOST=your-rds-endpoint.region.rds.amazonaws.com
DB_PORT=3306
DB_USER=admin
DB_PASSWORD=your_password
DB_NAME=caring_voice
# AWS 설정
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_REGION=ap-northeast-2
S3_BUCKET_NAME=your-bucket-name
# Google Cloud 설정
GOOGLE_APPLICATION_CREDENTIALS=/app/credentials/google-credentials.json# 빌드 및 실행
docker-compose up -d
# 로그 확인
docker-compose logs -f
# 중지
docker-compose down- 로컬:
http://localhost:8000 - API 문서:
http://localhost:8000/docs
서버 시작 시 자동으로 마이그레이션이 실행됩니다.
# 마이그레이션 파일 생성
alembic revision --autogenerate -m "커밋 메시지"
# 마이그레이션 실행
alembic upgrade head
# 마이그레이션 롤백
alembic downgrade -1질문 템플릿을 데이터베이스에 저장합니다:
python init_questions.py이 명령어는 다음 카테고리의 질문들을 자동으로 추가합니다:
- emotion (14개)
- stress (10개)
- physical (10개)
- social (10개)
- self_reflection (15개)
총 59개의 질문이 데이터베이스에 저장됩니다.
프로젝트 루트에 .env 파일을 생성하고 다음 값을 채우세요. 예시는 .env.example 참고.
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=ap-northeast-2
S3_BUCKET_NAME=your-bucket
S3_PREFIX=voices
# 서비스 계정 키 파일 경로 설정 (Speech-to-Text, Natural Language API 공통)
GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-key.json
# MySQL 데이터베이스 연결 정보
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=table_name
.env는 app/database.py에서 자동 로드됩니다.
💡 배포 환경: 운영 환경에서는 환경변수를 시스템에 직접 설정하거나,
.env파일을 사용하지 않고 컨테이너/Docker의 환경변수 설정을 사용하세요.
POST /voices/upload: 음성 파일 업로드 + STT 변환POST /voices/transcribe: STT 변환만POST /voices/{voice_key}/analyze-emotion: S3 파일 감정 분석GET /voices: 파일 목록 조회
POST /nlp/sentiment: 텍스트 감정 분석POST /nlp/entities: 엔티티 추출POST /nlp/syntax: 구문 분석POST /nlp/analyze: 종합 텍스트 분석
caring-voice/
├── app/
│ ├── __init__.py
│ └── main.py # FastAPI 엔트리 포인트 및 엔드포인트
├── .gitignore
├── README.md
├── requirements.txt
└── LICENSE
프로젝트 개발에 참여하시려면:
- 이 저장소를 포크하세요
- 새로운 브랜치를 생성하세요 (
git checkout -b feature/새기능) - 변경사항을 커밋하세요 (
git commit -am '새기능 추가') - 브랜치에 푸시하세요 (
git push origin feature/새기능) - Pull Request를 생성하세요
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.