اخر المواضيع

آخر الأخبار
إختر لونك المفضل

عرض المحتوي

بحث

الجمعة، 28 أغسطس 2026

نسخه وملف تعريب واستايل اجنبي معدل ل vBulletin 3.8.9 وتشغيله على اصدار PHP/MySQL 7.x

السفراني | أغسطس 28, 2026 | لا يوجد تعليقات !

امر تعريب او تشغيل نسخ vBulletin
3.8.x- 8 , 9 , 11 , 12
يمكنك على اصدارات
PHP/MySQL 7.x - 0,1,2,3,4
معدل على PHP/MySQL 7.4
يشتغل بلا مشاكل معي
PHP/MySQL 5 - 7
بس الاستضافات بعضها تلغي تلقائي وحسب نوع استضافتك
وحتى الجديد بس بحتاج محترف في تغير

الملفات المعدله على المجلدات :
1- includes
2- install
* وملفات الرئيسيه
vb_doctor-hayef5

يمكنك تنزيل النسخه المعدله هنا ل vBulletin3.8.9
1- لغه التعريب معدله هايف
Hayef-vbulletin-language3.8.9
2- استايل الاجنبيه الرسمي معدل هايف
HaYeF5-Default Style
* كلها موجوده بمجلد
vb_doctor-hayef5
وعملت برمجه قالب واحد كمحاولات بس غير مكتمل * شاهد vb_doctor.php
الاختلاف باللغه شوي معقد ل
utf8mb4
و
utf8
وانتبه ل
latin1
زبده الموضوع معقد
وانتظر باذن الله تطوير 3.8.12
كلنا نبحث عن الشكل القديم الاحترافي وذكريات زمان : قريبا تطوير نسخه
4.2.5 القريبه لشكل القديم

إقرأ المزيد
author

شرح محدث تغير اللغة بعد اضافه القاعدة لاي سكربت وفحصها وتعريب vBulletin

السفراني | أغسطس 28, 2026 | لا يوجد تعليقات !

محاولات سطحيه لتطوير
تغير اللغة بعد اضافه القاعدة لاي سكربت convert utf-8 to utf8mb4 localhost
لنسخه منتدى vBulletin3.8.12 حمل النسخه

أكيد. بما أنك تستخدم vBulletin 3.8.12، الأفضل ألا نكتفي بتجميل السكربت؛ عدّلته بحيث يكون مناسبًا أكثر لمنتدى vBulletin، مع واجهة احترافية، فحص الاتصال، فحص إصدار PHP/MySQL، وضع معاينة قبل التنفيذ، سجل للعمليات، حماية من إعادة التشغيل، ودعم utf8mb4.
مهم: هذا النوع من السكربتات يغيّر البيانات فعليًا. خذ نسخة SQL كاملة من قاعدة forum قبل تشغيل خطوة التحويل.
لكن هناك نقطة مهمة جدًا في vBulletin 3.8.12
أنا لا أنصح بتشغيل step=1 ثم step=2 على منتداك مباشرة قبل أن نعرف شكل البيانات الحالية.
الجزء الأخطر هو:
CONVERT(CAST(CONVERT(`column` USING latin1) AS BINARY) USING utf8mb4)
هذا ليس مجرد تغيير Character Set؛ إنه إعادة تفسير للبايتات الموجودة. فإذا كانت قاعدة بياناتك أصلًا صحيحة، يمكن أن يحول العربية الصحيحة إلى بيانات خاطئة.
كذلك يوجد تحدٍّ آخر مع vBulletin 3.8.x: بعض الجداول القديمة تحتوي على Indexes طويلة، وتحويل VARCHAR إلى utf8mb4 قد يجعل بعض الفهارس تتجاوز الحد المسموح به في إصدارات MySQL القديمة.
أفضل خطوة الآن: أعطني مثالًا حقيقيًا من قاعدة بياناتك، مثلاً كلمة عربية تظهر حاليًا هكذا:
ط§ظ„ط¹ط±ط¨ظٹط©
أو هكذا:
????
أو إذا كانت تظهر العربية بشكل سليم.
HaYeF5 KuwaiT — vBulletin Manager
ويحتوي على:
🔍 كشف vBulletin تلقائيًا.
🏷️ كشف الإصدار تلقائيًا.
🐘 كشف PHP.
🗄️ كشف MySQL/MariaDB.
📊 عدد الجداول.
🔤 كشف Character Set وCollation.
🌐 كشف نظام اللغات.
🇸🇦 كشف العربية تلقائيًا.
📁 حساب ملفات اللغة الموجودة.
🔎 فحص ملفات XML.
🧪 Preview قبل أي تعديل.
📦 استيراد vbulletin-language.xml.
♻️ تحديث اللغة الموجودة بدل تكرارها.
🛡️ Backup/Lock.
📝 Log كامل.
🔤 فحص UTF-8.
🚀 تحويل UTF8MB4 منفصل عن إصلاح البيانات.
📱 واجهة Responsive.
🎨 Header/Footer تلقائي.
🧩 SVG Icons بدون مكتبات خارجية.
⚡ AJAX للفحص الطويل حتى لا تتجمد الصفحة.
🔒 حماية CSRF + جلسة إدارية.
🗑️ تنبيه لحذف الأداة بعد الانتهاء.
وأفضل تغيير عن سكربتك الحالي: لا ننفذ إصلاح UTF-8 على كل النصوص بشكل أعمى؛ نكتشف أولًا هل البيانات فعلًا مشوهة، ثم نعطيك معاينة قبل لمس قاعدة البيانات. هذا هو الجزء الذي يجعلها "بدون مشاكل" بدل أن تكون أداة تحويل خطرة.
* تنبيه الخدمه ارفع بيانات القاعده لمنتدى وفي مجلد المنتدى وضعه

