תמליל מסומן דורש שתי תשובות נכונות, ומכיוון שהתוויות יושבות מעל המילים, אפשר לתקן תווית שגויה בלי לגעת בטקסט.
תמליל של פגישה עונה על שתי שאלות בבת אחת: מה נאמר, ומי אמר זאת. הקורא רואה משימה אחת, שם לצד כל שורה. מתחתיה מסתתרות שתי בעיות, ולכל אחת קלטים משלה ודרכי כשל משלה.
זיהוי דיבור מאזין למילים. הוא הופך אודיו לטקסט, ובביצוע טוב גם נותן זמן התחלה וזמן סיום לכל מילה. לא אכפת לו אם הקול השתנה באמצע משפט; מטרתו לקבוע נכון את המשפט.
הפרדת דוברים מאזינה לקולות. היא אינה מכירה מילים. תפקידה לחלק את ציר הזמן לתורות ולקבוע אילו תורות שייכים לאותו אדם: דובר 1, דובר 2. המילה נלקחה מ"יומן" (diary), וזו תמונה הוגנת של הפלט: יומן של מי החזיק בדיבור, ומתי.
שלושה מונחים קרובים מתבלבלים איתה. הפרדת דוברים אומרת מי דיבר מתי, בלי לדעת מי הם. זיהוי דוברים אומר לאיזה אדם מוכר שייך קטע דיבור, בבחירה מתוך קולות רשומים מראש. אימות דובר עונה על שאלת כן או לא: האם הקול הזה באמת שייך לאדם X? כשמפרידים בין השלושה, קל יותר לקרוא טענות של ספקים, כי "תוויות דוברים" יכולות לייצג כל דבר, מניחוש גס של גבולות תורות ועד שמות שעוקבים אחרי אדם מהקלטה אחת לבאה. כדי להבין מה התוויות האלה יכולות להבטיח ומה לא, כדאי להציץ פנימה אל המפריד.
רוב מערכות ההפרדה עובדות בשלושה שלבים, ואף אחד מהם לא נוגע בשפה.
כל שלב יכול להשתבש בעצמו. דובר שקט נעלם. שני קולות דומים מתמזגים. אדם אחד שעובר מרגיעה להתלהבות מתפצל לשניים.
התחום מודד את כל זה באמצעות שיעור שגיאת ההפרדה, DER: החלק מזמן הדיבור שהוחמץ, זוהה בטעות כדיבור, או יוחס לדובר הלא נכון, בדרך כלל עם "חסד" של כרבע שנייה סביב כל גבול. החסד קיים מפני שאף אחד, לא אדם ולא מכונה, לא יכול למקם מעבר דובר למילישנייה. הסובלנות הזו מתאימה למדידת מפריד לבדו. לתמליל היא לא מתאימה, כי גבול שמוזז ברבע שנייה נוחת על מילה.
כאן שתי הבעיות נפגשות, וכאן מוכרעת איכותו של תמליל מסומן. מפריד ממקם את הגבולות שלו בחוסר דיוק מסוים, לעיתים בשבריר שנייה לכאן או לכאן. מזהה מילים ממקם מילים על אותו ציר זמן. אם מניחים את השניים זה על גבי זה בצורה תמימה, גבול נופל בתוך מילה, ולכן חצי מ"מחר" שייך לדובר 1 והחצי השני לדובר 2.
גם תוויות יכולות להיות שגויות לזמן מה לפני שהן נכונות. מפריד נעשה בטוח יותר בקבוצות שלו ככל ששמע יותר אודיו, ולכן תווית מוקדמת יכולה להיראות שגויה לפי מה שמתברר מאוחר יותר. בתמליל חי אפשר לתקן תווית אחרי שהשורה כבר הוצגה: ה-API בזמן אמת של VocalStack שולח מסגרת מסוג transcript.amended שמתקנת במקום את הטקסט או את הדובר של שורה שכבר אושרה, כך שהקורא רואה תיקון ולא סתירה.
גם תווית יציבה ומדויקת לחלוטין היא עדיין רק מספר. מספר מספיק כדי לעקוב אחרי שיחה; שם הוא מה שאנשים רוצים לקרוא.
תווית הופכת לשם בשתי דרכים, והן נבנות זו על זו.
הראשונה היא מתן שם בתוך הקלטה. לכל דובר שתמלול מוצא מוקצה אינדקס, שמתחיל מ-0. מי שיש לו גישה יכול לתת שם לכל דובר במהלך ההקלטה או אחריה. השם הוא שכבה מעל המילים, ולכן אפשר להגדיר, לשנות או למחוק אותו בלי לגעת בטקסט. דרך ה-API זה נעשה עם PUT /v1/recordings/{id}/speakers/{idx} ושדה name; שם ריק מוחק את השם. שורה שה-speaker שלה הוא -1 אין לה תווית, או משום שהתוויות כובו, או, בטיוטה חיה, משום שהשורה עוד לא יוחסה לדובר.
השנייה היא זיהוי בין הקלטות, הבעיה של זיהוי הדוברים מהסעיף הראשון. מפריד יכול רק לומר ששני קולות שונים, לעולם לא מי הם. כדי לעבור מ"שונים" ל"זו אנה", המערכת צריכה נקודת ייחוס: קול שמור, שנלקח מהקלטה של אותו אדם בלבד. שלושים שניות של דיבור נקי הם המינימום, ודקות ספורות עדיפות. הדגימה צריכה גם להישמע כמו ההקלטות שאליהן תושווה: אותו אדם על מיקרופון של מחשב נייד ועל מיקרופון של במה יכול להישמע פחות דומה למכונה משני זרים שהוקלטו באותו אופן. אחרי ששומרים קול, כל דובר שתמלול מזהה מושווה אליו, והתאמה מעבירה את השם לתמליל. ב-VocalStack זה נמצא תחת קולות; תמלולי קבצים וסשנים חיים בלוח הבקרה מתאימים את הקולות השמורים שלכם אוטומטית, וסשן של ה-API בזמן אמת מזהה רק את הקולות שאתם מפרטים ב-identifyVoices.
קול שמור הוא מידע ביומטרי: הוא יכול לזהות אדם בכל הקלטה, וב-VocalStack הוא משמש גם כקול משובט שיכול להקריא את השורות שלו בקול. לוח הבקרה מבקש מכם לאשר שיש לכם את הרשאתו של האדם לפני שמירת קול, וניתן למחוק קול בכל רגע.
הכל מניח שאתם רוצים תוויות בכלל. לעיתים קרובות לא.
הרצאה של אדם אחד לא צריכה "דובר 1" לפני כל שורה. הקהל כבר יודע מי מחזיק במיקרופון. לכן להגדרת תוויות הדוברים יש שלוש עמדות, והן זהות בסשן זמן אמת, בשידור, בתמלול ובהקלטה.
auto ב-API). שורות מסומנות בדובר שלהן ברגע שנשמעים יותר מקול אחד; הקלטה של דובר אחד נשארת טקסט רגיל, וקול שני שמצטרף מאוחר עדיין נתפס. הטופס החדש של התמלול החי בלוח הבקרה מתחיל בעמדה הזו.העלאת קובץ מקבלת את אותה אפשרות speakerLabels, וה-API בזמן אמת מאפשר לשנות אותה תוך כדי זרימה; הפרטים נמצאים במדריך ה-API. הפרדה ומתן שמות לדוברים לעולם לא מוסיפים לחשבון (בדף המחירים מופיע מחירון מלא), ולכן הבחירה נוגעת למה הקורא צריך לראות, לא למה זה עולה.
כשהאפשרות פעילה, הפרדת הדוברים טובה, אבל היא לא קסם. שני מצבים עדיין מנצחים אותה.
הראשון הוא חפיפה. כששני אנשים מדברים בו זמנית, קטע אודיו אחד נושא שני קולות. מפרידים שמודעים לחפיפה קיימים במחקר ובהדרגה גם במוצרים: למשל, הפרדה עצבית מקצה לקצה (EEND) מתייחסת לשאלה "מי מדבר" כאל סט של שאלות כן-או-לא בו-זמנית, ולא כתשובה אחת. אבל רוב מערכות הייצור עדיין מקצות דובר אחד לכל קטע, ומזהה הדיבור שמעליהן מתמלל קול אחד בכל פעם. חפיפה בפאנל סוער היא האודיו הקשה ביותר בתחום, ותוויות של כל ספק נהיות גרועות יותר שם. זה גם החלק שכולם רוצים לצטט אחר כך.
השני הוא קולות דומים מאוד. אחים ואחיות יכולים לייצר הטמעות קרובות מדי כדי להפריד ביניהן באמינות, במיוחד כשהם מתחלפים בתורות קצרות במשך שעה. שיחה טלפונית מחמירה את המצב לכולם: קו צר-פס נדגם ב-8 kHz ואינו מעביר דבר מעל כ-3.4 kHz, אף על פי שחלק גדול ממה שמבדיל בין קול לקול נמצא מעל הגבול הזה. שני אנשים על אותו קו טלפון נשמעים יותר דומים למפריד מאשר לכם.
התרופה המעשית ביותר לשניהם נמצאת לפני כל מודל: לתת לכל אדם מיקרופון משלו. עם ערוץ אחד לכל דובר, הפרדה הופכת לשאלה איזה ערוץ חזק יותר, חפיפה הופכת לשני מסלולים נקיים במקום אחד מעורפל, וההטמעות לעולם לא נדרשות לעשות את החלק הקשה. מיקרופון שולחני אחד זול יותר ותמיד כמעט מה שיש לכם, ולכן שאר המאמר הזה קיים.
אף אחת מהמגבלות לא חייבת להגיע לקורא כמות שהיא. מכיוון שהתוויות הן שכבה מעל המילים, תווית שגויה לעולם לא עולה לכם בטקסט: אפשר להגדיר או למחוק שמות דוברים בהקלטה בכל נקודה, ובתמלול חי המארח יכול לכתוב מחדש כל מילה או שורה בזמן שהוא עדיין רץ, כאשר כל תיקון מסומן וניתן לביטול.
לצד המילים, מה מדד שיעור שגיאת מילים מודד ומה הוא מפספס מכסה לעומק את שכבות התיקון; WER הוא למזהה הדיבור מה ש-DER הוא למפריד, ותמליל צריך ששניהם יהיו נמוכים.