Cloud Speech-to-Text הוא API שמאפשר לכם לשלב את הטכנולוגיות של Google לזיהוי דיבור באפליקציות של מפתחים. במאמר הזה מוסבר על השימוש ב-Cloud Speech-to-Text, כולל סוגי הבקשות שאפשר לשלוח ל-Cloud STT, איך ליצור את הבקשות האלה ואיך לטפל בתגובות שלהן. לפני שמתחילים להשתמש ב-API, כדאי לקרוא את המדריך הזה ואחד מהמדריכים שקשורים אליו.
בקשות זיהוי של Cloud Speech-to-Text
ל-Cloud Speech-to-Text (STT) יש שלוש שיטות עיקריות לביצוע זיהוי דיבור. השיטות הבאות זמינות:
זיהוי סינכרוני (REST ו-gRPC) שולח נתוני אודיו אל Cloud Speech-to-Text API, מבצע זיהוי של הנתונים האלה ומחזיר תוצאות אחרי שכל האודיו עבר עיבוד. בקשות לזיהוי סינכרוני מעבדות נתוני אודיו באורך של דקה אחת או פחות.
זיהוי אסינכרוני (REST ו-gRPC): נתוני אודיו נשלחים אל Cloud Speech-to-Text API ומופעלת פעולה ארוכת טווח. באמצעות הפעולה הזו, אפשר לבצע דגימה תקופתית של תוצאות הזיהוי. אפשר להשתמש בבקשות אסינכרוניות לנתוני אודיו בכל משך זמן, עד 480 דקות.
Streaming recognition (gRPC בלבד) מבצע זיהוי של נתוני אודיו שסופקו בזרם דו-כיווני של gRPC. בקשות סטרימינג מיועדות למטרות זיהוי בזמן אמת, כמו הקלטת אודיו חי ממיקרופון. זיהוי בסטרימינג מספק תוצאות ביניים בזמן שהאודיו מוקלט. לדוגמה, התוצאות יכולות להופיע בזמן שהמשתמש עדיין מדבר.
הבקשות מכילות פרמטרים של הגדרות וגם נתוני אודיו. בקשות זיהוי יכולות להכיל באופן אופציונלי מזהה, הגדרת זיהוי מאוחסנת וניתנת לשימוש חוזר.
מטא-נתונים של אודיו
ברוב קובצי האודיו, Cloud Speech-to-Text API יכול להסיק באופן אוטומטי את מטא-נתוני האודיו. שירות Cloud STT מנתח את הכותרת של הקובץ ומפענח אותו בהתאם למידע הזה. מידע על סוגי הקבצים הנתמכים מופיע בדף בנושא קידוד.
ב-Cloud Speech-to-Text API, אפשר לציין במפורש את מטא-נתוני האודיו בהגדרות הזיהוי של קובצי אודיו ללא כותרת. פרטים נוספים זמינים בדף בנושא קידוד.
אם יש לכם אפשרות בחירה כשמקודדים את חומר המקור, כדאי להקליט את האודיו באמצעות קצב דגימה של 16,000 הרץ. ערכים נמוכים יותר עלולים לפגוע בדיוק של זיהוי הדיבור, וערכים גבוהים יותר לא משפיעים באופן משמעותי על איכות זיהוי הדיבור.
עם זאת, אם נתוני האודיו כבר הוקלטו בקצב דגימה קיים ששונה מ-16,000 הרץ, אל תבצעו דגימה מחדש של האודיו ל-16,000 הרץ. לדוגמה, ברוב האודיו של טלפוניה מדור קודם נעשה שימוש בקצב דגימה של 8,000 הרץ, שיכול להניב תוצאות פחות מדויקות. אם אין ברירה אלא להשתמש באודיו כזה, צריך לספק את האודיו ל-Cloud Speech-to-Text API בקצב הדגימה המקורי שלו.
שפות
מנוע הזיהוי של Cloud STT תומך במגוון שפות וניבים. מציינים את השפה (ואת הניב האזורי או הלאומי) של האודיו בשדה languageCode של הגדרות הבקשה, באמצעות מזהה BCP-47.
רשימה מלאה של השפות הנתמכות בכל תכונה זמינה בדף שפות נתמכות.
תכונות זיהוי
ל-Cloud Speech-to-Text API יש תכונות נוספות לזיהוי דיבור, כמו פיסוק אוטומטי ורמת מהימנות ברמת המילה. מפעילים את התכונות האלה בהגדרת הזיהוי בבקשות. כדי לראות את הזמינות של התכונה, אפשר לעיין בקוד לדוגמה בקישורים שצירפנו ובדף שפות.
בחירת מודל
Cloud STT יכול להשתמש באחד מכמה מודלים של למידת מכונה כדי לתמלל את קובץ האודיו. Google אימנה את המודלים האלה לזיהוי דיבור עבור סוגים ומקורות ספציפיים של אודיו. במאמר בנושא בחירת מודל מוסבר על המודלים הזמינים ואיך לבחור מודל בבקשות.
תוכן אודיו מוטמע
כדי לכלול אודיו מוטמע בבקשה לזיהוי דיבור, מעבירים פרמטר content בשדה audio_source של הבקשה. אם אתם מספקים אודיו מוטמע כתוכן בבקשת gRPC, האודיו צריך להיות תואם לסריאליזציה של Proto3 ולהישלח כנתונים בינאריים. אם אתם מספקים אודיו מוטמע כתוכן בבקשת REST, האודיו צריך להיות תואם לסריאליזציה של JSON, וקודם צריך לקודד אותו ב-Base64. מידע נוסף זמין במאמר בנושא קידוד Base64 של אודיו.
כשיוצרים בקשה באמצעות ספריית לקוחות של Google Cloud, בדרך כלל כותבים את הנתונים הבינאריים (או את הנתונים שמקודדים ב-Base64) ישירות בשדה content.
העברת אודיו שמופנה אליו באמצעות URI
בדרך כלל, מעבירים פרמטר uri בשדה audio_source של בקשת Cloud Speech-to-Text API, שמצביע על קובץ אודיו (בפורמט בינארי, לא Base64) שנמצא ב-Cloud Storage, בצורה הבאה:
gs://bucket-name/path/to/audio/file
השירות Speech-to-Text משתמש בחשבון שירות כדי לגשת לקבצים שלכם ב-Cloud Storage. כברירת מחדל, לחשבון השירות יש גישה לקבצים ב-Cloud Storage באותו פרויקט.
כתובת האימייל של חשבון השירות היא:
service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com
כדי לתמלל קבצים ב-Cloud Storage בפרויקט אחר, אפשר לתת לחשבון השירות הזה את התפקיד [סוכן שירות Speech-to-Text][speech-service-agent] בפרויקט האחר:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
--role=roles/speech.serviceAgentמידע נוסף על מדיניות IAM של פרויקטים זמין במאמר [ניהול הגישה לפרויקטים, לתיקיות ולארגונים][manage-access].
אפשר גם לתת לחשבון השירות גישה מפורטת יותר על ידי מתן הרשאה לקטגוריה ספציפית של Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
--role=roles/storage.adminמידע נוסף על ניהול הגישה ל-Cloud Storage זמין במאמר בנושא [יצירה וניהול של רשימות בקרת גישה][buckets-manage-acl] במסמכי התיעוד של Cloud Storage.
תשובות של Cloud Speech-to-Text API
אחרי שממשק Cloud Speech-to-Text API מעבד אודיו, הוא מחזיר את תוצאות התמלול בהודעות SpeechRecognitionResult לבקשות סינכרוניות ובקשות אצווה, ובהודעות StreamingRecognitionResult לבקשות סטרימינג. בבקשות סינכרוניות ובבקשות באצווה, תגובת ה-RPC מכילה רשימת תוצאות. רשימת האודיו שזוהה מופיעה בסדר רציף. בתשובות שמוצגות בסטרימינג,
כל התוצאות שמסומנות בסימן is_final מופיעות ברצף.
בחירת חלופות
כל תוצאה בתשובה של זיהוי סינכרוני מוצלח יכולה להכיל alternatives אחד או יותר (אם הערך של max_alternatives גדול מ-1). אם Cloud STT קובע שלחלופה יש ערך מהימנות מספיק, הוא כולל את החלופה הזו בתשובה. החלופה הראשונה בתשובה היא תמיד החלופה הכי טובה (הכי סבירה).
הגדרת max_alternatives לערך גבוה יותר מ-1 לא מרמזת או מבטיחה שיוחזרו כמה חלופות. באופן כללי, יותר מאפשרות חלופית אחת מתאימות יותר למתן אפשרויות בזמן אמת למשתמשים שמקבלים תוצאות באמצעות בקשת זיהוי בסטרימינג.
איך עובדים עם תמלילים
כל חלופה בתשובה מכילה transcript עם הטקסט שזוהה. כשמקבלים חלופות עוקבות, צריך לשרשר את התמלילים האלה.
ערכי מהימנות
הערך של confidence הוא הערכה בין 0.0 ל-1.0. כדי לחשב את המדד הזה, המערכת מסכמת את ערכי הסבירות שמוקצים לכל מילה באודיו. מספר גבוה יותר מצביע על סבירות גבוהה יותר לכך שהמילים הבודדות יזוהו בצורה נכונה. השדה הזה מסופק בדרך כלל רק עבור ההשערה המובילה ורק עבור תוצאות שבהן is_final=true. לדוגמה, אפשר להשתמש בערך confidence כדי להחליט אם להציג תוצאות חלופיות או לבקש אישור.
עם זאת, חשוב לזכור שהמודל קובע מהי התוצאה ה "הכי טובה" ומדרג אותה במקום הראשון על סמך יותר אותות מאשר רק הציון confidence (למשל, הקשר של המשפט).
לכן, יש מקרים שבהם התוצאה העליונה לא מקבלת את ציון הסמך הכי גבוה. אם לא ביקשתם כמה תוצאות חלופיות, יכול להיות שערך המהימנות של התוצאה ה"הטובה ביותר" יהיה נמוך מהצפוי.
לדוגמה, זה יכול לקרות כשמשתמשים במילים נדירות. גם אם המערכת מזהה נכון מילה שלא נמצאת בשימוש לעיתים קרובות, יכול להיות שיוקצה לה ערך נמוך של 'סבירות'. אם המודל קובע שהמילה הנדירה היא האפשרות הסבירה ביותר על סמך ההקשר, הוא יחזיר את התוצאה הזו בראש גם אם ערך confidenceהתוצאה נמוך יותר מאפשרויות חלופיות.
המאמרים הבאים
- אפשר להשתמש בספריות לקוח כדי לתמלל אודיו באמצעות שפת התכנות המועדפת עליכם.
- איך מתמללים קובצי אודיו קצרים
- איך מתמללים אודיו בסטרימינג
- איך מתמללים קובצי אודיו ארוכים