تحكّم في وقفات صوتك المولَّد
تقبل هذه الأداة نصًا مزوّدًا بعلامات <bdi>SSML</bdi> كالذي تنتجه سلسلتك البرمجية أصلًا، كما تقبل النص العادي.
شغّلها أونلاين
شغّل هذه المهمة على خوادمنا باستخدام حسابك. الأدوات المجانية تعمل داخل متصفحك، أما هذه فتُخصم من رصيدك في KIT حسب السعر الموضّح أعلاه.
تستخرج الكلمات المنطوقة من داخل العلامات وتولّدها صوتًا بنبرة طبيعية، فيستطيع أي مسار عمل قائم على <bdi>SSML</bdi> أن يوجَّه إليها دون نزع العلامات أولًا للعودة إلى نص عادي. ولنكن واضحين في الحدّ منذ البداية: هذا المحرك ينطق الكلمات، لا الضوابط الصوتية الدقيقة التي يستطيع <bdi>SSML</bdi> وصفها.
ما هو SSML ولماذا وُجد
لغة SSML معيار من W3C وُضع ليصف الكاتبُ كيف ينبغي لمحرك الصوت أن يقول الشيء، لا ما يقوله فحسب: أين تكون الوقفة، أي مقطع يُشدَّد، كيف تُنطق الاختصارات، وهل سلسلة الأرقام تاريخ أم رقم هاتف أم كمية عادية. ظلّ سنوات عُرف الصناعة في التحكم بالكلام المولَّد، وذلك لأن النص العادي غامض فعلًا — فـ«2/3» قد يكون تاريخًا أو كسرًا أو نتيجة، ولا يحسم ذلك في المجرد إلا العلامات. هذا هو التنسيق الذي تقبله الأداة في المدخل؛ أمّا ما تفعله بكل علامة فمشروح بوضوح في القسم التالي.
كيف يعمل الطلب والاستجابة
ترسل نصًا مزوّدًا بعلامات SSML (أو نصًا عاديًا) في جسم الطلب. تستخرج الخدمة الكلمات المنطوقة من العلامات وتولّدها، أمّا العلامات نفسها فتُختزل إلى نصها قبل التوليد. توضَع المهمة في الطابور بشكل غير متزامن وتُعيد task_id فورًا؛ ويُسلَّم الصوت الجاهز بعد ذلك عبر webhook موقَّع أو رابط موقَّع صالح 24 ساعة. ولأن المولَّد هو الكلمات، فإن إرسال SSML وإرسال النص العادي المكافئ يُنتجان الرواية الطبيعية نفسها — تُقبل العلامات للتوافق، لا لأن كل علامة تغيّر الصوت.
ما يمثّله هذا المحرك وما لا يمثّله
هذا هو الحدّ الصادق، نذكره كي لا تعِد هذه الصفحة بأكثر مما تعطي. يقرأ محرك الصوت الحالي محتوى النص وينتج كلامًا طبيعيًا حسن الإيقاع. لكنه لا يطبّق صوتيًا ضوابط SSML الدقيقة: التشديد والنطق الصوتي والتنغيم ومدد الوقفات الدقيقة تُقبل في المدخل ثم تُزال، ولا تُمثَّل. فعلامة وقفة من ثانيتين لا تُوقف السطر ثانيتين، وعلامة تشديد لا تُبرز الكلمة أكثر مما يفعل النموذج من تلقائه. إن كان استخدامك يعتمد على تمثيل هذه الضوابط بدقة، فهذه القدرة ليست متاحة بعد على هذا المحرك — ووُجدت هذه الأداة كي يولّد مسار SSML صوتًا اليوم دون فرع منفصل للنص العادي.
دمجها في المحتوى المؤتمت
SSML ليس إلا نصًا مبنيًا، فمن السهل توليده برمجيًا — يستطيع مسار محتوى أن يحيط الأرقام بعلامات، ويُدرج وقفات بين الأقسام، ويُعلّم اسمًا بإشارة نطق، كل ذلك دون تدخل بشري. قيمة هذه الأداة لهذا الجمهور أنها تقبل كما هو SSML الذي يُخرجونه أصلًا: لا حاجة لبناء مسار شيفرة ثانٍ وصيانته يختزل علاماتهم إلى نص عادي قبل الإرسال. ويعكس السعر طبيعة المهمة الخفيفة المحدّدة — أساس صغير لكل طلب زائد سعر عن كل ألف حرف من النص المُرسَل، والمهام الفاشلة لا تُحتسب أبدًا بعد المحاولات التلقائية.
الوصول وكيفية التعامل مع النتائج
تتطلب هذه الأداة رصيدًا مسبق الدفع كسائر أدوات الـAPI؛ والطلب دون رصيد يُعيد HTTP 402 بدل نتيجة ناقصة أو منقوصة. يُحذف النص المُرسَل والصوت المولَّد عند انتهاء مدة الاحتفاظ، ولا يُستخدمان أبدًا لتدريب النماذج — والتسليم حصرًا عبر webhook الخاص بك أو رابط موقَّع مؤقت، ولا يُحفظ شيء بعد تلك النافذة.
حالات الاستخدام
بديل مباشر لمسار SSML قائم
وجِّه إلى هذه الأداة مسار عمل يُخرج <bdi>SSML</bdi> أصلًا، فتستلم الصوت المنطوق دون كتابة خطوة خاصة بك لنزع العلامات والعودة إلى نص عادي أولًا.
رواية من نصوص مولَّدة
حوّل النصوص المولَّدة خوارزميًا إلى صوت منطوق بنبرة طبيعية، كخطوة مؤتمتة إضافية في مسار محتوى.
نص طويل إلى صوت
حوّل المقالات والملاحظات والوثائق إلى صوت لمن يفضّل سماع المحتوى على قراءته.
إخراج صوتي متعدد اللغات
أنتج صوتًا منطوقًا باللغات المدعومة من صيغة الطلب نفسها، وفق حقل اللغة.
الأسئلة الشائعة
ما هو SSML وكيف تستخدمه واجهة تحويل النص إلى صوت هذه؟
<bdi>SSML</bdi> معيار توصيف لوصف توليد الكلام. تقبل هذه الأداة نصًا مزوّدًا بعلامات <bdi>SSML</bdi>، وتقرأ منه الكلمات المنطوقة وتولّدها صوتًا طبيعيًا. تقبل التنسيق للتوافق؛ وانظر الجواب التالي لتعرف أي ضوابط <bdi>SSML</bdi> تُمثَّل فعلًا.
هل تمثّل علامات التشديد والصوتيات والتنغيم؟
لا، ليس على محرك الصوت الحالي. تُقبل هذه العلامات، ومعها مدد الوقفات الدقيقة، في المدخل ثم تُختزل إلى نصها؛ فيقرأ الصوت الكلمات بطبيعية بدل تطبيق التشديد أو النطق أو الوقفات المعلَّمة. أمّا التمثيل الصوتي الدقيق لهذه الضوابط فغير متاح بعد.
هل واجهة تحويل النص إلى صوت هذه مجانية؟
لا توجد طبقة مجانية — الطبقات المجانية يُساء استخدامها وتُبطئ الجميع. يعمل الوصول برصيد مسبق الدفع من <bdi>ForHosting KIT</bdi>: تشحن من <bdi>$10.00</bdi> (لا ينتهي) وكل طلب يُحتسب بسعره المعلن، فالنداء دون رصيد يُعيد <bdi>HTTP 402</bdi>. لا اشتراك ولا رموز ولا أرصدة موهومة، والمهمة الفاشلة لا تُحتسب.
كم تكلفتها؟
<bdi>$0.002</bdi> لكل طلب زائد <bdi>$0.0025</bdi> عن كل ألف حرف من النص المُرسَل.
هل أحتاج SSML لتحويل نص إلى صوت بسيط؟
لا. إن كنت تريد فقط صوتًا طبيعيًا من نص عادي، فأداة تحويل النص إلى صوت القياسية أبسط وتنتج النوع نفسه من الرواية. النص العادي و<bdi>SSML</bdi> كلاهما يخرج هنا كلامًا طبيعيًا.
كيف أحصل على الصوت المولَّد؟
تُنفَّذ المهمة بشكل غير متزامن وتُعيد <bdi>task_id</bdi> فورًا؛ ويُسلَّم الصوت الجاهز عبر <bdi>webhook</bdi> موقَّع أو رابط موقَّع صالح 24 ساعة.
ماذا يحدث إن كانت علامات SSML لدي غير صحيحة؟
لأن العلامات تُختزل إلى نصها المنطوق قبل التوليد، فالعلامات المشوّهة لا تُفشل الطلب — تحصل مع ذلك على صوت الكلمات المقروءة. لا يُرفض شيء لخطأ في علامة، فلا تعتمد على هذه الأداة للتحقق من صحة <bdi>SSML</bdi> لديك.
هل أستطيع التحكم بها في نطق الأسماء أو الاختصارات؟
صوتيًا لا — التحكم بالصوتيات لا يُمثَّل على هذا المحرك، فعلامة الصوتيات لن تفرض نطقًا بعينه. وإن وجب أن يُقال اسم بطريقة معينة، فاكتبه صوتيًا في النص نفسه لتحمل الكلماتُ النطقَ.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/voice/tts-ssml \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ssml":"<speak>Hola <break time=\"500ms\"/> mundo.</speak>"}'const res = await fetch("https://api.kit.forhosting.com/voice/tts-ssml", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ssml": "<speak>Hola <break time=\"500ms\"/> mundo.</speak>"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/voice/tts-ssml",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ssml": "<speak>Hola <break time=\"500ms\"/> mundo.</speak>"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/voice/tts-ssml", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ssml":"<speak>Hola <break time=\\"500ms\\"/> mundo.</speak>"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ssml":"<speak>Hola <break time=\"500ms\"/> mundo.</speak>"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/voice/tts-ssml", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"ssml": "<speak>Hola <break time=\"500ms\"/> mundo.</speak>"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "voice.tts_ssml",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 200 |
max_minutes | 180 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |