This commit is contained in:
Timothy Jaeryang Baek
2026-04-24 15:03:29 +09:00
parent 4dc5c1eb4f
commit d0e51bde5d
2 changed files with 11 additions and 8 deletions

View File

@@ -576,7 +576,7 @@ async def speech(request: Request, user=Depends(get_verified_user)):
async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
mistral_payload = {
'input': payload.get('input', ''),
'model': request.app.state.config.TTS_MODEL or 'mistral-tts-latest',
'model': request.app.state.config.TTS_MODEL or 'voxtral-mini-tts-2603',
'voice_id': payload.get('voice', ''),
'response_format': 'mp3',
}
@@ -1345,7 +1345,7 @@ async def get_available_models(request: Request) -> list[dict]:
except Exception as e:
log.error(f'Error fetching models: {str(e)}')
elif request.app.state.config.TTS_ENGINE == 'mistral':
available_models = [{'id': 'mistral-tts-latest'}]
available_models = [{'id': 'voxtral-mini-tts-2603'}]
return available_models
@@ -1431,11 +1431,14 @@ async def get_available_voices(request) -> dict:
response.raise_for_status()
voices_data = await response.json()
for voice in voices_data:
voice_id = voice.get('voice_id', voice.get('id', ''))
voice_name = voice.get('name', voice_id)
if voice_id:
available_voices[voice_id] = voice_name
# Mistral returns a paginated response: {"items": [...], "page": ..., "total": ...}
voices_list = voices_data.get('items', []) if isinstance(voices_data, dict) else voices_data
for voice in voices_list:
if isinstance(voice, dict):
voice_id = voice.get('voice_id', voice.get('id', ''))
voice_name = voice.get('name', voice_id)
if voice_id:
available_voices[voice_id] = voice_name
except Exception as e:
log.error(f'Error fetching Mistral voices: {str(e)}')