marks commited on
Commit
4145430
·
1 Parent(s): a7eb60c
Files changed (2) hide show
  1. api_clients.py +11 -16
  2. models.py +4 -0
api_clients.py CHANGED
@@ -5,7 +5,7 @@ import elevenlabs
5
  import time
6
  from contextlib import asynccontextmanager
7
  from logger import setup_logger, log_execution_time, log_async_execution_time
8
- from models import OpenRouterModel
9
 
10
  logger = setup_logger("api_clients")
11
 
@@ -159,15 +159,13 @@ Focus on making it engaging and natural to listen to."""
159
  async with self.get_session() as session:
160
  async with session.post(
161
  f"{self.base_url}/chat/completions",
162
- json=request_data
163
  ) as response:
164
- if response.status != 200:
165
- error_text = await response.text()
166
- logger.error(f"OpenRouter API error: {error_text}")
167
- raise ValueError(f"API request failed: {error_text}")
168
-
169
  data = await response.json()
170
- return data['choices'][0]['message']['content']
 
 
171
 
172
  except Exception as e:
173
  logger.error(f"Script generation failed", exc_info=True)
@@ -188,17 +186,14 @@ class ElevenLabsClient:
188
  """
189
  try:
190
  voices = elevenlabs.voices()
191
- return [(
192
-
193
- f"{voice.name} ({voice.labels.get('accent', 'No accent')})" +
194
- (f" - {voice.description[:50]}..." if voice.description else ""),
195
- voice.voice_id # Value (hidden from user)
196
- ) for voice in voices]
197
  except Exception as e:
198
  logger.error("Failed to fetch voices from ElevenLabs", exc_info=True)
199
  raise
200
 
201
- def generate_audio(self, text: str, voice_id: str):
202
  """Generate audio synchronously"""
203
  logger.info(f"Starting audio generation with voice: {voice_id}")
204
  logger.debug(f"Input text length: {len(text)} chars")
@@ -208,7 +203,7 @@ class ElevenLabsClient:
208
 
209
  try:
210
  start_time = time.time()
211
- audio = elevenlabs.generate(
212
  text=text,
213
  voice=voice_id,
214
  model="eleven_monolingual_v1"
 
5
  import time
6
  from contextlib import asynccontextmanager
7
  from logger import setup_logger, log_execution_time, log_async_execution_time
8
+ from models import OpenRouterModel, OpenRouterRequest, OpenRouterResponse, Message
9
 
10
  logger = setup_logger("api_clients")
11
 
 
159
  async with self.get_session() as session:
160
  async with session.post(
161
  f"{self.base_url}/chat/completions",
162
+ json=request.dict()
163
  ) as response:
164
+ response.raise_for_status()
 
 
 
 
165
  data = await response.json()
166
+ router_response = OpenRouterResponse(**data)
167
+ logger.debug(f"Generated script length: {len(router_response.choices[0].message.content)} chars")
168
+ return router_response.choices[0].message.content
169
 
170
  except Exception as e:
171
  logger.error(f"Script generation failed", exc_info=True)
 
186
  """
187
  try:
188
  voices = elevenlabs.voices()
189
+ return [(voice.voice_id, f"{voice.name} ({voice.labels.get('accent', 'No accent')})" +
190
+ (f" - {voice.description[:50]}..." if voice.description else ""))
191
+ for voice in voices]
 
 
 
192
  except Exception as e:
193
  logger.error("Failed to fetch voices from ElevenLabs", exc_info=True)
194
  raise
195
 
196
+ async def generate_audio(self, text: str, voice_id: str):
197
  """Generate audio synchronously"""
198
  logger.info(f"Starting audio generation with voice: {voice_id}")
199
  logger.debug(f"Input text length: {len(text)} chars")
 
203
 
204
  try:
205
  start_time = time.time()
206
+ audio = await elevenlabs.generate(
207
  text=text,
208
  voice=voice_id,
209
  model="eleven_monolingual_v1"
models.py CHANGED
@@ -10,9 +10,13 @@ class OpenRouterRequest(BaseModel):
10
  messages: List[Message]
11
 
12
  class OpenRouterChoice(BaseModel):
 
13
  message: Message
 
14
 
15
  class OpenRouterResponse(BaseModel):
 
 
16
  choices: List[OpenRouterChoice]
17
 
18
  class OpenRouterModel(BaseModel):
 
10
  messages: List[Message]
11
 
12
  class OpenRouterChoice(BaseModel):
13
+ index: int = 0
14
  message: Message
15
+ finish_reason: Optional[str] = None
16
 
17
  class OpenRouterResponse(BaseModel):
18
+ id: str
19
+ model: str
20
  choices: List[OpenRouterChoice]
21
 
22
  class OpenRouterModel(BaseModel):