Demo-Voice-Agent-Service / src /stt /deepgram_rest.py
ishaq101's picture
[NOTICKET] feat: endpoint stt and tts
aebb7d4
import logging
from deepgram import AsyncDeepgramClient
from src.config import DEEPGRAM_API_KEY, DEEPGRAM_LANGUAGE
logger = logging.getLogger(__name__)
async def transcribe_audio(data: bytes, mimetype: str = "audio/wav") -> dict:
"""
Transcribes a full audio file using Deepgram pre-recorded API.
Returns dict with 'text' (full transcript) and 'duration' (seconds).
"""
client = AsyncDeepgramClient(api_key=DEEPGRAM_API_KEY)
response = await client.listen.v1.media.transcribe_file(
request=data,
model="nova-2",
language=DEEPGRAM_LANGUAGE,
smart_format=True,
)
try:
transcript = response.results.channels[0].alternatives[0].transcript
except (AttributeError, IndexError):
transcript = ""
try:
duration = response.metadata.duration
except AttributeError:
duration = None
logger.info("STT transcript (%ss): %s", duration, transcript[:80])
return {"text": transcript, "language": DEEPGRAM_LANGUAGE, "duration": duration}