import tempfile import time import config def transcribe_audio(audio_path: str) -> str: """Speech-to-text with Deepgram Nova.""" config.ensure_clients() with open(audio_path, "rb") as f: audio_bytes = f.read() response = config.deepgram_client.listen.v1.media.transcribe_file( request=audio_bytes, model=config.DEEPGRAM_STT_MODEL, smart_format=True, punctuate=True, ) return response.results.channels[0].alternatives[0].transcript.strip() def speak_text(text: str) -> str: """Text-to-speech with Deepgram Aura; returns a unique WAV path (helps autoplay).""" config.ensure_clients() text = text[:2000] stream = config.deepgram_client.speak.v1.audio.generate( text=text, model=config.DEEPGRAM_TTS_MODEL, encoding="linear16", container="wav", ) audio_bytes = b"".join(stream) out = tempfile.NamedTemporaryFile(delete=False, suffix=f"_reply_{time.time_ns()}.wav") out.write(audio_bytes) out.close() return out.name