Spaces:
Sleeping
Sleeping
| import os | |
| from dotenv import load_dotenv | |
| # Disable OpenAI fallback | |
| os.environ["OPENAI_API_KEY"] = "" | |
| os.environ["ANTHROPIC_API_KEY"] = "" | |
| os.environ["COHERE_API_KEY"] = "" | |
| from crewai import Agent, Task, Crew | |
| from google import genai | |
| load_dotenv() | |
| client = genai.Client(api_key=os.getenv("GEMINI_API_KEY")) | |
| class CrewVoiceAgent: | |
| def __init__(self): | |
| self.agent = Agent( | |
| role="Voice Assistant", | |
| goal="Respond clearly.", | |
| backstory="You are helpful.", | |
| llm=None | |
| ) | |
| self.task = Task( | |
| description="Respond to speech.", | |
| expected_output="Audio", | |
| agent=self.agent, | |
| llm=None | |
| ) | |
| self.crew = Crew( | |
| agents=[self.agent], | |
| tasks=[self.task], | |
| llm=None | |
| ) | |
| async def handle_audio(self, audio_bytes: bytes): | |
| print("Received audio bytes:", len(audio_bytes)) | |
| response = client.models.generate_content( | |
| model="gemini-2.5-flash-native-audio-dialog", | |
| contents=[ | |
| { | |
| "mime_type": "audio/webm", | |
| "data": audio_bytes | |
| } | |
| ] | |
| ) | |
| print("GEMINI RESPONSE FIELDS:", response) | |
| print("HAS AUDIO:", hasattr(response, "audio")) | |
| if hasattr(response, "audio"): | |
| print("AUDIO OBJECT:", response.audio) | |
| # Try direct | |
| try: | |
| if response.audio and response.audio.data: | |
| print("Returning audio bytes:", len(response.audio.data)) | |
| return response.audio.data | |
| except Exception as e: | |
| print("Error reading audio:", e) | |
| print("NO AUDIO RETURNED") | |
| return b"" | |