Files
language-llm/backend/app/services/voice_service.py
Dennis Thiessen be366777d4
All checks were successful
Deploy FluentGerman.ai / deploy (push) Successful in 53s
added voice functionality and increased avatar size
2026-02-18 10:11:13 +01:00

42 lines
1.2 KiB
Python

"""FluentGerman.ai — Voice service (API provider + browser fallback)."""
import io
import openai
from app.config import get_settings
async def transcribe(audio_bytes: bytes, filename: str = "audio.webm") -> str:
"""Transcribe audio to text using OpenAI Whisper API."""
settings = get_settings()
# Use dedicated OpenAI key if available, otherwise fallback to LLM key
api_key = settings.openai_api_key or settings.llm_api_key
client = openai.AsyncOpenAI(api_key=api_key)
audio_file = io.BytesIO(audio_bytes)
audio_file.name = filename
transcript = await client.audio.transcriptions.create(
model=settings.stt_model,
file=audio_file,
)
return transcript.text
async def synthesize(text: str) -> bytes:
"""Synthesize text to speech using OpenAI TTS API."""
settings = get_settings()
# Use dedicated OpenAI key if available, otherwise fallback to LLM key
api_key = settings.openai_api_key or settings.llm_api_key
client = openai.AsyncOpenAI(api_key=api_key)
response = await client.audio.speech.create(
model=settings.tts_model,
voice=settings.tts_voice,
input=text,
response_format="mp3",
)
return response.content