Spaces:
Running
Running
Upload app.py
Browse files
app.py
CHANGED
|
@@ -256,15 +256,19 @@ class PodcastGenerator:
|
|
| 256 |
user_prompt = f"Please generate a podcast script based on the following user input:\n{prompt}"
|
| 257 |
|
| 258 |
# 配置 SambaNova API client
|
| 259 |
-
if
|
| 260 |
-
api_key =
|
|
|
|
|
|
|
|
|
|
| 261 |
client = openai.OpenAI(
|
| 262 |
-
api_key=api_key,
|
| 263 |
base_url="https://api.sambanova.ai/v1",
|
| 264 |
)
|
| 265 |
|
| 266 |
# 嘗試生成內容
|
| 267 |
try:
|
|
|
|
| 268 |
response = client.chat.completions.create(
|
| 269 |
model='Meta-Llama-3.1-405B-Instruct',
|
| 270 |
messages=[
|
|
@@ -274,13 +278,14 @@ class PodcastGenerator:
|
|
| 274 |
temperature=1,
|
| 275 |
max_tokens=8192
|
| 276 |
)
|
| 277 |
-
logger.info(f"API
|
| 278 |
|
| 279 |
if response.choices and len(response.choices) > 0:
|
| 280 |
generated_text = response.choices[0].message.content
|
|
|
|
| 281 |
else:
|
| 282 |
logger.warning("No content generated from the API")
|
| 283 |
-
|
| 284 |
|
| 285 |
except Exception as e:
|
| 286 |
logger.error(f"Error generating script: {str(e)}")
|
|
@@ -292,14 +297,11 @@ class PodcastGenerator:
|
|
| 292 |
else:
|
| 293 |
raise gr.Error(f"Failed to generate podcast script: {str(e)}")
|
| 294 |
|
| 295 |
-
# 列印生成的Podcast指令碼
|
| 296 |
-
print(f"Generated podcast script:\n{generated_text}")
|
| 297 |
-
|
| 298 |
# 嘗試解析JSON,如果失敗則返回原始文本
|
| 299 |
try:
|
| 300 |
return json.loads(generated_text)
|
| 301 |
except json.JSONDecodeError:
|
| 302 |
-
|
| 303 |
return {"raw_text": generated_text}
|
| 304 |
|
| 305 |
async def tts_generate(self, text: str, speaker: int, speaker1: str, speaker2: str) -> str:
|
|
@@ -384,6 +386,11 @@ class PodcastGenerator:
|
|
| 384 |
start_time = time.time()
|
| 385 |
podcast_json = await self.generate_script(input_text, language, api_key)
|
| 386 |
end_time = time.time()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 387 |
gr.Info(f"Successfully generated podcast script in {(end_time - start_time):.2f} seconds!")
|
| 388 |
|
| 389 |
# 生成Podcast音訊檔案
|
|
@@ -472,6 +479,9 @@ async def process_input(input_text: str, input_file, language: str, speaker1: st
|
|
| 472 |
# 建立PodcastGenerator實例並生成Podcast
|
| 473 |
podcast_generator = PodcastGenerator()
|
| 474 |
podcast = await podcast_generator.generate_podcast(input_text, language, speaker1, speaker2, api_key)
|
|
|
|
|
|
|
|
|
|
| 475 |
|
| 476 |
# 計算總耗時並顯示資訊
|
| 477 |
end_time = time.time()
|
|
|
|
| 256 |
user_prompt = f"Please generate a podcast script based on the following user input:\n{prompt}"
|
| 257 |
|
| 258 |
# 配置 SambaNova API client
|
| 259 |
+
if api_key:
|
| 260 |
+
openai.api_key = api_key
|
| 261 |
+
else:
|
| 262 |
+
openai.api_key = os.getenv("YOUR_API_TOKEN")
|
| 263 |
+
|
| 264 |
client = openai.OpenAI(
|
| 265 |
+
api_key=openai.api_key,
|
| 266 |
base_url="https://api.sambanova.ai/v1",
|
| 267 |
)
|
| 268 |
|
| 269 |
# 嘗試生成內容
|
| 270 |
try:
|
| 271 |
+
logger.info(f"Sending request to SambaNova API with prompt: {user_prompt[:100]}...")
|
| 272 |
response = client.chat.completions.create(
|
| 273 |
model='Meta-Llama-3.1-405B-Instruct',
|
| 274 |
messages=[
|
|
|
|
| 278 |
temperature=1,
|
| 279 |
max_tokens=8192
|
| 280 |
)
|
| 281 |
+
logger.info(f"Received response from API: {response}")
|
| 282 |
|
| 283 |
if response.choices and len(response.choices) > 0:
|
| 284 |
generated_text = response.choices[0].message.content
|
| 285 |
+
logger.info(f"Generated text: {generated_text[:100]}...")
|
| 286 |
else:
|
| 287 |
logger.warning("No content generated from the API")
|
| 288 |
+
return {"error": "No content generated from the API"}
|
| 289 |
|
| 290 |
except Exception as e:
|
| 291 |
logger.error(f"Error generating script: {str(e)}")
|
|
|
|
| 297 |
else:
|
| 298 |
raise gr.Error(f"Failed to generate podcast script: {str(e)}")
|
| 299 |
|
|
|
|
|
|
|
|
|
|
| 300 |
# 嘗試解析JSON,如果失敗則返回原始文本
|
| 301 |
try:
|
| 302 |
return json.loads(generated_text)
|
| 303 |
except json.JSONDecodeError:
|
| 304 |
+
logger.warning("Generated text is not valid JSON. Returning raw text.")
|
| 305 |
return {"raw_text": generated_text}
|
| 306 |
|
| 307 |
async def tts_generate(self, text: str, speaker: int, speaker1: str, speaker2: str) -> str:
|
|
|
|
| 386 |
start_time = time.time()
|
| 387 |
podcast_json = await self.generate_script(input_text, language, api_key)
|
| 388 |
end_time = time.time()
|
| 389 |
+
|
| 390 |
+
if "error" in podcast_json:
|
| 391 |
+
gr.Error(f"Failed to generate podcast script: {podcast_json['error']}")
|
| 392 |
+
return None
|
| 393 |
+
|
| 394 |
gr.Info(f"Successfully generated podcast script in {(end_time - start_time):.2f} seconds!")
|
| 395 |
|
| 396 |
# 生成Podcast音訊檔案
|
|
|
|
| 479 |
# 建立PodcastGenerator實例並生成Podcast
|
| 480 |
podcast_generator = PodcastGenerator()
|
| 481 |
podcast = await podcast_generator.generate_podcast(input_text, language, speaker1, speaker2, api_key)
|
| 482 |
+
|
| 483 |
+
if podcast is None:
|
| 484 |
+
return None
|
| 485 |
|
| 486 |
# 計算總耗時並顯示資訊
|
| 487 |
end_time = time.time()
|