وسلامتكم

إقرأ المزيد
author

الخميس، 27 أغسطس 2026

برمجه خفيفه او اداء سكربت صغير يصلح ملف vbulletin-language.xml كامل دفعة واحدة

السفراني | أغسطس 27, 2026 | لا يوجد تعليقات !

 اداء بسيط وخفيف لتعديل او تشويه اللغه العربيه من رموز او علامات لاي ملف تعريب منتدى


ارفع اي ملف نفس 

vbulletin-language.xml

الاداء باسم fix_vbulletin.py


يخرج لك نفس الحجم ويعدل لك الاخطاء 

ويخرج لك باسم 

vbulletin-language-fixed.xml


انسخ الكود وارفعه في : fix_vbulletin.py

https://www.hayef5.com/m101/html-mp3/maililf-101/


from pathlib import Path


INPUT_FILE = Path("vbulletin-language.xml")

OUTPUT_FILE = Path("vbulletin-language-fixed.xml")


print("=" * 60)

print(" vBulletin 3.8.12 - Arabic Language Repair HaYeF5 KuwaiT")

print("=" * 60)


if not INPUT_FILE.exists():

    print("\nلم يتم العثور على الملف:")

    print(INPUT_FILE.resolve())

    input("\nاضغط Enter للخروج...")

    raise SystemExit


try:

    raw = INPUT_FILE.read_bytes()


    print(f"\nحجم الملف الأصلي: {len(raw):,} bytes")

    print("جاري إصلاح الترميز...")


    # الملف الحالي يحتوي على عربي مشوه من نوع:

    # ÇáÏÎæá ãÍÙæÑ

    #

    # هذه العملية تعكس التحويل الخاطئ:

    # Windows-1256 -> Windows-1252/Latin

    #

    # ثم تعيد النص إلى Windows-1256 الصحيح.


    wrong_text = raw.decode("cp1252")


    fixed_text = wrong_text.encode("cp1252").decode("cp1256")


    # تعريف XML

    if fixed_text.startswith("<?xml"):

        end = fixed_text.find("?>")


        if end != -1:

            fixed_text = (

                '<?xml version="1.0" encoding="windows-1256"?>'

                + fixed_text[end + 2:]

            )


    # التأكد من إعداد vBulletin

    fixed_text = fixed_text.replace(

        "<charset><![CDATA[utf-8]]></charset>",

        "<charset><![CDATA[windows-1256]]></charset>"

    )


    # حفظ الملف فعليًا Windows-1256

    output_data = fixed_text.encode("cp1256")


    OUTPUT_FILE.write_bytes(output_data)


    print("\nتم الإصلاح بنجاح!")

    print("-" * 60)

    print(f"حجم الملف الجديد: {len(output_data):,} bytes")

    print(f"الملف الجديد: {OUTPUT_FILE.resolve()}")

    print("-" * 60)


    # فحص سريع

    if "الدخول محظور" in fixed_text:

        print("\n✓ تم العثور على النص العربي بشكل صحيح.")

    else:

        print("\n⚠ لم يتم العثور على المثال المتوقع.")

        print("لكن تم إنشاء الملف.")


except Exception as e:

    print("\n" + "=" * 60)

    print("حدث خطأ:")

    print(type(e).__name__)

    print(str(e))

    print("=" * 60)


input("\nاضغط Enter للخروج...")


وسلامتكم

إقرأ المزيد
author

الاثنين، 24 أغسطس 2026

هاك اضفني كصديق اعمل xml لرفع الكود

السفراني | أغسطس 24, 2026 | لا يوجد تعليقات !

 ارفع لك الكود فقط وانت حطه بملف بصيغه xml

وسمه مثلا product-Add-friend

صوره المنتج

الكود :


<?xml version="1.0" encoding="ISO-8859-1"?>


