גלאי שפה תמיד נותן תשובה, גם לשיעול. השאירו את הזיהוי פעיל לאודיו נקי או מעורב שפות, וציינו את השפה כשמדברים שפה אחת מעל רעש או במבטא כבד.
כל תמלול מתחיל בשאלה שהקורא לא רואה: איזו שפה זו? אם טועים בה, שאר הצינור עובד קשה כדי לייצר שטויות שנשמעות שוטפות. המאמר הזה מסביר מה גלאי שפה מקשיב לו, איך הזיהוי מתנהג בשידור חי ובקבצים, ומתי עדיף לציין את השפה בעצמכם.
גלאי שפה לא מבין מה נאמר. הוא מסתכל על הצליל עצמו: מלאי העיצורים והתנועות, אופן הטעמת ההברות, קצב המשפטים, והמילים הקצרות והנפוצות שכל שפה נשענת עליהן. לספרדית יש מערכת תנועות וקצב משלה; הולנדית וגרמנית חולקות הרבה, אבל נפרדות בכמה צלילים. כמה שניות של דיבור ברור בדרך כלל מספיקות כדי להבדיל ביניהן.
מזהים רבים עושים זאת כתוצר לוואי של זיהוי המילים. הם מכריעים את השפה מתחילת האודיו, כהסתברות לכל שפה שהם מכירים. מכאן נובעים שני דברים. ההסתברויות תמיד מסתכמות לאחד, ולכן אין תשובה של „אין שפה”: שקט, שיעול או צליל מוזיקלי מקבלים גם הם שפה, לעיתים עם ציון ביטחון גבוה. וההחלטה מתקבלת מהפתיחה, שהיא הדגימה הגרועה ביותר שאפשר לבחור. הרבה הקלטות נפתחות בברכות, בשמות ובשמות מקומות, שנושאים מעט מאוד מידע על השפה: „בוקר טוב, מריה, ברוכים הבאים לברלין” קרובה לגרמנית כמעט כמו לאנגלית. אחרות נפתחות בשקט או בשיעול, וגלאי שנדרש להכריע עליהם יכריע בכל זאת, בביטחון, על לא כלום. גם אודיו אמיתי עושה את זה: דרשה רומנית שנפתחת ברעש חדר ו„Bună dimineața” עלולה להישמע בקלות כאיטלקית „Buona domenica”, בוודאות מלאה.
המחיר של תשובה שגויה חמור מכפי שנדמה. מזהה שמפענח בשפה הלא נכונה לא מאייתת לא נכון; הוא כותב מחדש. „For God so loved the world”, כשמפוענח כרומנית, יצא כ־„Forgot to love the world”. המילה הרומנית „mândria slujește”, כשמפוענחת כאנגלית, יצאה כ־„Pride serves”, שהוא תרגום מדויק של משפט שאף אחד לא ביקש לתרגם. המילים שוטפות, והתמליל לא נותן שום סימן שמשהו לא בסדר, וזה מה שהופך את הטעות ליקרה.
חמישה דברים מטעים גלאים הכי הרבה:
איזה מהם פוגע בכם תלוי בשאלה אם האודיו מגיע בשידור חי או כבר יושב בקובץ.
בתמלול בשידור חי אין הקלטה שלמה להסתכל עליה. האודיו מגיע כשהוא נאמר, והתמליל צריך להגיע איתו. לכן השפה מזוהה תוך כדי דיבור, ונעקבת אם הדובר עובר שפה. זו המשמעות של ההערה שמתחת למתג Spoken language כשמתחילים תמלול בשידור חי בלוח הבקרה: שפת הדובר מזוהה אוטומטית, והוא יכול לעבור שפה בכל עת.
מעבר שפה מאושר לפני שהוא מיושם, כך שקטע רועש אחד לא יגרור את התמליל לשפה אחרת. החולשה נמצאת בפתיחה: אם המילים הראשונות הן ברכה רועשת, השורה הראשונה עלולה לצאת בשפה הלא נכונה. ציון השפה מונע את זה.
קבצים עובדים אחרת, כי ההקלטה כולה כבר נמצאת שם.
קובץ הוא בעיה טובה יותר: אין צורך לסמוך על השניות הראשונות. בקובץ השפה מוכרעת מההקלטה כולה, כך שברכה רועשת בתחילתה לא יכולה להכריע את העניין.
שפת הקובץ היא עדיין הנחת עבודה, לא פסק דין. הקלטה שמשתנה בפועל באמצע, כמו ראיון שעובר מאנגלית לרומנית בחצי השני, נעקבת ולא נכפית, וכזו שמתחלפת בין שפות לאורך כל הדרך מטופלת גם היא.
גלאי שמכריע פעם אחת ולעולם לא חוזר אחורה בטוח בעצמו במקום הלא נכון.
שום גלאי לא עוזר הרבה כשההקלטה כולה רועשת. זיהוי הוא ברירת המחדל, כי הוא צודק ברוב המקרים ואינו עולה לכם דבר. אבל בחלק מההקלטות כדאי לציין את השפה, ולוח הבקרה אומר אילו: ציון השפה המדוברת משפר את הדיוק בהקלטות רועשות ובמבטאים כבדים.
אלה המקרים שבהם לזיהוי יש הכי מעט מה לעבוד איתו. רעש מסיר את הרמזים שהגלאי נשען עליהם; מבטא כבד מזיז אותם לעבר שפה אחרת; וזוג קרוב מציע מלכתחילה מעט רמזים. דובר אנגלית עם מבטא פורטוגזי חזק באולם מהדהד קשה לזהות מהצליל לבד, ואם הגלאי מזהה אותו לא נכון, התמליל הופך דיבור באנגלית לפורטוגזית כל עוד נמשכת הטעות. ציון השפה מסיר את השאלה, כך שכל המאמץ הולך למילים.
רשימת בדיקה קצרה:
ציון השפה הוא הגדרה של התמלול, לא של החשבון, ולכן אפשר להחליט על כל הקלטה לחוד. כל מה שלמעלה מסתכם באפשרות אחת ב־API.
spokenLanguage חסר פירושו זיהוי; session.update באמצע זרםב־API, 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 כשמתחילים תמלול חדש, ומפתחות ה־API נמצאים תחת Developers.