This commit is contained in:
@@ -1,13 +1,35 @@
|
||||
"""FluentGerman.ai — Admin voice-to-instruction & voice API router."""
|
||||
|
||||
from fastapi import APIRouter, Depends, UploadFile, File, HTTPException
|
||||
import logging
|
||||
from fastapi import APIRouter, Depends, UploadFile, File, HTTPException
|
||||
from fastapi.responses import Response
|
||||
|
||||
# ... imports ...
|
||||
from app.auth import require_admin, get_current_user
|
||||
from app.config import get_settings
|
||||
from app.models import User
|
||||
from app.schemas import VoiceConfigOut, VoiceInstructionRequest
|
||||
from app.services.llm_service import summarize_instruction
|
||||
from app.services.voice_service import synthesize, transcribe
|
||||
|
||||
# Setup logger
|
||||
logger = logging.getLogger("fluentgerman.voice")
|
||||
|
||||
# ...
|
||||
router = APIRouter(prefix="/api/voice", tags=["voice"])
|
||||
|
||||
|
||||
@router.get("/config", response_model=VoiceConfigOut)
|
||||
async def voice_config(user: User = Depends(get_current_user)):
|
||||
"""Return current voice mode so frontend knows whether to use browser or API."""
|
||||
settings = get_settings()
|
||||
# Check if we have a dedicated voice key OR a generic LLM key for OpenAI
|
||||
has_key = bool(settings.openai_api_key or (settings.llm_api_key and settings.llm_provider == "openai"))
|
||||
|
||||
api_available = bool(settings.voice_mode == "api" and has_key)
|
||||
return VoiceConfigOut(
|
||||
voice_mode=settings.voice_mode,
|
||||
voice_api_available=api_available,
|
||||
)
|
||||
|
||||
|
||||
@router.post("/transcribe")
|
||||
async def transcribe_audio(
|
||||
|
||||
Reference in New Issue
Block a user