<product productid="addme_postbit" active="1">

<title>هاك اضفني كصديق</title>

<description>اضفني كصديق تظهر في المواضيع والمشاركات</description>

<version>1.0</version>

<url>hayef5.yoo7.com</url>

<versioncheckurl>https://hayef5.yoo7.com/portal</versioncheckurl>

<dependencies>

</dependencies>

<codes>

<code version="*">

<installcode><![CDATA[define('DISABLE_PRODUCT_REDIRECT', true);

define('CP_REDIRECT', 'index.php?loc=' . urlencode('options.php?do=options&dogroup=addme_postbit'));]]></installcode>

<uninstallcode />

</code>

</codes>

<templates>

<template name="addme_postbit" templatetype="template" date="1328608250" username="admin" version="1.0"><![CDATA[<style type="text/css">



.wall_last_post {

    background: none repeat scroll 0 0 #F6F6F6;

    border-color: #CCCCCC #000000;

    border-left: 3px solid #000000;

    border-radius: 0 20px 20px 0;

    border-right: 3px solid #000000;

    border-style: dotted solid;

    border-width: 3px;

    float: left;

    height: 63px;

    margin-bottom: 10px;

    margin-right: 10px;

    padding-bottom: 5px;

    width: 190px;

}

.wall_last_post_auhor {

    background: url("https://gulf-missil.ucoz.com/_ph/20/2/781723650.gif") no-repeat scroll left center transparent;

    color: #606060;

    font-family: Tahoma;

    font-size: 12px;

    font-weight: normal;

    margin-left: 10px;

    padding-right: 11px;

    padding-top: 7px;

    text-shadow: 1px 0 1px #88CED8;

}

.wall_last_post .wall_last_post_auhor a {

    color: #CC0000;

    font-size: 12px;

    font-weight: bold;

}

.wall_last_post p {

    color: #606060;

    font-family: Tahoma;

    font-size: 11px;

    font-weight: normal;

    line-height: 15px;

    margin: 0;

    min-height: 27px;

    padding: 3px;

}

.wall_last_post_footer {

    color: #CC0000;

    font-family: Tahoma;

    font-size: 11px;

    font-weight: normal;

}


.add_as_friend {

    background: url("https://gulf-missil.ucoz.com/_ph/20/2/315962949.png") no-repeat scroll left center transparent;

    height: 34px;

    margin: auto;

    padding-left: 40px;

    width: 100px;

}

.add_as_friend span {

    background: none repeat scroll 0 0 #FFE5CD;

    border: 1px solid #F4C182;

    border-radius: 3px 3px 3px 3px;

    color: #E96D10;

    display: block;

    font-family: Tahoma;

    font-size: 11px;

    height: 20px;

    line-height: 23px;

    margin-top: 9px;

    padding-bottom: 5px;

    padding-left: 5px;

    padding-right: 5px;

    text-align: center;

}

</style>


<if condition="$vboptions[addme_postbit_place]==0">

<if condition="$post[postcount] == 1">

<div class="wall_last_post">

<div class="wall_last_post_auhor">

<font color="#000000">انا : </font>

<a href="member.php?$session[sessionurl]u=$post[userid]">

 $post[username]</a></div>

<div class="add_as_friend">

<span><a rel="nofollow" href="profile.php?$session[sessionurl]do=addlist&amp;userlist=friend&amp;u=$post[userid]">

<phrase 1="$prepared[username]">اضفني كصديق</phrase></a></span></div>

<div class="wall_last_post_footer"></div></div></if>


<else />


<div class="wall_last_post">

<div class="wall_last_post_auhor">

<font color="#000000">انا : </font>

<a href="member.php?$session[sessionurl]u=$post[userid]">

 $post[username]</a></div>

<div class="add_as_friend">

<span><a rel="nofollow" href="profile.php?$session[sessionurl]do=addlist&amp;userlist=friend&amp;u=$post[userid]">

<phrase 1="$prepared[username]">اضفني كصديق</phrase></a></span></div>

<div class="wall_last_post_footer"></div></div></if>]]></template>

</templates>

<plugins>

<plugin active="1" executionorder="5">

<title>Cashe templates</title>

<hookname>cache_templates</hookname>

<phpcode><![CDATA[$globaltemplates[] = 'addme_postbit';]]></phpcode>

</plugin>

<plugin active="1" executionorder="5">

<title>addme_postbit</title>

<hookname>postbit_display_start</hookname>

<phpcode><![CDATA[global $db ,$vbulletin;

if ($vbulletin->options['addme_postbit_onoff'])

{

eval('$addme_postbit = "' . fetch_template('addme_postbit') . '";');

}]]></phpcode>

</plugin>

<plugin active="1" executionorder="5">

<title>Showthread</title>

