Hashim-dotcom commited on
Commit
b1b8f5b
·
verified ·
1 Parent(s): 487271d

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -94
app.py DELETED
@@ -1,94 +0,0 @@
1
- import os
2
- import telegram
3
- from telegram.ext import Application, CommandHandler, MessageHandler, filters
4
- from rvc_python.infer import RVC_pipeline
5
- import torch
6
- import logging
7
-
8
- # تفعيل سجلات بسيطة لرؤية ما يحدث في الخلفية
9
- logging.basicConfig(
10
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
11
- level=logging.INFO
12
- )
13
-
14
- logger = logging.getLogger(__name__)
15
-
16
- # --- إعدادات النموذج ---
17
- # هذا هو معرف المستودع الخاص بك على Hugging Face الذي يحتوي على النموذج
18
- YOUR_HF_REPO_ID = "Hashim-dotcom/Hashim.ai.rvc"
19
- MODEL_PATH = "model.pth"
20
- device = "cpu"
21
-
22
- # سنضع تحميل النموذج داخل كتلة try/except للتعامل مع أي أخطاء محتملة
23
- rvc = None
24
- try:
25
- logger.info("جاري تحميل النموذج... هذه الخطوة قد تستغرق بعض الوقت.")
26
- rvc = RVC_pipeline(repo_id=YOUR_HF_REPO_ID, model_path=MODEL_PATH, device=device)
27
- logger.info("النموذج جاهز للعمل!")
28
- except Exception as e:
29
- logger.error(f"حدث خطأ فادح أثناء تحميل النموذج: {e}")
30
- # إذا فشل تحميل النموذج، سيبقى rvc = None
31
-
32
- # --- دوال البوت ---
33
- async def start(update, context):
34
- """يرسل رسالة ترحيبية عند إرسال الأمر /start."""
35
- await update.message.reply_text("مرحباً! أنا بوت تحويل الصوت. أرسل لي رسالة صوتية وسأقوم بتحويلها باستخدام صوتي الخاص.")
36
-
37
- async def handle_voice(update, context):
38
- """يعالج الرسائل الصوتية الواردة."""
39
- # أولاً، تحقق مما إذا تم تحميل النموذج بنجاح
40
- if rvc is None:
41
- await update.message.reply_text("عذراً، البوت يواجه مشكلة تقنية حالياً (فشل تحميل النموذج). يرجى المحاولة لاحقاً.")
42
- return
43
-
44
- message = update.message
45
- await message.reply_text("تم استلام رسالتك الصوتية، جاري المعالجة... قد يستغرق هذا بعض الوقت حسب طول المقطع.")
46
-
47
- # تحديد مسارات فريدة للملفات لتجنب التضارب
48
- input_audio_path = f"{message.message_id}_input.oga"
49
- output_audio_path_name = f"{message.message_id}_output.wav"
50
-
51
- try:
52
- voice_file = await message.voice.get_file()
53
- await voice_file.download_to_drive(input_audio_path)
54
- logger.info(f"تم تحميل الملف الصوتي: {input_audio_path}")
55
-
56
- # استدعاء النموذج لتحويل الصوت
57
- output_audio_path, sampling_rate = rvc.infer(
58
- input_audio_path=input_audio_path,
59
- pitch_shift=0 # يمكن تعديل هذا الرقم لتغيير حدة الصوت
60
- )
61
- logger.info(f"تمت المعالجة بنجاح: {output_audio_path}")
62
-
63
- # إعادة تسمية الملف الناتج إلى اسم فريد
64
- os.rename(output_audio_path, output_audio_path_name)
65
-
66
- # إرسال الملف الصوتي المحول
67
- await message.reply_audio(audio=open(output_audio_path_name, 'rb'), title="صوت محول")
68
-
69
- except Exception as e:
70
- logger.error(f"حدث خطأ أثناء المعالجة: {e}")
71
- await update.message.reply_text(f"عذراً، حدث خطأ أثناء معالجة صوتك: {str(e)}")
72
- finally:
73
- # تنظيف الملفات المؤقتة دائماً
74
- if os.path.exists(input_audio_path):
75
- os.remove(input_audio_path)
76
- if os.path.exists(output_audio_path_name):
77
- os.remove(output_audio_path_name)
78
-
79
- def main():
80
- """الدالة الرئيسية لتشغيل البوت."""
81
- TOKEN = os.getenv("TELEGRAM_TOKEN")
82
- if not TOKEN:
83
- logger.critical("خطأ فادح: لم يتم العثور على TELEGRAM_TOKEN في الأسرار (secrets). تأكد من إضافته في إعدادات الـ Space.")
84
- return
85
-
86
- application = Application.builder().token(TOKEN).build()
87
- application.add_handler(CommandHandler("start", start))
88
- application.add_handler(MessageHandler(filters.VOICE, handle_voice))
89
-
90
- logger.info("البوت قيد التشغيل ويبدأ الاستماع للرسائل...")
91
- application.run_polling()
92
-
93
- if __name__ == "__main__":
94
- main()