# UsTwo Project Configuration project: name: "UsTwo" version: "0.1.0" paths: data_dir: "data" samples_dir: "data/samples" models_dir: "data/models" output_dir: "data" # Stage 1: Speaker Diarization + ASR stage1: output_path: "data/stage1_output.json" segments_dir: "data/segments" preprocessing: target_sample_rate: 16000 max_duration_sec: 300 min_duration_sec: 3 target_peak: 0.95 # peak normalization — handles volume differences across devices diarization: model: "pyannote/speaker-diarization-3.1" num_speakers: 2 merge_gap_sec: 0.15 asr: model: "large-v3-turbo" compute_type: "int8" language: null # null = auto-detect batch_size: 16 alignment: enabled: true language_id: enabled: true # SenseVoice disabled — Whisper language + text heuristic 사용 # emotion2vec finetuning 실패 시 SenseVoice 감정 힌트 활용 예정 # model: "FunAudioLLM/SenseVoiceSmall" # Stage 2: Audio Emotion + Text Emotion stage2: input_path: "data/stage1_output.json" output_path: "data/stage2_output.json" audio_emotion: model: "iic/emotion2vec_plus_base" lora_onnx_path: "data/models/lora_emotion2vec_7class/model.onnx" finetuned_checkpoint: null # legacy, use lora_onnx_path instead text_emotion: korean_model: "searle-j/kote_for_easygoing_people" korean_lora_onnx_path: "data/models/lora_kcelectra_7class/model.onnx" korean_lora_tokenizer: "data/models/lora_kcelectra_7class/best_model" english_model: "j-hartmann/emotion-english-distilroberta-base" fusion: mode: "emotion_specific" # "emotion_specific" (per-class grid-search optimized) or "fixed" (60/40) audio_weight: 0.6 # fallback for mode="fixed" text_weight: 0.4 # Stage 3: Character Reaction + Garden + Recap stage3: input_path: "data/stage2_output.json" output_path: "data/stage3_output.json" recap: llm_provider: "anthropic" # anthropic | openai model: "claude-sonnet-4-20250514" max_tokens: 500 garden: growth_per_call: 5 max_level: 5 # Stage 4: FastAPI Server stage4: input_path: "data/stage3_output.json" host: "0.0.0.0" port: 8000 max_upload_size_mb: 50 allowed_extensions: [".wav", ".mp3", ".m4a", ".ogg"] # API Keys (환경 변수에서 로드 — .env 파일 사용) api: {} # Logging logging: level: "INFO" format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"