<hookname>showthread_start</hookname>

<phpcode><![CDATA[global $db ,$vbulletin;

if ($vbulletin->options['addme_postbit_onoff'])

{

$vbulletin->templatecache['postbit_legacy'] = str_replace('$post[message]','$addme_postbit<br /><br /> $post[message]',$vbulletin->templatecache['postbit_legacy']);

$vbulletin->templatecache['postbit'] = str_replace('$post[message]','$addme_postbit<br /><br /> $post[message]',$vbulletin->templatecache['postbit']);

$vbulletin->templatecache['helm_legacy'] = str_replace ('$post[message]','$addme_postbit<br /><br /> $post[message]',$vbulletin->templatecache['helm_legacy']);

$vbulletin->templatecache['helm_postbit'] = str_replace ('$post[message]','$addme_postbit<br /><br /> $post[message]',$vbulletin->templatecache['helm_postbit']);

}]]></phpcode>

</plugin>

</plugins>

<phrases>

<phrasetype name="vBulletin Settings" fieldname="vbsettings">

<phrase name="setting_addme_postbit_copyright_desc" date="1328705795" username="admin" version="1.0"><![CDATA[<a target="_blank" href="hayef5.yoo7.com">

<img border="0" src="https://gulf-missil.ucoz.com/_ph/14/2/663075804.gif" alt=":)-(:"></a>]]></phrase>

<phrase name="setting_addme_postbit_copyright_title" date="1328705795" username="admin" version="1.0"><![CDATA[حقوق المبرمج]]></phrase>

<phrase name="setting_addme_postbit_onoff_desc" date="1328705795" username="admin" version="1.0"><![CDATA[من هنا تتحكم في اطفاء وتشغيل الهاك]]></phrase>

<phrase name="setting_addme_postbit_onoff_title" date="1328705795" username="admin" version="1.0"><![CDATA[تشغيل او تعطيل الهاك]]></phrase>

<phrase name="setting_addme_postbit_place_desc" date="1328705795" username="admin" version="1.0"><![CDATA[تحكم في امكانيه ظهور ( اضفني كصديق )]]></phrase>

