import requests def get_tts_link(text, voice_id): """ از API Talkbot.ir برای تبدیل متن به صوت با صدای مشخص استفاده می کند. Args: text: متن ورودی برای تبدیل به صوت. voice_id: شناسه صدا (مثلا 1 یا 2). Returns: لینک فایل صوتی WAV در صورت موفقیت، در غیر این صورت None. """ url = f"https://talkbot.ir/TTS-tkun?text={requests.utils.quote(text)}&voice={voice_id}" try: response = requests.get(url) # فرض می کنیم API در صورت موفقیت لینک مستقیم wav برمی گرداند # نیاز به بررسی دقیق پاسخ واقعی API Talkbot.ir است. # اگر پاسخ JSON است، نیاز به پارس کردن آن است. # اگر پاسخ تنها لینک است، این کد کار می کند. if response.status_code == 200: return response.text.strip() # فرض می کنیم پاسخ مستقیم لینک است else: print(f"خطا در دریافت صوت: {response.status_code}") return None except requests.exceptions.RequestException as e: print(f"خطا در ارسال درخواست: {e}") return None def generate_podcast_script(prompt): """ با استفاده از API هوش مصنوعی متن پادکست را تولید می کند. Args: prompt: دستور برای تولید متن پادکست. Returns: متن تولید شده برای پادکست. """ # کلید API هوش مصنوعی شما api_key = "sk-4fb613f56acfccf731e801b904cd89f5" # لطفاً این کلید را در محیط امن نگهداری کنید و به این شکل در کد قرار ندهید در محیط واقعی api_url = "https://talkbot.ir/api/v1/chat/completions" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } data = { "model": "deepseek-v3-0324", "messages": [ {"role": "system", "content": "شما یک دستیار برای تولید متن پادکست هستید."}, {"role": "user", "content": prompt} ] } try: response = requests.post(api_url, headers=headers, json=data) if response.status_code == 200: result = response.json() # نیاز به بررسی ساختار پاسخ API هوش مصنوعی شما if result and 'choices' in result and result['choices']: return result['choices'][0]['message']['content'].strip() if 'message' in result['choices'][0] and 'content' in result['choices'][0]['message'] else "متن پادکست تولید نشد." else: print(f"پاسخ هوش مصنوعی نامعتبر است: {result}") return "خطا در تولید متن پادکست: پاسخ نامعتبر هوش مصنوعی" else: print(f"خطا در درخواست به API هوش مصنوعی: {response.status_code}, پاسخ: {response.text}") return f"خطا در تولید متن پادکست: {response.status_code}" except requests.exceptions.RequestException as e: print(f"خطا در ارسال درخواست به API هوش مصنوعی: {e}") return f"خطا در ارسال درخواست به API هوش مصنوعی: {e}" # مثال استفاده از توابع (بدون واسط کاربری) if __name__ == "__main__": # مرحله 1: تولید متن پادکست podcast_prompt = "متنی کوتاه و جالب در مورد معرفی یک کتاب جدید بنویسید." podcast_text = generate_podcast_script(podcast_prompt) print("متن پادکست تولید شده:") print(podcast_text) if podcast_text and podcast_text != "خطا در تولید متن پادکست: پاسخ نامعتبر هوش مصنوعی" and not podcast_text.startswith("خطا"): # برای سادگی، فرض می کنیم متن تولید شده بین دو گوینده تقسیم می شود. # در واقعیت، نیاز به منطق پیچیده تری برای تقسیم متن برای دو گوینده است. parts = podcast_text.split('.') # تقسیم ساده بر اساس نقطه به عنوان مثال half_length = len(parts) // 2 text_part1 = '.'.join(parts[:half_length]) + '.' if half_length > 0 else "" text_part2 = '.'.join(parts[half_length:]) if half_length < len(parts) else "" # مرحله 2: دریافت صوت برای صدای اول if text_part1: print("\nدریافت صوت برای صدای اول...") voice1_link = get_tts_link(text_part1, 1) if voice1_link: print(f"لینک صوت صدای اول: {voice1_link}") else: print("موفق به دریافت صوت برای صدای اول نشد.") # مرحله 3: دریافت صوت برای صدای دوم if text_part2: print("\nدریافت صوت برای صدای دوم...") voice2_link = get_tts_link(text_part2, 2) if voice2_link: print(f"لینک صوت صدای دوم: {voice2_link}") else: print("موفق به دریافت صوت برای صدای دوم نشد.") else: print("\nبه دلیل خطای تولید متن پادکست، فرآیند تولید صوت انجام نشد.")