1bfc8333e9
Per PLAN item 6. Legacy files moved to archive/legacy-pipeline/.
28 lines
810 B
Python
28 lines
810 B
Python
"""Speech-to-text via OpenAI Whisper API"""
|
|
|
|
import logging
|
|
from openai import AsyncOpenAI
|
|
from config import settings
|
|
|
|
logger = logging.getLogger("kira.stt")
|
|
|
|
|
|
def _get_client() -> AsyncOpenAI:
|
|
return AsyncOpenAI(api_key=settings.openai_api_key)
|
|
|
|
|
|
async def transcribe_audio(audio_bytes: bytes) -> str | None:
|
|
"""Transcribe audio bytes to text using Whisper API."""
|
|
try:
|
|
client = _get_client()
|
|
transcript = await client.audio.transcriptions.create(
|
|
model="whisper-1",
|
|
file=("audio.webm", audio_bytes, "audio/webm"),
|
|
language="en",
|
|
response_format="text",
|
|
)
|
|
return transcript.strip() if transcript and transcript.strip() else None
|
|
except Exception as e:
|
|
logger.error(f"STT error: {e}")
|
|
return None
|