<phrase name="setting_addme_postbit_place_title" date="1328705795" username="admin" version="1.0"><![CDATA[مكان ظهور ( اضفني كصديق]]></phrase>

<phrase name="settinggroup_addme_postbit" date="1328705795" username="admin" version="1.0"><![CDATA[اعدادات هاك اضفني كصديق]]></phrase>

</phrasetype>

</phrases>

<options>

<settinggroup name="addme_postbit" displayorder="65535">

<setting varname="addme_postbit_onoff" displayorder="10">

<datatype>free</datatype>

<optioncode>yesno</optioncode>

<defaultvalue>1</defaultvalue>

</setting>

<setting varname="addme_postbit_place" displayorder="20">

<datatype>free</datatype>

<optioncode><![CDATA[<select name='setting[$setting[varname]]' tabindex='1' class='bginput'> 

<option value='0' " . iif($setting['value']=='0','selected="selected"') . ">أول مشاركة فقط</option>

<option value='1' " . iif($setting['value']=='1','selected="selected"') . ">بكل المشاركات</option>

</select>]]></optioncode>

<defaultvalue>0</defaultvalue>

</setting>

<setting varname="addme_postbit_copyright" displayorder="30">

<datatype>free</datatype>

<optioncode>حقوق hayef5.yoo7.com</optioncode>

</setting>

</settinggroup>

</options>

<helptopics>

</helptopics>

<cronentries>

</cronentries>

<faqentries>

</faqentries>

</product>


عندك امرين

- المنتج والتعديل فقط الصور ويركب على جميع الاستايلات

والثاني

- ابحث عن قالب الاستايل المناسب لك postbit_legacy

والبحث عن

<!-- message -->

ونضف تحتها مباشرة هذا الكود

<!-- اضفني كصديق -->

<div class="wall_last_post" style="background-origin: initial; background-clip: initial; border-top-left-radius: 0px; border-top-right-radius: 20px; border-bottom-right-radius: 20px; border-bottom-left-radius: 0px; float: left; height: 63px; width: 190px; color: rgb(102, 102, 102); font-family: arial, helvetica, verdana; font-size: 16px; font-style: normal; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-left: 3px solid rgb(204, 0, 255); border-right: 3px solid rgb(204, 0, 255); border-top: 3px dotted rgb(204, 204, 204); border-bottom: 3px dotted rgb(204, 204, 204); margin-right: 10px; margin-bottom: 10px; padding-bottom: 5px; background: rgb(255, 255, 255) repeat repeat 0px 0px"> 

    <div class="wall_last_post_auhor" style="background-origin: initial; background-clip: initial; color: rgb(96, 96, 96); font-family: Tahoma; font-size: 12px; font-weight: normal; text-shadow: rgb(136, 206, 216) '1px 0px 1px'; margin-left: 10px; padding-right: 11px; padding-top: 7px; background: url('http://yoursmileys.ru/csmile/friend/c0401.gif') no-repeat no-repeat 0% 50%"> 

        <font color="#000000">انا : </font>

<a href="member.php?$session[sessionurl]u=$post[userid]">$post[username]</a></div>

    <div class="add_as_friend" style="background-origin: initial; background-clip: initial; height: 38px; width: 127px; margin: auto; padding-left: 40px; background: url('http://yoursmileys.ru/img/rose.gif') no-repeat 0% 50%; "> 

        <span style="background-origin: initial; background-clip: initial; border-image: initial; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: rgb(233, 109, 16); display: block; font-family: Tahoma; font-size: 11px; height: 20px; line-height: 23px; text-align: center; border: 1px solid rgb(244, 193, 130); margin-top: 9px; padding-left: 5px; padding-right: 5px; padding-bottom: 5px; background: rgb(255, 229, 205) repeat repeat 0px 0px"> 

        <a rel="nofollow" style="margin:0px; padding:0px; text-decoration: none; outline-width: 0px; outline-style: none; outline-color: initial; " href="profile.php?$session[sessionurl]do=addlist&userlist=friend&u=$post[userid]"> 

        <font color="#000000">اضفني كصديق</font></a></span></div>

    <div class="wall_last_post_footer" style="color: rgb(204, 0, 0); font-family: Tahoma; font-size: 11px; font-weight: normal; "></div> 

</div>

<p align="center" style="font: normal normal normal 11px/normal tahoma, arial, helvetica, verdana; color: rgb(102, 102, 102); font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); "></p> 

<br class="Apple-interchange-newline">

<!-- /اضفني كصديق -->

=====================================

<!-- /اضفني كصديق تعديل وتصميم هايف السفراني-->

<div align="center">

<table border="1" width="15%" cellspacing="0" cellpadding="0" style="border-style: dotted; border-width: 1px">

<tr>

<td>

<p align="center">    <div class="wall_last_post_auhor" style="background-origin: initial; background-clip: initial; color: rgb(96, 96, 96); font-family: Tahoma; font-size: 12px; font-weight: normal; text-shadow: rgb(136, 206, 216) '1px 0px 1px'; margin-left: 10px; padding-right: 11px; padding-top: 7px; background: url('http://yoursmileys.ru/csmile/friend/c0401.gif') no-repeat no-repeat 0% 50%"> 

        <font color="#000000">انا : </font>

<a href="member.php?$session[sessionurl]u=$post[userid]">$post[username]</a></div>

    <div class="add_as_friend" style="background-origin: initial; background-clip: initial; height: 38px; width: 127px; margin: auto; padding-left: 40px; background: url('http://yoursmileys.ru/img/rose.gif') no-repeat 0% 50%; "> 

        <span style="background-origin: initial; background-clip: initial; border-image: initial; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: rgb(233, 109, 16); display: block; font-family: Tahoma; font-size: 11px; height: 20px; line-height: 23px; text-align: center; border: 1px solid rgb(244, 193, 130); margin-top: 9px; padding-left: 5px; padding-right: 5px; padding-bottom: 5px; background: rgb(255, 229, 205) repeat repeat 0px 0px"> 

        <a rel="nofollow" style="margin:0px; padding:0px; text-decoration: none; outline-width: 0px; outline-style: none; outline-color: initial; " href="profile.php?$session[sessionurl]do=addlist&userlist=friend&u=$post[userid]"> 

        <font color="#000000">اضفني كصديق</font></a></span></div>

    <div class="wall_last_post_footer" style="color: rgb(204, 0, 0); font-family: Tahoma; font-size: 11px; font-weight: normal; "></div> 

</div>

</td>

</tr>

</table>

</div>

<!-- /اضفني كصديق تعديل وتصميم هايف السفراني-->

=====================================

الاضافه تكون تحت 

وسلامتكم

إقرأ المزيد
author

الأحد، 23 أغسطس 2026

رفع اي مقطع صوت وكتابه نص ويتكلم بنبره الصوت اللى رفعته Voice Hayef Clone الاصدار الاول

التركيبة التي أنصح بها لمشروعك

المكوّنالإصدار المقترحالحالة
Python3.11.9
venvمع Python 3.11
pipأحدث إصدار
PyTorch2.6.0 CPU
TorchAudio2.6.0
TorchCodec0.2.x✅ متوافق مع PyTorch 2.6
Coqui TTS0.27.5
XTTS v2ضمن Coqui TTS
FastAPI0.115.x
Uvicorn0.34.x
FFmpeg6.x أو 7.x Shared⚠️ ضروري
imageio-ffmpeg0.6.x
NumPy1.26.4
SciPy1.13.x
librosa0.10.x
soundfile0.12.x
pydub0.25.1
python-multipart0.0.20
Pydantic2.x

 

Voice Hayef Clone رفع اي صوت وكتابه نص وينطق باي صوت النسخه الاولي

قبل التثبيت بحجم

204 KB

بعد التثبيت بحجم

5.99 GB

CPU مثل إعداد مشروعك الحالي (CUDA available: False)، فالمدة تختلف حسب طول التسجيل والنص.

بشكل تقريبي:

  • 🎙️ أول تشغيل: قد يستغرق 1–5 دقائق بسبب تحميل نموذج XTTS.
  • 🔊 بعد تحميل النموذج: نص قصير (10–20 كلمة) قد يستغرق تقريبًا 20–90 ثانية.
  • 📝 نص أطول: قد يصل إلى دقيقتين أو أكثر.
  • 💻 إذا كان الجهاز قويًا أو لديك GPU مناسب، يمكن أن يكون أسرع بكثير.

المهم: إذا بقيت عبارة «جاري توليد الصوت... يرجى الانتظار» أكثر من 5–10 دقائق بدون أي نتيجة، فغالبًا هناك مشكلة وليست مجرد بطء

امر التثبيت لاول مره :

setup.bat

وبعدها اكمال الخطئ

fix_ffmpeg.bat

وبعدها اكمال الخطي

fix_transformers.bat

 

عند التجربه مهم المتابع ل start

أما السؤال الظاهر:

I have purchased a commercial license...
Otherwise, I agree to the terms of the non-commercial CPML: [y/n]

إذا كنت تستخدم المشروع للاستخدام غير التجاري وتوافق على شروط CPML، اكتب:

y

ثم Enter.

إذا كان الاستخدام تجاريًا، فلا تختر y باعتبارها موافقة على الترخيص غير التجاري؛ تحتاج إلى الترخيص التجاري المناسب من Coqui

إذا عندك مقطع فيه صوت الشخص فقط بدون موسيقى أو مؤثرات فهذا هو الأفضل كمرجع.

ارفعه بهذه الأولوية:

  1. WAV — الأفضل.
  2. FLAC — ممتاز أيضًا.
  3. MP3 — يعمل، لكن WAV أفضل للجودة.
  4. M4A/OGG — ممكن، لكن لا أفضله إذا تستطيع تحويله إلى WAV.

المواصفات التي أنصح بها

WAV
Mono
16-bit PCM
44.1 kHz أو 48 kHz
بدون موسيقى
بدون صدى قوي
بدون ضوضاء

والمدة الأفضل كبداية:

10–30 ثانية

ويكون الصوت واضحًا ومستمرًا، وليس مقطعًا فيه كلام قليل جدًا أو فواصل طويلة.

بالنسبة لمشروعك

ضع الملف مثلًا:

D:\Voice-Hayef-Clone\voices\reference.wav

لكن لا تحتاج أن تضعه داخل models.

وإذا كان عندك عدة مقاطع لنفس الشخص، احتفظ بها كلها:

voices\
├── reference1.wav
├── reference2.wav
└── reference3.wav

لكن حاليًا بما أن مشروعك يستخدم ملفًا واحدًا، ابدأ بملف WAV واحد نظيف. لا نغيّر الكود قبل أن نختبره بهذا المرجع.

مهم: إذا كان الصوت لشخص حقيقي، استخدمه فقط إذا كان لديك الإذن اللازم لاستخدام صوته واستنساخه

حمل الملف واختار ما يناسبك :) هايف معكم اصوات

