يُعطي كاشف اللغة دائمًا إجابة، حتى على سعلة. أبقِ الاكتشاف مفعّلًا للصوت النظيف أو متعدد اللغات، وسمِّ اللغة حين تُنطق لغة واحدة وسط ضوضاء أو مع لكنة قوية.
تبدأ كل عملية تفريغ نصي بسؤال لا يراه القارئ أبدًا: ما اللغة التي يُتحدَّث بها هنا؟ إذا أخطأ الجواب، تعمل بقية المراحل بجدّ لإنتاج كلام طليق لكنه بلا معنى. يشرح هذا المقال ما الذي يُصغي إليه كاشف اللغة، وكيف يتصرف الاكتشاف مع الصوت المباشر ومع الملفات، ومتى يكون الأفضل أن تحدّد اللغة بنفسك.
لا يفهم كاشف اللغة ما يُقال. إنه ينظر إلى الصوت نفسه: مخزون الحروف الساكنة والمتحركة، وكيفية نبر المقاطع، وإيقاع العبارات، والكلمات القصيرة المتكررة التي تعتمد عليها كل لغة. للإسبانية مجموعة حركات وإيقاع خاصان بها؛ والهولندية والألمانية تتشاركان كثيرًا لكنهما تفترقان في عدد قليل من الأصوات. وعادةً ما تكفي بضع ثوانٍ من كلام واضح للتمييز بينهما.
تقوم كثير من أدوات التعرّف بذلك كناتج جانبي لتمييز الكلمات. فهي تحسم اللغة من بداية الصوت، على هيئة احتمال لكل لغة تعرفها. ويترتب على هذا التصميم أمران. الأول أن الاحتمالات تُجمع دائمًا إلى واحد، فلا توجد إجابة «لا لغة»: فالصمت أو السعلة أو لحن موسيقي قصير يحصل على لغة أيضًا، وغالبًا بدرجة ثقة مرتفعة. والثاني أن القرار يُتخذ من البداية، وهي أسوأ عينة يمكن اختيارها. تبدأ كثير من التسجيلات بالتحية والأسماء وأسماء الأماكن، وهي تحمل القليل جدًا من دلائل اللغة: فعبارة «Good morning, Maria, welcome to Berlin» ألمانية بقدر ما هي إنجليزية تقريبًا. وتبدأ تسجيلات أخرى بالصمت أو بسعلة، فيحسم الكاشف المسألة مع ذلك، بثقة، على لا شيء البتة. والصوت الحقيقي يفعل ذلك أيضًا: فخطبة رومانية تبدأ بضجيج الغرفة ثم «Bună dimineața» يمكن أن تُسمع بسهولة على أنها الإيطالية «Buona domenica»، وبيقين تام.
وكلفة الإجابة الخاطئة أسوأ مما تبدو. فالأداة التي تفكّ الترميز بلغة خاطئة لا تكتب الكلمات بشكل مغلوط، بل تعيد كتابتها. فالعبارة الإنجليزية «For God so loved the world»، حين فُكّ ترميزها كأنها رومانية، خرجت «Forgot to love the world». والعبارة الرومانية «mândria slujește»، حين فُكّ ترميزها كأنها إنجليزية، خرجت «Pride serves»، وهي ترجمة دقيقة لجملة لم يطلب أحد ترجمتها. الكلمات سليمة النحو، ولا يوجد في النص ما يدل على وجود خطأ، وهذا ما يجعل الخطأ مكلفًا.
خمسة أمور تخدع الكواشف أكثر من غيرها:
وأيّ من هذه الأمور يضرّك يعتمد على ما إذا كان الصوت يصل مباشرةً أم أنه موجود سلفًا في ملف.
في التفريغ النصي المباشر لا يوجد تسجيل كامل لينظر فيه الكاشف. يصل الصوت كما يُنطق، ويجب أن يصل النص معه. لذلك تُكتشف اللغة أثناء كلام المتحدث، وتُتبَع إن بدّلها. وهذا ما تعنيه الملاحظة الموجودة أسفل مفتاح Spoken language حين تبدأ تفريغًا نصيًا مباشرًا من لوحة التحكم: تُكتشف لغة المتحدث تلقائيًا، وقد يبدّلها في أي وقت.
لا يُطبَّق التبديل قبل تأكيده، حتى لا يجرّ مقطع واحد مشوّش النص إلى لغة أخرى. ونقطة الضعف هي البداية: فإذا كانت الكلمات الأولى تحية مشوّشة، فقد يخرج السطر الأول بلغة خاطئة. وتسمية اللغة تتجنب ذلك.
أما الملفات فتعمل بطريقة مختلفة، لأن التسجيل كاملًا متاح.
الملف مسألة أسهل: لا حاجة إلى الوثوق بالثوانٍ الأولى. في الملف تُحسم اللغة من التسجيل بكامله، فلا تستطيع تحية مشوّشة في البداية أن تحسم الأمر.
ومع ذلك تبقى لغة الملف افتراضًا عمليًا لا حكمًا نهائيًا. فالتسجيل الذي يتغيّر فعلًا في منتصفه، مثل مقابلة تنتقل من الإنجليزية إلى الرومانية في نصفها الثاني، يُتبَع ولا يُفرض عليه شيء. والتسجيل الذي يتناوب بين اللغات طوال مدته مدعوم أيضًا.
«الكاشف الذي يحسم مرة واحدة ولا يعود إلى الوراء يكون واثقًا في المكان الخطأ.»
لا يفيد أي كاشف كثيرًا حين يكون التسجيل بأكمله مشوّشًا. والاكتشاف هو الخيار الافتراضي لأنه صحيح في معظم الحالات ولا يكلفك شيئًا. لكن في بعض التسجيلات ينبغي أن تسمّي اللغة، ولوحة التحكم توضح أيّها: فتسمية اللغة المنطوقة تحسّن الدقة في التسجيلات المشوّشة واللكنات القوية.
هذه هي الحالات التي يملك فيها الاكتشاف أقل ما يعمل به. فالضوضاء تزيل الإشارات التي يعتمد عليها الكاشف؛ واللكنة القوية تزحزحها نحو لغة أخرى؛ والزوج المتقارب يقدّم إشارات قليلة أصلًا. متحدث إنجليزي بلكنة برتغالية قوية في قاعة يتردد فيها الصدى يصعب تحديد هويته من الصوت وحده، وإذا أخطأ الكاشف في تحديدها، فسيحوّل النص الكلام الإنجليزي إلى برتغالي طوال مدة الخطأ. تسمية اللغة تزيل السؤال، فيتركّز كل الجهد على الكلمات.
مختصر قصير:
تسمية اللغة إعداد للتفريغ النصي لا لحسابك، لذلك يمكنك أن تقرّر لكل تسجيل على حدة. وكل ما سبق يختصر في خيار واحد في الواجهة البرمجية.
spokenLanguage يعني الكشف، وsession.update أثناء البثفي الواجهة البرمجية، spokenLanguage هو رمز لغة مثل en؛ إن أغفلته اكتُشفت اللغة. يظهر الخيار في settings الخاص بتفريغ الملفات والروابط، وفي خيارات الجلسة الفورية. ويغطي الاكتشاف والتسمية اللغات الـ100 نفسها. أما الترجمة إلى ما يصل إلى 10 منها فاختيار مستقل، ولا تتوقف على اللغة التي اكتُشفت أو سُمّيت. وكيف تواكب الترجمة سرعة الكلام هو موضوع زمن استجابة الترجمة المباشرة، شرحًا.
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
تأخذ الجلسة الفورية الخيار نفسه عند إنشائها، ويمكن تغييره أثناء تدفق الصوت. ويُطبَّق إطار نصي من النوع session.update يحمل spokenLanguage جديدة على الكلام من تلك اللحظة فصاعدًا؛ وضبطه على "" أو "auto" يعيد الجلسة إلى الاكتشاف، ويُتجاهل الرمز غير المدعوم. ويمكن لعرض التسميات الذي يحوي زر لغة أن يتيح للمشغّل تسمية اللغة فور رؤيته سطرًا أول بلغة خاطئة، من دون إعادة الاتصال.
{ "type": "session.update", "spokenLanguage": "ro" }
قائمة الرموز مع أسمائها موجودة في GET /v1/languages، ولا تحتاج إلى مفتاح. ويشرح دليل التدفق الفوري كاملًا، من إنشاء الجلسة على خادمك إلى قراءة المسودات والمقاطع المعتمدة، التفريغ النصي الفوري عبر WebSocket، ومرجع التفاعل موجود في {{api}}/docs. وفي لوحة التحكم، الخيار نفسه هو مفتاح Spoken language حين تبدأ تفريغًا نصيًا جديدًا، ومفاتيح الواجهة البرمجية موجودة تحت المطورون.