דמויות AI ב-VR: היכן נשבר הדיאלוג הקולי
כשל קלאסי בהדגמה: שחקן שואל שאלה בקולו, ודמות AI ל-VR עונה בהשהיה מורגשת — וברגע הזה הקסם נעלם. השהיית תגובה של חצי שנייה נקראת לא כ"טכניקה איטית", אלא כחוסר רצון של בן השיח לדבר: האדם מפסיק לחכות ומדבר בעצמו, והדיאלוג מתפרק.
התקלה השנייה — אובדן החוט. זיהוי הדיבור של השחקן מתבצע בקטעים קצרים, הפסקות שקט ונשימות נחתכות, המשפטים נדבקים זה לזה, והדמות שואלת מחדש על מה שדנו בו לפני עשר שניות. היא זוכרת את המשפט האחרון, אבל לא את השיחה.
השלישית — חוסר סנכרון בין הפנים לקול. הבעת הפנים והרגש מדביקים את הסאונד באיחור מורגש, והמוח קולט זאת לפני שהשחקן מבין את הסיבה: הדמות נראית כמו בובה שמאחוריה קורא מלחיש.
הסיבה אינה בשגיאה בודדת, אלא במבנה: זיהוי דיבור, יצירת תשובה, סינתזת דיבור ואנימציית פנים — שלבים בלתי תלויים, שלכל אחד מהם השהיה משלו, ובסך הכול הם חורגים מהגבול שבו הדיאלוג מרגיש חי.
בקסדה אוטונומית מדגם Meta Quest תקציב החישוב מוגבל, ולכן דיאלוג קולי ב-VR דורש סכימה אחרת מאשר שיחה עם עוזר טקסטואלי: הגישה הנאיבית "להמתין למשפט המלא — ליצור תשובה — להשמיע" נתקלת בתקרה.
אנו מפרקים כיצד זה נסגר: עיבוד זרימה של הדיבור, בלי להמתין לסוף המשפט, הקשר קצר עם עוגן לעובדות מפתח וחיזוי הבעות פנים ממש בזמן הסינתזה.
מה נותן דיאלוג חי ב-VR: תגובה, רגשות, שימור
דיאלוג חי ב-VR אינו תלוי ב"חכמה" של המודל, אלא בתקציב ההשהיה: זיהוי המשפט, יצירת התשובה, סינתזת הקול ואנימציית הפנים צריכים להשתלב בהפסקה שעדיין נתפסת אצל האדם כטבעית.
ברגע שהתגובה מגיעה אחרי שהמשתמש הספיק לחזור על המשפט, הוא מפסיק לדבר בקול ונוטה לכפתורים — הסצנה מאבדת את משמעותה. לכן אנו קודם מחשבים את התרומה של כל שלב להשהיה הכוללת ורק אחר כך בוחרים את המודלים.
סנכרון הבעות פנים — משימה נפרדת: הדיבור מפורק לויזמים, אלה מונחים ביעדי מורפולוגיה של הפנים, וביניהם מתבצע החלקה, אחרת השפתיים "מתכווצות" במעבר צליל. רגש מחושב מעל הארטיקולציה כשכבה עם עדיפויות, כדי שגבות מורמות של הפתעה לא ישברו את צורת השפתיים בעיצורים.
עבור דמויות לשימוש חוזר נוח להחזיק ריג בפורמט MetaHuman — את הבעות הפנים והשלד אפשר להעביר לסצנה חדשה בלי להרכיב מחדש את האווטאר.
הטבעיות של הדיאלוג היא גם היכולת להקשיב: תגובה לקטיעה, משפטי אישור קצרים, הפסקה למחשבה לפני התשובה. כאן מופיעים מדדים מדידים: שיעור התרחישים שהושלמו, מספר הנשירות בקטע השיחה, כאשר המשתמש מוריד את הקסדה או קורא למפעיל, משך המעבר הממוצע. דווקא הנשירות בקטע השיחה מראות בצורה המדויקת ביותר היכן הקשר נקרע.
אנו מודדים לפי שלבים: בנפרד מתעדים את זמן הזיהוי, היצירה, הסינתזה והאנימציה, כדי לראות איזה קטע מעכב. לפני ההרכבה, הדיאלוגים מורצים אופליין על סט משפטים וקטיעות, ואפשרויות ההגשה הרגשית מושוות בהרצות חיות — אינטונציה, שנראית יציבה בלוגים, בקסדה לעיתים קרובות נשמעת אחרת. כך השימור מפסיק להיות תחושה והופך לפרמטר שאפשר להזיז.
מצבי עבודה של הדמות: ענן, מקומי והיברידי
מעגל הדיאלוג של דמות AI מורכב מארבע חוליות: זיהוי דיבור, יצירת תשובה, סינתזת קול ואנימציית פנים. היכן בדיוק הם מבוצעים — במעגל ענן, במעגל מקומי או בשילוב שלהם — לא נקבע לפי הטעם של הצוות, אלא לפי תנאי האתר: יציבות הערוץ, דרישות לעיבוד אודיו והשהיית התגובה המותרת.
עמדה באולם רועש וחדר תצוגה סגור נותנים נתוני פתיחה שונים, ולכן אין מצב "נכון" אחד. להלן ארבע אפשרויות שביניהן באמת בוחרים בתחילת הפרויקט.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| מעגל ענן | ערוץ רחב יציב, מספר אתרים, עריכות תכופות של תרחישים | תלות בקישוריות, השהיה מורגשת בערוץ מרוחק, אודיו יוצא מחוץ לגבול |
| מעגל מקומי | אתר סגור, נתונים רגישים, עומס צפוי | נדרש צומת חישוב במקום, תרחישים מתעדכנים ידנית |
| סכימה היברידית | תרחישים מעורבים: בסיס תשובות מקומי, משפטים מורכבים — במעגל חיצוני | ניפוי שגיאות מורכב יותר, נדרשים כללי מעבר ויומן אירועים משותף |
| אתר אוטונומי | אין ערוץ או שהוא לא יציב, עבודה במעגל מבודד | התרחיש מוגבל לענפי דיאלוג שהוכנו מראש |
הסכימה ההיברידית מציעה לרוב את הפשרה הטובה ביותר, אבל רק אם כלל המעבר מוגדר מראש: כל עוד התגובה נכנסת לזמן המותר, המשפט עובר למעגל החיצוני, אחרת הדמות עונה מהמלאי המקומי ולא מנתקת את הדיאלוג. מכאן גם צומחות הדרישות לציוד האתר ולמי שמתחזק אותו בין ההדגמות.
שלבי הטמעה: מניתוח תרחישים ועד מסירת המעגל
אנו מובילים את הפרויקט כמעגל: כל שלב מסתיים בארטיפקט שנבדק בעמדה, ולא בדוח על פגישות. הסדר בנוי כך שצווארי הבקבוק — איכות זיהוי הדיבור ברעש, השהיית התגובה, התאמת הרגשות — יצופו לפני שהדמות יוצאת לאורחים.
- ביקורת האתר. היכן הדמות חיה — קסדה, מכשיר נייד, מסך ראווה או דפדפן; איזה מיקרופון, כמה אנשים מדברים בו-זמנית, האם יש רעש רקע. כאן גם מחליטים מה מחושב במכשיר ומה בשרת.
- ניתוח תרחישים. מפרקים את התפקיד לענפים: מה הדמות יודעת ומה היא לא יודעת, אילו נושאים היא מכסה, היכן היא חייבת להחזיר את השיחה למטרה, ומתי היא שותקת. מתעדים רשימת אמירות אסורות.
- סכימת דיאלוג. מרכיבים גרף מצבים — ברכה, הבהרות, הסתעפויות, מבויים, יציאה. מגדירים כללי קטיעה והפסקות, כדי שהדמות לא תדבר מעל האדם ולא תיתקע.
- הגדרת אופי. סגנון דיבור, קצב, אורך משפטים, מילון. בנפרד — סדרה רגשית: אילו הבעות מתאימות בכל מצב וכמה זמן הן נשמרות לאחר המשפט.
- קול והבעות פנים. בוחרים קול שמתאים לאופי, מסנכרנים את הארטיקולציה עם הדיבור, מגדירים מעברי רגש בלי טלטלות. בודקים זיהוי באוזניות וברמקולים חיצוניים.
- בדיקת דיאלוגים על אנשים חיים. מריצים את התרחיש עם מי שלא השתתף בפיתוח: שוברים את ההיגיון, מדברים במבטא וברעש, קוטעים. כל שבר סוגרים בתיקון בגרף או במילון.
- מסירת המעגל. מוסרים קונפיגורציות, סכימת דיאלוג, מילונים, גישות לפאנל ותקנון עריכות. מאמנים את הצוות שמעדכן משפטים בהמשך בלעדינו.
קונפיגורציות, סכימות ותקנונים: הערכה ביציאה
הפיתוח של דמות AI לא מסתיים בהדגמת סצנה, אלא במסירת ערכה שלפיה הצוות שלכם מקים ומתחזק את הפתרון בלעדינו. להלן מה שמעוגן בקבלה: בלי כל אחד מהארטיפקטים האלה הדמות חיה רק בעמדת המפתח.
- קונפיגורציות עבודה של ליבת הדיאלוג: פרופילי קול, ספי זיהוי דיבור, מערכי תגובות, כללי מיזוג רגשות — עם הערות מה לשנות בעת החלפת תרחיש.
- סכימת אינטגרציה: כיצד הדמות מתחברת למנוע הסצנה, מהיכן מגיעים אירועי המעקב, היכן הגבול בין לוגיקת לקוח לשרת, ומה קורה בעת ניתוק ערוץ התקשורת.
- סכימות זרימות נתונים: קול → זיהוי → כוונה → תשובה → סינתזת דיבור ואנימציית פנים, עם ציון נקודות ההשהיה ודרכים לקצר אותה.
- תקנון עדכון: כיצד להעלות תרחישים ומשפטים חדשים בלי לעצור את הסצנה, כיצד לחזור למערך הקודם, מי מאשר פרסום.
- מדיניות תוכן: מגבלות על נושאים וניסוחי משפטים, כללי סינון תשובות, מגבלות על יצירה, עיבוד נתונים אישיים מערוץ הקולי.
- תיעוד המעגל: הרכב הסביבות — פיתוח, בדיקה, הרצה תעשייתית, דרישות לסביבה, תלויות, סדר פריסה ורשימת בדיקות לפני העלאה.
- תקנון תמיכה: מדדי איכות הדיאלוג וזמן התגובה, תדירות הרצות בקרה, סדר הסלמת תקלות והנקודה שבה אנחנו מתחברים.
הערכה נשארת אצלכם במאגר ומתעדכנת יחד עם הקוד: משפט או קול חדשים לא מתפצלים מהתיעוד, והעברת המשימה למהנדס אחר לא הופכת לניתוח לאחור לפי לוגים.
מקרה בוחן: מדריך וירטואלי במרחב תצוגה
לפני השינוי
הגרסה הראשונה של המדריך ענתה לפי תרחיש נוקשה: עד שהמבקר לא סיים את המשפט כולו, הדמות שתקה, ואז השמיעה מונולוג של חצי דקה. משך הסשן הממוצע החזיק מעמד סביב 50 שניות — האדם שאל שאלה אחת והלך, בלי להקשיב לתשובה עד הסוף.
הרגשות חיו בשכבה נפרדת: חיוך ומחווה הופעלו אחרי המשפט, ולא בתוכו, ולכן הדמות נתפסה כפתיח מושמע. החזרות לעמדה היו בודדות — את המדריך הווירטואלי תפסו כפאנל מידע עם פנים.
מה שינינו ומה זה נתן
את לוגיקת הדיאלוג פירקנו לשלבים קצרים: זיהוי הכוונה מתבצע תוך כדי הדיבור, התשובה מורכבת ממשפט או שניים, והדמות יודעת להיקטע. המשפטים קיבלו סימון רגשי — קצב, אינטונציה והבעות פנים קשורים למילה, וההפסקה לפני התשובה הפכה לחלק מההגשה, לא להשהיה.
את הסצנה הרכבנו על Unreal Engine, כדי שאנימציית הפנים תרוץ בזמן אמת יחד עם הקול, בלי דיבובים מוקלטים מראש.
משך הסשן גדל מ-50 שניות לשלוש וחצי דקות: המבקר עובר 4–6 נושאים בתצוגה במקום אחד. עד השאלה השלישית בדיאלוג מגיעים שני שלישים מהשיחות, גישה חוזרת לעמדה באותו יום נרשמת אצל כל שלישי, והמפעיל מתערב רק במעברי לוח זמנים ובע�ובדות שנויות במחלוקת.
במה שונה דמות סקריפטית מדמות דיאלוגית?
דמות סקריפטית היא עץ של משפטים ומעברים שנכתבו מראש. היא מתנהגת באופן צפוי: אותו משפט של אורח תמיד מוביל לאותה תשובה, ואת כל הטקסט אפשר לערוך ולאשר לפני ההרצה. הצד השני — קומבינטוריקה: די להוסיף ענף חדש, ומספר החיבורים גדל מהר יותר מכפי שהצוות מספיק לכתוב ולעבור עליהם.
דמות דיאלוגית בנויה אחרת: היא מנתחת דיבור חופשי, שומרת על התפקיד ועל הקשר השיחה ובונה בעצמה ניסוח למשפט המסוים. העמידות לקלט לא סטנדרטי כאן גבוהה לאין שיעור — האורח יכול לשאול כל דבר, והשיחה לא נעצרת על "לא הבנתי אותך".
במקום מאות תבניות מוכנות מכינים תיאור אופי, גבולות נושאים מותרים, כללי טון ומערך עובדות שהדמות נשענת עליהן בתשובות.
ההבדל במאמץ מתגלה בתמיכה. סקריפט נערך ידנית: כל נושא חדש — ענף חדש, ואחרי עשרה תיקונים יש להרכיב את העץ מחדש כולו.
דמות דיאלוגית מוגדרת דרך תיאור תפקיד וכללים — שינוי טיפוסי אורך דקות, אבל דורש בדיקה: מערך דיאלוגים לבדיקה, הרצה על משפטים פרובוקטיביים ופיקוח שהדמות לא יוצאת מהדמות תחת לחץ של אורח.
בחירת הגישה נקבעת לפי המשימה, ולא לפי מה ש"חדש יותר". במקום שבו חשובה דיוק מילולי — הדרכה, תקנון, בדיקת ידע — לוקחים סקריפט או היברידי: ענפים נוקשים בקטעים קריטיים ודיאלוג חי בכל השאר.
במקום שצריך דווקא שיחה — מדריך, מלווה, אימון משא ומתן — הגישה הדיאלוגית נותנת את מה שעץ לא נותן באופן עקרוני.
השורה התחתונה פשוטה: כדאי להשוות גישות לפי מחיר הטעות בניסוח מול מחיר קטיעת השיחה. אנחנו מפרקים את האיזון הזה יחד עם הלקוח לפני תחילת העבודה — לפי תרחיש השימוש, ולא לפי אופנה.
ספקות לגבי איכות: רעש, השהיות, תשובות לא צפויות
דמות שנשמעת משכנעת בהדגמה מתנהגת אחרת בחדר אמיתי: אורחים מדברים בו-זמנית, מוזיקת רקע מסווה עיצורים, ומישהו מנסה להוציא אותה מהתרחיש. אנו מפרקים התנגדויות הנדסיות שעולות לרוב בקבלת אב הטיפוס לפני ההרצה.
התשובות שלהלן אינן עוסקות ב"אימון נוסף" של המודל, אלא במעגל הדיאלוג: גלאי פעילות דיבור, תור משפטים, כללי בטיחות ומטמון מקומי. בכל סעיף רואים מה בדיוק מוגדר ואיזו התנהגות נשארת צפויה באתר.
מה קורה כשקוטעים את האורח או שהוא מדבר מעל הדמות?
הדיבור של האורח מעובד בגלאי פעילות דיבור עם סף שמתאים לחדר המסוים, ולכן רעש ההמון לא פותח את המיקרופון כל הזמן. אם המשפט מתחיל באמצע התשובה, הדמות משתתקת בלי לסיים את המשפט, ועונה כבר לשאלה החדשה — תור המשפטים לא מתערבב. דיכוי הד לא מאפשר לקול של הדמות עצמה להיתפס כתשובת האורח.
עד כמה התשובות לא צפויות?
הניסוחים חופשיים, אבל המסגרת נתונה: התשובה נבדקת לחריגה מהתרחיש ולעמידה בתפקיד לפני ההשמעה. אם הבדיקה לא עוברת, הדמות עונה במשפט מוכן ומחזירה בעדינות את השיחה לנושא שלה — במקום מעשה אקראי או שתיקה. כך ההתנהגות נשארת חיה, אבל משוחזרת מהרצה להרצה.
איך מוגבלים נושאים ומשפטים לא הולמים?
לדמות יש רשימת נושאים מותרים וכללי תגובה לגסות: היא לא חוזרת על קללות, לא מתווכחת ומעבירה את השיחה לענף ניטרלי. ניסוחי הסירוב כתובים מראש ונאמרים בשלווה, בלי מוסר השכל. בניסיונות עיקשים לפרוץ את המגבלות הדמות נשארת בתפקיד, והאירוע נרשם ביומן לבדיקה.
מה אם הקישור לאינטרנט אבד?
ענפים קריטיים — ברכה, סצנות מפתח, תשובות לשאלות נפוצות — עובדים מקומית, בלי פנייה לשרת חיצוני, ולכן הדמות לא נכבית באמצע הדיאלוג. כשהקישור חוזר, מערך התשובות המלא משוחזר, והאורח לא צריך להתחיל דבר מחדש. מצב כזה אנו בודקים בהרצה נפרדת עם ערוץ מנותק באופן מלאכותי.
נדון במשימה: תרחישים, קול, נקודות אינטגרציה
כדי לחזור עם הערכה ותוכנית, ולא עם מילים כלליות, אנחנו צריכים נתוני פתיחה בארבעה דברים: תרחישי הדמות, נקודות אינטגרציה, מגבלות הסצנה וקריטריוני קבלה. ככל שנתוני המוצא קונקרטיים יותר, כך קטן המלאי "למקרה של אי-ודאות" בהערכת המשימה, ואפשר להתחיל מוקדם יותר.
- משפטים וענפי דיאלוג: מה הדמות חייבת לדעת, אילו נושאים היא מכסה, ואילו משפטים לא צריכים להישמע.
- מצבים רגשיים: מערך תגובות למילים ולמחוות של הצופה וכללי מעבר ביניהן.
- קול: האם נדרשת סינתזה במקום או משפטים מוקלטים, דרישות לבהירות ולזמן התגובה.
- נקודות אינטגרציה: פלטפורמת הרינדור, דגם ההרכבה או הטלפון, שירותי זיהוי דיבור חיצוניים, גישות וחשבונות.
- מגבלות: מספר צופים בו-זמנית, משך הסשן, התנהגות באובדן רשת ונסיגה לתרחיש בטוח.
- נתונים: מה מקליטים, היכן מאחסנים, מי הבעלים ומה נמחק לאחר הסשן.
בהמשך העבודה מתנהלת בשלבים: מפרקים תרחישים, מרכיבים אב טיפוס של סצנה אחת, מודדים תגובה ועמידות על הציוד המיועד, מציגים תוצאה ורק אחר כך מקבעים את ההיקף. הערכת המשימה נשענת על אב טיפוס, ולא על ניחושים, ולכן את הגרסה הראשונה של הדיאלוג אתם שומעים ורואים בעצמכם.
תארו את המשימה בצורה חופשית — נחזור עם הערכה, תוכנית עבודה והרכב צוות ההנדסה.