النسبه لصوت لمشروه افضل
حوالي 7.86 ثانية
اختر اي صوت
بعد التنظيف قسّمه إلى 3 أجزاء
أفضل خيار بسيط:
Notevibes Audio Splitter
اختر 3 parts، وسيقسم الملف إلى ثلاثة أجزاء. المعالجة تتم داخل المتصفح حسب الموقع، ولا يحتاج رفع الملف إلى خادم 

ارفع اي مقطع صوت صافي او اغاني او اي شي لرفع مهم واجباري

واكتب بالخانه الثاني مو شرط الاوله اختياري

في كل عمل عندك ملفين نظفهم وهم voices و outputs

اخيرا

نسخة كاملة من Server\voice_clone.py مصممة على وضعك الحالي:

  • لا تستخدم spacy.
  • لا تستخدم enable_text_splitting=True.
  • تقبل الشعر والأسطر وعلامات الترقيم.
  • النص الطويل يُقسّم داخليًا إلى مقاطع، ثم يُجمع في WAV واحد.
  • تستخدم voices\reference_01.wav و02 و03.
  • تحافظ على النص العربي بدون تطبيع مضر بالنطق.
  • تحافظ على الـ conditioning نفسه لكل المقاطع حتى لا تتغير النبرة بين مقطع وآخر.
  • لا تحذف ملفات voices\reference_01.wav الأصلية.
  • تعمل CPU.
  • تستخدم FFmpeg الموجود داخل المشروع.
  • لا تحتاج تثبيت أي مكتبة جديدة بسبب تقسيم النص.

