الانتقال إلى المحتوى
Yappy تنزيل
اللغة: ar

القطعة التي لا يريها أحد غيرنا

من المكتوب إلى المنطوق.

القراءة بصوت عالٍ ليست تهجئة حروف: إنها تأدية. «1492» تُقرأ «ألف وأربعمئة واثنان وتسعون»؛ و«Henry VIII» تُقرأ «هنري الثامن»، أمّا «Louis XIV» بالفرنسية فتُقرأ «لويس أربعة عشر»؛ و«EL CID» ليست رقمًا رومانيًا؛ وتُهجّى «إف بي آي» حرفًا حرفًا، أمّا «ناسا» فلا. قبل أن يُركِّب Yappy مقطعًا صوتيًا واحدًا، يحوّل النص إلى سكربت قراءة: النوتة الموسيقية لما سيقوله الصوت فعلًا.

السيناريست

جرّبه هنا مباشرةً: إنه Rust ذاته الذي يعمل به التطبيق، مُصرَّفًا لمتصفحك.

سيظهر السكربت هنا، وما تمّ تحويله تحته خط.

اثنتا عشرة مهمة في مرور واحد.

التواريخ

«24/5/1533» تُقرأ كاملةً، بترتيب التاريخ وجنس الشهر في كل لغة.

الساعات

«14:05» تُقرأ كما يقولها إنسان، لا كما تقرأها ساعة.

العملات

«3.50 €» تُقرأ «ثلاثة يورو وخمسون سنتًا»، بقواعد العدد الصحيحة.

النسب المئوية

«٧٪» تُقال «سبعة في المائة»، و«٠٫٥٪» لا تتحول إلى «صفر فاصلة خمسة».

الوحدات

«٢٣٠ °C» تُقال «مئتان وثلاثون درجة مئوية».

الأعداد الترتيبية

«3.ª» تُقال «الثالثة»، بجنسها وإعرابها حيثما وُجد إعراب.

أرقام رومانية بحسٍّ سليم

«قرن XX» يُقرأ عددًا، و«Enrique VIII» يُقرأ عددًا ترتيبيًا، و«EL CID» ليس رقمًا أصلًا.

اختصارات على ميزان الصوت

تُتهجّى «إف بي آي»؛ وتُقرأ «ناسا» ككلمة. القاعدة يحددها اللفظ، لا قائمة.

الاختصارات

«إلخ»، «ص»، «ق. ١٩»: لكل لغةٍ جدولها.

الأعداد الكبيرة

بقواعد RBNF من Unicode CLDR، والجنس والإعراب من ضمنها.

٣١ لغة

القواعد نفسها، بنحوِ كل لغةٍ. بلا قوائم مكتوبة يدويًا.

الإيقاع

تتنفس العناوين بعد نطقها؛ والقوائم تسير على إيقاعها. والوقفات جزء من النص المُعَدّ، لا من المصادفة.

الأسئلة الشائعة

ما هي قواعد RBNF؟
‏RBNF اختصار لـ Rule-Based Number Format: القواعد التي يصف بها Unicode CLDR كيف يُقال العدد في كل لغة. ليس جدولًا من ألف كلمة، بل نحوًا: لذلك يعرف أن الإسبانية تقول «doscientas páginas» لا «doscientos páginas»، وأن الروسية تُعرب الأعداد، وأن الفرنسية تَعُدّ حتى التسعين بالعشرينات. ويفسّرها Yappy بلغة Rust خالصة، بلا قوائم مكتوبة يدويًا.
لماذا نحتاج إلى مُعِدّ النص؟ ألا يقوم الصوت بذلك وحده؟
لا، وهذا مقصود. يعمل نموذج الصوت في Yappy على مستوى الحرف: ينطق بالضبط ما يصله مكتوبًا. ذلك يجعله سريعًا وخفيفًا، لكنه يعني أيضًا أنّه إذا وصلته «١٤٩٢» حاول نطقها كما كُتبت، حرفًا حرفًا. في نموذج كهذا، التطبيع هو النطق. ومُعِدّ النص هو المكوّن الذي يحوّل كل رقم وكل اختصار وكل رمز إلى الكلمات التي يقولها إنسان.
كم لغة يعمل بها؟
في اللغات الـ٣١ التي يتحدث بها الصوت، ولكل لغةٍ قواعدها الخاصة: ترتيب التواريخ، وربط العملات، والأعداد الترتيبية، والاختصارات، والأرقام الرومانية. قرنٌ مكتوب «XV» يُنطق بالإسبانية «siglo quince» وبالإنجليزية «fifteenth century»؛ و«Louis XIV» تُقرأ «Louis quatorze» لا «Louis fourteenth». المهام الاثنتا عشرة نفسها، وثلاثة وثلاثون نحوًا.
لماذا يقع تظليل الكاريوكي دائمًا على الكلمة بالضبط؟
لأن السكربت ليس مجرد نص محوَّل: إنه يحفظ الخريطة بين المكتوب والمنطوق. حين ينطق الصوت «ألف وأربعمائة واثنان وتسعون»، يعرف السكربت أن هذه الكلمات مصدرها أرقام «1492» الأربعة، فيستقر الخط التحتي فوقها دون أن ينزاح. هذا هو الفرق بين إضاءة النص وتخمينه.
كلمة تُنطق خطأً. هل يمكنني تصحيحها؟
لا يوجد حتى اليوم قاموس نطق للمستخدم. ولأن النموذج يقرأ الحروف، فالطريقة الأسرع أن تكتب الكلمة كما تُنطق في المحرر ثم تستمع إليها من جديد. أما إذا كان الخلل في نمط عام (اختصار، أو مختصر من الحروف الأولى، أو وحدة قياس)، فاحكِ عنه في مشكلات GitHub: فجداول مولّد السكربت تكبر بهذه الحالات.
هل مولّد السكربت في هذه الصفحة هو نفسه الموجود في التطبيق؟
الشيفرة نفسها، مصروفة إلى WebAssembly لتعمل في متصفحك. ما تكتبه هنا لا يغادر علامة التبويب. وبما أن المشروع كله مفتوح، يمكنك قراءة القواعد واحدةً واحدة في المستودع.

النص المُعَدّ نصف الحكاية؛ والنصف الآخر يُسمَع.

الاستماع إلى عيّنة