الأصوات
اختر صوت التعليق: أصوات Edge عبر الإنترنت، أو نماذج كلام على جهازك، أو أي برنامج تعرّفه بنفسك. الإعداد والحدود والحلول.
يقرأ ScreenPilot كل سطر تعليق بواسطة مزوّد صوت. هناك ثلاثة مزوّدين. edge هو الافتراضي ولا يحتاج إعدادًا. local يشغّل نماذج كلام على جهازك. command يشغّل أي برنامج تعرّفه يحوّل النص إلى ملف صوت. الـ storyboard الموجودة تعمل كما هي: إذا لم يكن في الـ storyboard حقل provider فالمزوّد هو edge.
اختر المزوّد#
| المزوّد | ما هو | الإنترنت | التكلفة | ملاحظة عن الجودة |
|---|---|---|---|---|
edge | أصوات Microsoft Edge بلغات كثيرة، منها العربية المصرية. | مطلوب عند كل تصيير لأسطر جديدة. | لا شيء. | يعمل بلا إعداد. هذه خدمة غير رسمية وقد تتغير. |
local | نماذج كلام تعمل على جهازك: VoiceTut وNAMAA. | للتنزيل أثناء الإعداد فقط. لا حاجة له بعد ذلك. | مجاني. يستهلك نحو 10 إلى 16 GB من القرص. | العربية المصرية والإنجليزية. العربية أقل دقة من الإنجليزية. جُرّب على Linux مع كرت NVIDIA فقط. |
command | برنامج تعرّفه في voices.json، مثل Piper. | يعتمد على البرنامج. | يعتمد على البرنامج. | ما ينتجه البرنامج. |
اختر edge إذا أردت أن يعمل الآن. اختر local إذا أردت تصييرًا بلا إنترنت. اختر command إذا كان عندك نموذج كلام خاص بك.
حدّد المزوّد مرة واحدة للـ storyboard كلها في voice. الحقول كلها في الخرج والصوت.
أصوات Edge#
Edge هو المزوّد الافتراضي. الأصوات هي أصوات Microsoft Edge وتُجلب عبر الإنترنت. الخدمة غير رسمية، فقد تتغير أو تتوقف دون إشعار. الفيديو الذي بلا أسطر تعليق لا يحتاج إلى صوت، والمقاطع المولَّدة تُخزَّن مؤقتًا، فلا يُطلب السطر غير المتغير مرة أخرى.
"voice": { "name": "ar-EG-SalmaNeural", "rate": "+0%" }
اعرض الأصوات، ويمكنك تحديد لغة واحدة:
screenpilot voices --lang ar-EG
أمثلة: ar-EG-SalmaNeural وar-EG-ShakirNeural وen-US-AndrewNeural (الافتراضي) وen-US-AriaNeural.
النماذج المحلية#
الأصوات المحلية نماذج كلام تعمل على جهازك. هي مجانية ولا تحتاج إنترنت بعد الإعداد. ثبّت نموذجًا بالأمر screenpilot voice-setup، ثم استخدمه في الـ storyboard.
أي نموذج تثبّت#
- VoiceTut يتكلم العربية المصرية والإنجليزية وفيه 19 صوتًا جاهزًا. ابدأ به. الكود مرخّص Apache-2.0؛ راجع صفحة النموذج لمعرفة ترخيص الأوزان. يذكر مؤلفوه معدل خطأ كلمات 0.40 للعربية مقابل 0.07 للإنجليزية، فاسمع الأسطر العربية قبل التسليم. جُرّب هنا الصوتان Sarah وMohammed.
- NAMAA يتكلم العربية المصرية فقط وله صوت واحد. ترخيصه MIT. تذكر بطاقة النموذج أنه قد يفوّت صوت "ق" وقد يخطئ في قراءة الأرقام.
تثبيت نموذج#
نفّذ هذا في الطرفية. خادم MCP لا يوفّر أداة لهذا عمدًا، لأن الأمر ينزّل عدة غيغابايت ويثبّت كودًا من أطراف أخرى.
screenpilot voice-setup voicetut
screenpilot voice-setup namaa
ما تحتاجه وما يحدث:
- ثبّت uv. وهو يجلب Python 3.11 أيضًا، فلا تحتاج إلى Python خاص بك.
- نفّذ الأمر. يفحص المساحة الحرة على القرص أولًا، ويطلب تأكيدك إلا إذا مررت
--yes. - ينشئ بيئة Python خاصة به ويثبّت PyTorch: نسخة CUDA على كروت NVIDIA، ونسخة CPU فقط على بقية أجهزة Windows وLinux.
- يثبّت كودًا من أطراف أخرى مثبّتًا على الإصدارات التي جُرّب معها: OmniVoice وVoiceTut من GitHub لنموذج VoiceTut، و
chatterbox-ttsلنموذج NAMAA. - ينزّل النموذج وينطق سطر اختبار واحدًا.
- يحفظ مسار Python في
voices.json(المفتاحانlocal.pythonوlocal.env.HF_HOME).
| النموذج | القرص |
|---|---|
voicetut | نحو 10.5 GB، وحتى 15 GB أثناء التثبيت. |
namaa | نحو 5.5 GB إضافية فوق VoiceTut. |
توضع النماذج في مجلد بجوار مجلد التطبيق، فلا يحذفها تحديث التطبيق:
- Linux:
~/.local/share/screenpilot-voices - Windows:
%LOCALAPPDATA%\ScreenPilot-voices - macOS:
~/Library/Application Support/ScreenPilot-voices
| الخيار | وظيفته |
|---|---|
--dir <path> | يستخدم مجلدًا أو قرصًا آخر. |
-y, --yes | لا يسأل قبل التنزيل. |
لاستخدام Python موجود عندك، اضبط SCREENPILOT_LOCAL_PYTHON على Python مثبّتة فيه حزم النموذج. واضبط SCREENPILOT_LOCAL_DEVICE على auto (الافتراضي) أو cuda أو cpu أو mps لتحديد مكان تشغيل النموذج.
تحقق من النتيجة:
screenpilot voices --provider local
screenpilot doctor
الأمر voices --provider local يعرض النماذج المثبّتة وأصواتها. وفي doctor فحص اسمه "local voice". يُتخطّى هذا الفحص إذا لم تُعدّ صوتًا محليًا، لأن الأصوات المحلية اختيارية.
استخدام صوت محلي#
حدّد المزوّد والاسم في الـ storyboard:
"voice": { "provider": "local", "name": "voicetut:Sarah", "rate": "+0%" }
مع المزوّد المحلي يكون name واحدًا مما يلي:
voicetut: الصوت الافتراضي لهذا النموذج.voicetut:<Voice>: أحد أصواته، مثلvoicetut:Sarah.namaa: صوت NAMAA الوحيد.
لغة كل سطر تُكتشف تلقائيًا. السطر الذي فيه حروف عربية يُقرأ بالعربية، وأي سطر آخر يُقرأ بالإنجليزية. الحقل rate (مثل +10%) يتحول إلى معامل سرعة في VoiceTut. أما NAMAA فيتجاهله.
لبدء storyboard بصوت محلي:
screenpilot init sessions/2026-10-27_14-02 --provider local --voice voicetut:Sarah
أداتا MCP voices وstoryboard_init تقبلان الوسيط provider أيضًا، وكذلك الكائن voice في take.json.
المزج بين النماذج في فيديو واحد#
يمكن لسطر التعليق أن يحدد voice خاصًا به. هذا يستبدل الاسم ويُبقي المزوّد. فيمكنك قراءة الأسطر العربية بـ NAMAA والإنجليزية بـ VoiceTut:
"voice": { "provider": "local", "name": "voicetut:Sarah" },
"narration": [
{ "at": 1, "text": "Invoices can now repeat on a schedule." },
{ "at": 6, "text": "ويمكنك إيقافها في أي وقت.", "voice": "namaa" }
]
نصائح#
- اجعل الأسطر قصيرة. السطر الطويل يجمّد الفيديو ليفسح له.
- المقاطع المولَّدة تُخزَّن مؤقتًا، فإعادة التصيير سريعة. تُنطق من جديد الأسطر التي غيّرتها فقط.
- اسمع الأسطر العربية قبل التسليم، وراجع الأرقام.
الحدود والأرقام المقيسة#
قيست هذه الأرقام على جهاز واحد: NVIDIA RTX 2050 بذاكرة 4 GB.
| النموذج | ذروة ذاكرة الكرت | السرعة |
|---|---|---|
| VoiceTut | 2.1 GB | أبطأ من الزمن الحقيقي بنحو 1.4 مرة: سطر مدته 3 ثوانٍ يستغرق نحو 4 إلى 5 ثوانٍ. |
| NAMAA | 3.2 GB، وهذا ضيق على كرت 4 GB يشغّل سطح المكتب أيضًا. | مماثلة لـ VoiceTut. |
- يُحمَّل النموذج مرة واحدة في كل تصيير. يستغرق ذلك نحو 20 ثانية.
- على المعالج (CPU) يكون أبطأ بكثير. لم يُقَس ذلك.
- العربية أقل دقة من الإنجليزية. قد يفوّت NAMAA صوت "ق" وقد يخطئ في الأرقام.
نموذجك الخاص#
صوت command يشغّل برنامجًا تختاره. يستلم البرنامج النص ويكتب ملف صوت. يصلح لذلك Piper أو Kokoro أو سكربت يستدعي نموذجًا تثق به.
عرّف الصوت في voices.json داخل مجلد الإعدادات:
- Linux وmacOS:
~/.config/screenpilot/voices.json - Windows:
%APPDATA%\screenpilot\voices.json
اضبط SCREENPILOT_VOICES_FILE لاستخدام مسار آخر. هذا الملف ملكك. وهو خارج الـ storyboard عمدًا: فالـ storyboard القادم من ذكاء اصطناعي أو من شخص آخر يجب ألا يستطيع تشغيل برامج أبدًا.
الحقول#
{
"commands": {
"my-voice": {
"command": ["program", "arg", "{out}"],
"stdin": "{text}",
"ext": "wav",
"timeout": 120,
"env": {}
}
}
}
| الحقل | المعنى |
|---|---|
command | البرنامج ووسائطه. لا يُستخدم shell، فلا يستطيع النص حقن أوامر. البادئة ~/ في أول وسيط تعني مجلدك الرئيسي. |
stdin | اختياري. نص يُمرَّر إلى البرنامج، وهو عادةً {text}. |
ext | امتداد الملف الذي يكتبه البرنامج. الافتراضي wav. يصلح أي صيغة يقرؤها ffmpeg. |
timeout | الثواني المسموحة لسطر واحد. الافتراضي 120. |
env | اختياري. متغيرات بيئة إضافية للبرنامج. |
العناصر النائبة التي يمكنك استخدامها في command وstdin:
| العنصر | يُستبدل بـ |
|---|---|
{text} | سطر التعليق. |
{rate} | معدل الصوت، مثل +10%. |
{speed} | المعدل كمعامل سرعة، مثل 1.1. |
{lang} | ar للسطر الذي فيه حروف عربية، وإلا en. |
{out} | المسار الذي يجب أن يكتب البرنامج الصوت فيه. |
يجب أن يكتب البرنامج الصوت في {out}.
مثال: Piper#
يوضح هذا المثال شكل الملف. لم يُشغَّل هنا، فراجع المسارات والخيارات مقابل تثبيت Piper عندك.
{
"commands": {
"piper-amy": {
"command": ["piper", "--model", "~/models/en_US-amy-medium.onnx", "--output_file", "{out}"],
"stdin": "{text}"
}
}
}
ثم استخدمه في الـ storyboard. الحقل name هو المفتاح الذي عرّفته:
"voice": { "provider": "command", "name": "piper-amy" }
الأمر screenpilot voices --provider command يعرض الأصوات المعرّفة في voices.json.
لف أي نموذج بسكربت#
إذا لم يكن للنموذج سطر أوامر، اكتب سكربتًا صغيرًا خاصًا بك ووجّه command إليه:
{
"commands": {
"my-model": {
"command": ["python3", "~/tts/say.py", "{lang}", "{out}"],
"stdin": "{text}",
"timeout": 300
}
}
}
السكربت ~/tts/say.py من كتابتك. يقرأ النص من stdin، ويقرأ اللغة من وسيطه الأول، ويكتب ملف الصوت في المسار الموجود في وسيطه الثاني. ارفع timeout للنموذج البطيء.
حل المشكلات#
| ما تراه | ما تفعله |
|---|---|
لا يوجد محرك صوت محلي مُعَدّ، وتطلب الرسالة تنفيذ voice-setup. | نفّذ screenpilot voice-setup voicetut. أو اضبط SCREENPILOT_LOCAL_PYTHON على Python مثبّت فيه نموذج. |
نفدت ذاكرة كرت الشاشة، وتقترح الرسالة SCREENPILOT_LOCAL_DEVICE=cpu. | اضبط SCREENPILOT_LOCAL_DEVICE=cpu. سيكون أبطأ. أو استخدم voicetut فهو يحتاج ذاكرة كرت أقل من namaa. |
| صوت محلي غير معروف، مع قائمة بالنماذج الصالحة. | استخدم voicetut أو voicetut:<Voice> أو namaa. اعرض المثبّت بالأمر screenpilot voices --provider local. |
انتهى أمر صوت command دون أن يكتب صوتًا، وتذكر الرسالة voices.json. | تأكد أن البرنامج يكتب الصوت في {out} وأن ext يطابق الملف الذي يكتبه. شغّل البرنامج بيدك بمسار حقيقي. |
| توقف محرك الصوت، متبوعًا بآخر أسطر طبعها. | اقرأ تلك الأسطر: هي ما طبعه المحرك قبل أن يتوقف. نفّذ screenpilot doctor واقرأ فحص "local voice". |
يقول voice-setup إنه يحتاج uv. | ثبّت uv ثم أعد تنفيذ الأمر. |
يقول voice-setup إن مساحة القرص غير كافية. | حرّر مساحة، أو مرّر --dir لاستخدام قرص آخر. |