نقطة مهمة جدًا

لا تثبت spacy ولا spacy[ja].
هذه النسخة لا تستخدمه أصلًا.

وعند إدخال نصك مثل:

هبت رياح الصيف وتغير الجو
وأنا وليفي مايداني سمومه
هو يحسب إن شمس الضحى سيدي ضو
ريّان عوده زايدٍ في النعومة
فقلت أنا والله ياسيدي لو
تسكن قصورٍ شيدوها بروما

سيتم تقسيمه داخليًا، ثم إخراج ملف MP3 واحد من الـserver.py الموجود عندك.

والأهم: لا أنصح بتغيير الكلمات الخليجية أو تحويل أ/إ/آ إلى ا؛ النسخة السابقة كانت تفعل ذلك وقد تفسد نطق الشعر. هذه النسخة تترك النص الذي تكتبه كما هو تقريبًا، مع تنظيف المسافات فقط.

أما المحافظة على النبرة الخليجية، فالعامل الأكبر هنا هو جودة reference_01/02/03.wav. إذا كانت الثلاثة لنفس المتحدث وبها كلام خليجي واضح ونظيف، فالـXTTS سيأخذ منها الـconditioning نفسه لكل مقاطع النص

  • ✅ Python 3.11.9
  • ✅ PyTorch 2.8 CPU
  • ✅ TorchAudio 2.8 CPU
  • ✅ TorchCodec 0.7.0
  • ✅ FFmpeg 7.1.1 Shared ويعمل
  • ✅ Coqui TTS 0.27.5
  • ✅ Transformers تم إصلاحه
  • ✅ XTTS v2 يعمل
  • ✅ voice_clone.py يعمل
  • ✅ FastAPI يعمل
  • ✅ الواجهة تعمل على 7860
  • ✅ index.html وCSS وJavaScript يتم تحميلها
  • ✅ رفع الصوت يصل إلى السيرفر
  • ✅ توليد الصوت يعمل

لكن أقول إن المشروع مكتمل كـ نسخة تشغيلية، وليس بالضرورة أن جودة استنساخ الصوت وصلت للمستوى الاحترافي الذي تريده.

المرحلة المتبقية اختيارية: تحسين النطق العربي + النبرة الخليجية + جودة المرجع + سرعة CPU.

نحذف الملفات المؤقتة فقط عند الخروج، ونحافظ دائمًا على المراجع الثلاثة:

voices/
├── reference_01.wav ← لا يُحذف
├── reference_02.wav ← لا يُحذف
└── reference_03.wav ← لا يُحذف

أما الملفات التي ينشئها التطبيق مثل الأصوات المرفوعة والناتجة في outputs فيمكن تنظيفها.

إذا تريد أمرًا بسيطًا داخل voice_clone.py، أضف في آخر الملف:

import atexit

 
def cleanup_project_files():
# تنظيف outputs
if OUTPUTS_DIR.exists():
for file in OUTPUTS_DIR.iterdir():
try:
if file.is_file():
file.unlink()
except Exception:
pass

 
# تنظيف voices مع الحفاظ على المراجع الثلاثة
protected = {
"reference_01.wav",
"reference_02.wav",
"reference_03.wav",
}

 
if VOICES_DIR.exists():
for file in VOICES_DIR.iterdir():
try:
if file.is_file() and file.name.lower() not in protected:
file.unlink()
except Exception:
pass

 
# تنظيف الملفات المؤقتة
if TEMP_DIR.exists():
for file in TEMP_DIR.iterdir():
try:
if file.is_file():
file.unlink()
except Exception:
pass

 
atexit.register(cleanup_project_files)

النتيجة

عند إغلاق البرنامج بشكل طبيعي:

voices/
├── reference_01.wav
├── reference_02.wav
└── reference_03.wav

تبقى ثابتة.

بينما:

outputs/

يتم تنظيف الملفات التي أنشأها التطبيق.

و:

temp/

يتم تنظيف الملفات المؤقتة.

مهم: هذا يعمل عند إغلاق Python بشكل طبيعي، وليس مضمونًا إذا أُغلقت العملية بالقوة من Task Manager.

*** اذا حبيت تجربه voice_clone101

إقرأ المزيد
author

الجمعة، 14 أغسطس 2026

Voice Hayef1.0 تحويل النص الى صوت

 في امر راح يثبت بحاسوبك انتبه :

  • ✅ اكتشف Python 3.12 تلقائيًا:
    C:\Users\zip\AppData\Local\Programs\Python\Python312\python.exe
  • ✅ أنشأ البيئة الافتراضية:
    D:\Voice-Hayef1.0-on\venv
  • ✅ ثبّت requirements.txt بنجاح.
  • edge-tts 7.2.8 مثبت.
  • fastapi 0.115.6 مثبت.
  • uvicorn 0.34.0 مثبت.
  • requests 2.32.3 مثبت.
  • python-multipart 0.0.20 مثبت.
  • loguru 0.7.3 مثبت.
  • ✅ ظهرت رسالة All required packages are available.
  • ✅ وفي النهاية أعطاك Installation Completed.
  • اذا حبيت تغير المسار براحتك : عندك الشرح

    هو Python الرئيسي المثبت في Windows.

    أما هذا: 

    D:\Voice-Hayef1.0-on\venv\

    فهو بيئة افتراضية خاصة بالمشروع، وتستخدم Python الموجود على الجهاز لإنشاء نسخة/بيئة معزولة للمشروع.

    بالتالي عندك مستويان:

    الحاسوب
    └── Python 3.12
    C:\Users\zip\AppData\Local\Programs\Python\Python312\
     
    المشروع
    └── Voice-Hayef1.0-on
    └── venv
    ├── Python
    └── مكتبات Voice-Hayef

    الميزة: المستخدم لا يحتاج إلى تثبيت مكتبات المشروع عالميًا؛ المكتبات تذهب إلى venv.

    لكن Python الأساسي نفسه يبقى مثبتًا على Windows حتى يستطيع venv العمل

    انا بصرحه احب عمله في المشروع بس هذي نسخه تجريبيه

    المهمةماذا يفعل؟
    🔍 فحص Pythonيتأكد هل Python موجود
    📥 تثبيت Pythonإذا لم يجده، يحاول تثبيته تلقائيًا عبر winget
    🐍 إنشاء Virtual Environmentينشئ مجلد venv للمشروع
    📦 تحديث pipيحدّث مدير حزم Python
    📚 تثبيت المتطلباتيقرأ requirements.txt ويثبت المكتبات
    🛑 كشف الأخطاءإذا فشل التثبيت، يتوقف ويخبرك بدل رسالة نجاح كاذبة
    ✅ التحقق من النجاحلا يقول Installation Completed إلا إذا نجحت الخطوات
    ▶️ تجهيز البرنامجيجعل البيئة جاهزة لتشغيل Voice-Hayef1.0

    بعد رفع المجلد

    ابدا في التثبيت

    install.bat

    الغير مثبته بحجم لاول مره وهو الافضل

    32.0 KB

    المثبته بالخدمات

    50.6 MB

    Voice-Hayef1.0 هو برنامج محلي لتحويل النصوص إلى ملفات صوت MP3 باستخدام تقنية Microsoft Edge TTS.

    يعمل البرنامج على جهاز المستخدم مباشرة بدون الحاجة إلى:

    • خوادم خارجية خاصة
    • قواعد بيانات
    • نماذج ذكاء اصطناعي ضخمة
    • كروت شاشة
    • ملفات Models

    وظيفته الأساسية:

    ✅ تكتب نص عربي أو إنجليزي
    ⬇️
    ✅ يكتشف اللغة تلقائياً
    ⬇️
    ✅ يختار صوت مناسب
    ⬇️
    ✅ ينشئ ملف MP3
    ⬇️
    ✅ يشغله داخل المتصفح
    ⬇️
    ✅ يسمح بتحميله

    ام المدعوم

    يعمل على:

    ✅ Windows 10
    ✅ Windows 11

    يفضل:

    • Windows 10 64-bit
    • Windows 11 64-bit

    تحويل النص إلى صوت

    مثال:

    النص:

    مرحبا هذا اختبار Voice-Hayef1.0

    النتيجة:

    Voice-Hayef1.0_xxxxx.mp3

    داخل:

    Output

     متطلبات الجهاز

    يفضل:

    المعالج

    أي:

    • Intel i3 أو أعلى
    • Ryzen 3 أو أعلى

    الرام

    الحد الأدنى:

    4 GB

    المفضل:

    8 GB

    التخزين

    يفضل:

    500 MB مساحة فارغة

    ✅ Python 3.11
    ✅ venv مستقل
    ✅ FastAPI
    ✅ Uvicorn
    ✅ Edge-TTS 7.2.8
    ✅ بدون PyTorch
    ✅ بدون CUDA
    ✅ بدون Models
    ✅ بدون Visual Studio
    ✅ واجهة عربية
    ✅ إنشاء MP3
    ✅ تشغيل الصوت
    ✅ تحميل الصوت
    ✅ Logs

    إقرأ المزيد
    author