אופטימיזציה של קובצי אודיו ל-Cloud Speech-to-Text

במדריך הזה נסביר איך לבצע בדיקה מקדימה של קובצי אודיו שאתם מכינים לשימוש ב-Cloud Speech-to-Text. במאמר הזה מוסבר על פורמטים של קובצי אודיו, איך לבצע אופטימיזציה לקובצי אודיו לשימוש עם Cloud STT ואיך לאבחן שגיאות. המדריך מיועד לאנשי מקצוע בתחום המדיה והבידור ולאנשי מקצוע בתחום הפוסט-פרודקשן, שאין להם רקע טכני. לא נדרש ידע מעמיק ב-Google Cloud, אלא רק ידע בסיסי בשימוש בכלי שורת הפקודה gcloud עם קבצים שמאוחסנים באופן מקומי וגם בקטגוריה של Cloud Storage.

מטרות

  • מתקינים את הכלי FFMPEG.
  • מורידים את קובצי המדיה לדוגמה.
  • הפעלת קובצי אודיו ווידאו באמצעות FFMPEG.
  • לחלץ, לשנות קידוד ולהמיר מאפיינים של קובץ אודיו באמצעות FFMPEG.
  • מריצים את Cloud STT על מגוון קבצים לדוגמה שמכילים דיאלוג.

עלויות

במדריך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

אפשר להשתמש במחשבון התמחור כדי ליצור הערכת עלויות על סמך השימוש החזוי.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init

במדריך הזה משתמשים ב-Cloud Shell כדי לבצע את הפעולות, כמו העתקת נתונים מקטגוריה של Cloud Storage לסשן Cloud Shell. ‫Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud כבר מותקן. במדריך הזה משתמשים ב-CLI של gcloud בשלבים רבים. אתם גם מתקינים תוכנה וקבצי אודיו לדוגמה במחשב המקומי, ומריצים את אותם תרגילים מהטרמינל, כמו שמתואר בקטע הרצת דוגמאות מהמדריך בטרמינל מקומי בהמשך.

סקירה כללית

במדריך הזה משתמשים ב-FFMPEG, כלי קוד פתוח להקלטה, להמרה ולסטרימינג של אודיו ווידאו. בהמשך המדריך מוסבר על הכלי הזה.

הסבר על מאפייני קובץ קול

בקטע הזה מתוארים סוגי קובצי אודיו אופייניים, תדירויות דגימה, עומקי ביטים ומדיה להקלטה שנמצאים בתהליכי עבודה של הפקת מדיה ופוסט-פרודקשן.

כדי לקבל את התוצאות הטובות ביותר מ-Cloud STT, חשוב לוודא שהקבצים שמשמשים לתמלול הם קבצים מונופוניים (מונו) שעומדים במפרטים מינימליים מסוימים, כפי שמתואר בהמשך. אם הקבצים לא עומדים בדרישות המפרט, יכול להיות שתצטרכו ליצור קבצים שעברו שינוי. לדוגמה, יכול להיות שתצטרכו:

  • לחלץ את נתוני האודיו מקובץ וידאו.
  • לחלץ טראק מונו אחד מקובץ אודיו עם כמה טראקים.
  • קידוד מחדש מקוד אודיו לקוד אחר שמתאים יותר ל-Cloud STT.

תדירות הדגימה (טווח תדרים)

תדירות הדגימה קובעת את טווח התדרים של קובץ האודיו. הוא מבוסס על מספר הדגימות לשנייה שמרכיבות את קובץ האודיו. בדרך כלל, התדירות הכי גבוהה שאפשר לשחזר בקובץ אודיו דיגיטלי שווה למחצית מתדירות הדגימה. לדוגמה, התדר הכי גבוה שאפשר לשחזר מקובץ אודיו של 44.1‎ kHz הוא בערך 22‎ kHz, שנמצא בקצה העליון של טווח תגובת התדרים של השמיעה של מאזין טיפוסי או מעבר לו.

תדירויות הדגימה בטלפוניה ובטלקומוניקציה הן בדרך כלל בטווח של 8 kHz עד 16 kHz. המדריך הזה מתמקד בפורמטים שספציפיים לתעשיית המדיה והבידור, שבדרך כלל גבוהים מ-16kHz. למידע נוסף על טלפוניה ואפליקציות סאונד אחרות, קראו את המאמר תמלול אודיו של טלפון באמצעות מודלים משופרים.

מומלץ להשתמש בקובצי אודיו עם תדירות דגימה של ‎16 kHz לפחות, כשמשתמשים ב-Cloud STT לתמלול. תדירויות הדגימה שנמצאות בקובצי אודיו הן בדרך כלל ‎16 kHz,‏ ‎32 kHz,‏ ‎44.1 kHz ו-‎48 kHz. מכיוון שטווח התדרים משפיע מאוד על הבהירות, במיוחד בתדרים הגבוהים יותר, קצב דגימה של פחות מ-16kHz יוביל לקובץ אודיו עם מעט מידע או ללא מידע מעל 8kHz. זה יכול למנוע מ-Cloud STT לתמלל נכון אודיו של דיבור. כדי להבין דיבור צריך מידע בטווח של 2kHz עד 4kHz, אבל גם להרמוניות (כפולות) של התדרים האלה בטווח הגבוה יותר יש חשיבות לשמירה על יכולת ההבנה של הדיבור. לכן, מומלץ להגדיר את תדירות הדגימה ל-16 kHz לפחות.

אפשר להמיר תדירות דגימה אחת לאחרת. עם זאת, אין טעם להגדיל את תדירות הדגימה של האודיו, כי טווח התדרים מוגבל על ידי תדירות הדגימה הנמוכה, ואי אפשר לשחזר אותו על ידי המרה לתדירות דגימה גבוהה יותר. כלומר, אם תדירות הדגימה תוגדל מ-8‎ kHz ל-44.1‎ kHz, טווח התדרים שניתן לשחזור יוגבל למחצית מתדירות הדגימה הנמוכה יותר, או בערך ל-4‎ kHz. במדריך הזה תאזינו לקובצי אודיו שהוקלטו בתדירויות דגימה ובעומקי סיביות שונים, כדי שתוכלו לשמוע את ההבדל בעצמכם.

עומק סיביות (טווח דינמי)

עומק הביטים של קובץ האודיו קובע את הטווח מהצלילים השקטים ביותר לצלילים החזקים ביותר, וגם את יחס האות לרעש של הקובץ. טווח דינמי משפיע פחות על איכות התמלול מאשר תגובת התדר, אבל עומקי ביט של 8 ביט ומטה עלולים לגרום לרעשי קוונטיזציה מוגזמים בטראק האודיו, ולכן קשה לבצע תמלול מדויק. (שגיאות קוונטיזציה הן שגיאות עיגול בין אות הקלט האנלוגי לבין המיפוי של ערך הפלט הדיגיטלי של האות הזה. השגיאות גורמות לעיוות שניתן לשמוע, שמשפיע ישירות על איכות הצליל). עומק הסיביות המומלץ של הקבצים לניתוח באמצעות Cloud STT הוא 16 סיביות או יותר. בדומה לתדירות הדגימה, אין יתרון להמרת עומק הסיביות מ-8 ל-16 ביט, כי טווח המידע הדינמי מוגבל לפורמט המקורי של 8 ביט.

אמצעי הקלטה

גם המדיום המקורי של ההקלטה יכול להשפיע על האיכות של קובץ האודיו. לדוגמה, יכול להיות שתוכן אודיו שהוקלט במקור על סרט מגנטי כולל שריקה ברקע שמוטמעת בקובץ. במקרים מסוימים, יכול להיות שתצטרכו לעבד מראש אודיו רועש כדי לקבל תוצאות טובות יותר בתהליך התמלול כשאתם משתמשים ב-Cloud STT. הטיפול בהקלטות רועשות ובהפרעות מרעשי רקע לא נכלל במדריך הזה. מידע נוסף זמין בקטע שיטות מומלצות במאמרי העזרה בנושא Cloud STT.

מבוא ל-FFMPEG

במדריך הזה נשתמש ב-FFMPEG כדי לעבוד עם קובצי אודיו. ערכת הכלים של FFMPEG מציעה מגוון רחב של פונקציות, כולל:

  • הפעלת קובץ אודיו או וידאו.
  • המרת קובצי אודיו לאחד מהקודקים המזוהים על ידי Cloud STT.
  • המרת קצב דגימת האודיו וקצב העברת הנתונים להגדרות אופטימליות לניתוח על ידי Cloud STT.
  • חילוץ של טראקים או זרמים ספציפיים של אודיו מקובץ של זרם תחבורה או מקובץ וידאו.
  • פיצול קבצים סטריאו לשני קבצים מונופוניים.
  • פיצול קובצי אודיו 5.1 לשישה קבצים מונופוניים.
  • הפעלת אקולייזר וסינון כדי לשפר את בהירות האודיו.

אפשר גם להשתמש בפונקציה ffprobe של FFMPEG כדי לחשוף מטא-נתונים שמשויכים לקובץ מדיה. המידע הזה חשוב כשרוצים לאבחן בעיות שקשורות לסוגי קבצים ולפורמטים של קבצים לצורך ניתוח של למידת מכונה.

רכיבי codec שמזוהים על ידי Cloud STT

למרות ש-Cloud STT מזהה מספר פורמטים של קובצי אודיו, יכול להיות שהוא לא יקרא או ינתח קודקים מסוימים בצורה תקינה. במדריך הזה מוסבר איך בודקים שהתוכן שלכם הוא באחד מפורמטי הקבצים הנתמכים.

במדריך, קוראים את פרטי המטא-נתונים כדי לחשוף ולתקן בעיות פוטנציאליות לפני שמשתמשים ב-Cloud STT. אותם כלים מאפשרים לכם להמיר את הקובץ לפורמט נתמך אם אתם מגלים חוסר תאימות.

‫Cloud STT מזהה את הקודקים הבאים:

  • ‫FLAC: ‏ Free Lossless Audio Codec
  • LINEAR16: פורמט לא דחוס של אפנון קוד דופק (PCM) שמשמש במאגרי WAV,‏ AIFF,‏ AU ו-RAW
  • ‫MULAW: קודק PCM שנועד לשימוש בטלקומוניקציה בארה"ב וביפן
  • ‫AMR: קודק עם קצב העברת נתונים מותאם שמיועד לדיבור
  • ‫AMR_WB: וריאציה של AMR עם פס רחב, עם רוחב פס כפול מזה של AMR
  • OGG_OPUS: קודק עם אובדן נתונים שנועד לאפליקציות עם זמן אחזור נמוך
  • ‫SPEEX_WITH_HEADER_BYTE: קודק שמיועד לאפליקציות Voice over IP (VOIP)

חשוב להבין שקודקים ופורמטים של קבצים הם לא אותו דבר. הסיומת של שם הקובץ לא בהכרח מציינת שאפשר לקרוא ב-Cloud STT את הקודק ששימש ליצירת הקובץ.

המדריך הזה מתמקד ב-FLAC וב-LINEAR16, כי הם נפוצים בסביבות של תהליכי עבודה עם מדיה. שני הפורמטים הם ללא אובדן מידע.

אם אתם משתמשים בקובצי WAV (שהם בפורמט PCM לינארי לא דחוס) עם Cloud STT, הקבצים צריכים להיות בעומק של 16 ביט לכל היותר ומקודדים בפורמט לא של נקודה צפה. סיומת שם הקובץ .wav לא מבטיחה ש-Cloud STT יוכל לקרוא את הקובץ. בקטע אופטימיזציה של קובצי אודיו לניתוח במדריך הזה מוסבר איך להמיר את הקובץ מנקודה צפה (floating point) לעומק סיביות של מספר שלם (עם סימן) כדי לתמלל את הקובץ ב-Cloud STT.

הפעלת הסביבה

לפני שמבצעים את המשימות במדריך הזה, צריך לאתחל את הסביבה על ידי התקנת FFMPEG, הגדרת כמה משתני סביבה והורדת קובצי אודיו. אתם משתמשים בקובצי מדיה שמאוחסנים גם במכונה של Cloud Shell וגם בקטגוריה של Cloud Storage. שימוש במקורות שונים מאפשר לכם לעבוד עם יכולות שונות של Cloud STT.

בקטע הזה תתקינו את FFMPEG ותגדירו משתני סביבה שמפנים למיקומי האחסון של הנתונים לדוגמה, באחסון של המכונה של Cloud Shell ובקטגוריה של Cloud Storage. קובצי המדיה זהים בשני המיקומים, ובחלק מהדוגמאות במדריך הזה יש גישה לקבצים גם מ-Cloud Shell וגם מהקטגוריה של Cloud Storage. אתם יכולים להתקין את FFMPEG במחשב המקומי שלכם ולהריץ את אותם תרגילים, כמו שמתואר בהמשך בקטע הרצת דוגמאות מהמדריך בטרמינל מקומי.

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

  2. ב-Cloud Shell, מתקינים את הגרסה הנוכחית של FFMPEG:

    sudo apt update
    sudo apt install ffmpeg
    
  3. מוודאים ש-FFMPEG מותקן:

    ffmpeg -version
    

    אם מוצג מספר גרסה, סימן שההתקנה הושלמה בהצלחה.

  4. יוצרים ספרייה לקבצי הפרויקט:

    mkdir project_files
    
  5. יוצרים ספרייה לקובצי הפלט שייווצרו בשלב מאוחר יותר:

    mkdir output
    
  6. מורידים את קובצי האודיו לדוגמה:

    gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* ~/project_files/
    
  7. יוצרים משתנה סביבתי לשם הקטגוריה של Cloud Storage:

    export GCS_BUCKET_PATH=gs://cloud-samples-data/speech/project_files
    
  8. יוצרים משתנה סביבה לנתיב הספרייה של מופע Cloud Shell שמצביע על קובצי האודיו לדוגמה שהורדו:

    export PROJECT_FILES=~/project_files
    

בדיקת מטא-נתונים בקובצי מדיה

כשמנתחים קובצי אודיו או וידאו באמצעות Cloud STT, צריך לדעת את פרטי המטא-נתונים של הקובץ. כך אפשר לזהות חוסר עקביות או פרמטרים לא תואמים שעלולים לגרום לבעיות.

בקטע הזה משתמשים בפקודה ffprobe ב-FFMPEG כדי לבדוק את המטא-נתונים מכמה קובצי מדיה ולהבין את המפרטים של קובץ מסוים.

  1. ב-Cloud Shell, מציגים את המטא-נתונים של הקובץ HumptyDumptySample4416.flac:

    ffprobe $PROJECT_FILES/HumptyDumptySample4416.flac
    

    הפלט שיתקבל:

    Input #0, flac, from 'project_files/HumptyDumptySample4416.flac':
      Duration: 00:00:26.28, start: 0.000000, bitrate: 283 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, mono, s16
    

    הפלט הזה מציין את המטא-נתונים הבאים לגבי הקובץ:

    • משך הזמן של קובץ האודיו הוא 26.28 שניות.
    • קצב העברת הנתונים הוא 283KB לשנייה.
    • פורמט הקודק הוא FLAC.
    • תדירות הדגימה היא 44.1kHz.
    • הקובץ הוא קובץ מונו חד-ערוצי.
    • עומק הביט הוא 16 ביט (מספר שלם עם סימן).
  2. הצגת המטא-נתונים של הקובץ HumptyDumptySampleStereo.flac:

    ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
    

    הפלט שיתקבל:

    Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac':
      Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    

    ההבדלים בין הקובץ הזה לקובץ הקודם הם שהקובץ הזה הוא קובץ סטריאו עם קצב העברת נתונים גבוה יותר (378KB לשנייה במקום 283KB לשנייה) כי הוא מכיל הפעלה של שני ערוצים במקום טראק מונו אחד. כל שאר הערכים זהים.

    כדאי לבדוק את מספר הערוצים בקובץ אודיו שרוצים לעבד באמצעות Cloud STT. בקובצי האודיו צריך להיות רק ערוץ אודיו אחד. כדי לתמלל כמה ערוצי אודיו באותו קובץ, מומלץ ליצור סקריפט של הפקודות כמו שמתואר בקטע אופטימיזציה של קובצי אודיו לצורך ניתוח בהמשך.

  3. הצגת המטא-נתונים של קובץ מיקס אודיו 5.1:

    ffprobe $PROJECT_FILES/Alice_51_sample_mix.aif
    

    הפלט שיתקבל:

    Duration: 00:00:58.27, bitrate: 4610 kb/s
        Stream #0:0: Audio: pcm_s16be, 48000 Hz, 5.1, s16, 4608 kb/s
    

    הקובץ הזה הוא בפורמט שונה מקובץ מונו או סטריאו, ולכן מוצג מידע נוסף. במקרה הזה, האודיו הוא בפורמט PCM ליניארי, והוא הוקלט בתדירות דגימה של 44.1 kHz ובקצב העברת נתונים של 16 ביט (מספר שלם עם סימן, little-endian).

    שימו לב לסימון 5.1. קצב הנתונים של 4,608 קילו-ביט לשנייה בקובץ הזה גבוה משמעותית מהקצב בשתי הדוגמאות הקודמות, כי קובץ האודיו מכיל 6 טראקים של אודיו.

    בהמשך המדריך הזה נראה איך הקובץ הזה גורם לשגיאות כשמנסים לתמלל אותו באמצעות Cloud STT. חשוב מכך, תלמדו איך לבצע אופטימיזציה של הקובץ כדי להשתמש בו עם Cloud STT בלי שגיאות.

אופטימיזציה של קובצי אודיו לניתוח

כמו שצוין קודם, כשמשתמשים ב-Cloud STT, קובצי האודיו צריכים להיות קובצי מונו עם ערוץ אחד, כדי להימנע משגיאות בתהליך התמלול. בטבלה הבאה מוצגים פורמטים נפוצים של אודיו ותהליך ההמרה של קבצים מונופוניים לצורך עיבוד.

פורמט האודיו הנוכחי תהליך ההמרה פורמט פלט האודיו
Mono לא צריך לחלץ את הקובץ ‫FLAC או LINEAR16
סטריאו פיצול ל-2 קבצים מונו או מיקס דאון לקובץ מונו ‫FLAC או LINEAR16
Multitrack (5.1) פיצול ל-6 קובצי מונו ‫FLAC או LINEAR16
אודיו או וידאו בכמה סטרימינגים פיצול לקובצי מונו נפרדים ‫FLAC או LINEAR16

כדי לעבד קבצים עם כמה טראקים של אודיו, צריך לחלץ טראקים מונופוניים מקובץ הסטריאו באמצעות FFMPEG או כלי עריכה אחרים של אודיו. אפשר גם להפוך את התהליך לאוטומטי כמו שמתואר בקטע תמלול אודיו עם כמה ערוצים בתיעוד של Cloud STT. במדריך הזה נבדוק את האפשרות להשתמש ב-FFMPEG כדי לחלץ טראקים מונופוניים בודדים מקובץ סטריאו.

כמו שמוצג בקטע הקודם, אתם יכולים להשתמש בפקודה ffprobe כדי לקבוע כמה ערוצי אודיו יש בקובץ, ואז להשתמש בפקודה ffmpeg כדי לחלץ את הקובץ או להמיר אותו לפורמט מונו, אם צריך.

תצוגה מקדימה של שגיאה שנובעת מפורמט לא תקין

כדי לראות איך פורמט שגוי משפיע על התמלול, אפשר להריץ את Cloud STT על קובץ לא בפורמט מונו.

  1. ב-Cloud Shell, מריצים את Cloud STT בקובץ HumptyDumptySampleStereo.flac:

    gcloud ml speech recognize $PROJECT_FILES/HumptyDumptySampleStereo.flac \
        --language-code='en-US'
    

    הפלט שיתקבל:

    ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid audio channel count
    

    למרות שפורמט הקודק, תדירות הדגימה ועומק הסיביות של הקובץ נכונים, התיאור של הסטריאו מציין שיש שני טראקים בקובץ האודיו. לכן, הפעלת Cloud STT גורמת לשגיאה Invalid audio channel count.

  2. מריצים את הפקודה ffprobe על הקובץ:

    ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
    

    הפלט שיתקבל:

    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    

    השגיאה הזו מעידה על כך שהשגיאה ב-Cloud STT נגרמת מניסיון לעבד קובץ סטריאו

במאמר תמלול אודיו עם כמה ערוצים שבמסמכי התיעוד של Cloud STT מוסבר איך לנהל קובצי סטריאו באמצעות סקריפטים.

פיצול קובץ סטריאו לכמה קובצי מונו בפורמט FLAC

דוגמה אחת לדרך שבה אפשר להימנע מהשגיאה של ריבוי טראקים היא לחלץ שני טראקים במונו מקובץ אודיו בסטריאו. הטראקים שמתקבלים הם בפורמט FLAC ונכתבים בספריית הפלט. כשמחלצים שני קובצי מונו מקובץ סטריאו, מומלץ לתת לקבצים שחולצו שמות שמציינים את מיקום הערוץ בקובץ המקורי. לדוגמה, בהליך הבא, מציינים את הערוץ השמאלי באמצעות הסיומת FL ואת הערוץ הימני באמצעות הסיומת FR.

אם דגימת האודיו לתמלול נמצאת בשני הערוצים, המערכת תשתמש רק בערוץ אחד לתמלול. עם זאת, אם דוברים שונים מוקלטים בערוצים שונים, מומלץ לתמלל את הערוצים בנפרד. ‫Cloud STT יכול לזהות כמה קולות בהקלטה אחת. עם זאת, בידוד של כל קול בערוצים נפרדים מוביל לרמות גבוהות יותר של ודאות בתמלול. (ערך המהימנות נקרא גם שיעור שגיאות במילים, או WER, בזיהוי דיבור). מידע נוסף על עבודה עם כמה קולות באותו הקלטה זמין במאמר הפרדה בין דוברים שונים בהקלטת אודיו במאמרי העזרה של Cloud STT.

  • ב-Cloud Shell, מפצלים את קובץ הסטריאו HumptyDumptySampleStereo.flac ל-2 קבצים מונו:

    ffmpeg -i $PROJECT_FILES/HumptyDumptySampleStereo.flac -filter_complex "[0:a]channelsplit=channel_layout=stereo[left][right]" -map "[left]" output/HumptyDumptySample_FL.flac -map "[right]" output/HumptyDumptySample_FR.flac
    

    הפלט שמתקבל הוא הבא, שבו מוצגים קובצי המונו HumptyDumptySample_FL.flac(הערוץ הקדמי השמאלי) וHumptyDumptySample_FR.flac (הערוץ הקדמי הימני).

    Output #0, flac, to 'HumptyDumptySample_FL.flac':
      Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac':
      Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    Stream mapping:
      Stream #0:0 (flac) -> channelsplit
      channelsplit:FL -> Stream #0:0 (flac)
      channelsplit:FR -> Stream #1:0 (flac)
    (...)
    Output #0, flac, to 'HumptyDumptySample_FL.flac':
    (...)
    Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s
    (...)
    Output #1, flac, to 'HumptyDumptySample_FR.flac':
    (...)
    Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s
    (...)
    size=918kB time=00:00:26.27 bitrate= 286.2kbits/s speed= 357x
    video:0kB audio:1820kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    

    הקובץ הזה עבר אופטימיזציה ל-Cloud STT.

פיצול קובץ אודיו 5.1 לכמה קבצים מונו

דוגמה נוספת לאופטימיזציה של קובצי אודיו היא פיצול של קובצי אודיו בפורמט 5.1 לקובצי FLAC מונו נפרדים. כשמתייחסים לערוצים במיקס רב-ערוצי, כמו מיקס 5.1, שמות הקבצים בדרך כלל שונים מאלה של קבצים סטריאו או מונו. הקובץ של הערוץ השמאלי מסומן בדרך כלל כ-FL עבור הצד השמאלי הקדמי, והקובץ של הערוץ הימני מסומן כ-FR עבור הצד הימני הקדמי. הערוצים הנותרים במיקס 5.1 נקראים כאן FC עבור מרכז קדמי, LFE עבור אפקטים בתדר נמוך, BL עבור אחורי שמאלי (נקרא גם סראונד שמאלי) ו-BR עבור אחורי ימני (נקרא גם סראונד ימני). אלה לא סימונים סטנדרטיים, אבל זו שיטה מקובלת לזיהוי המקור של קובץ קול.

בדרך כלל, בקובצי אודיו עם כמה ערוצים לסרטים ולטלוויזיה, הדיאלוג הראשי מועבר בערוץ המרכזי הקדמי. בדרך כלל זה הקובץ שצריך לבחור כשמשתמשים ב-Cloud STT, כי הוא בדרך כלל מכיל את רוב הדיאלוג במיקס.

בסביבת פוסט-פרודקשן, האלמנטים העיקריים של הדיאלוג, המוזיקה והאפקטים מחולקים לקבוצות שנקראות סטמס, כך שכל הדיאלוג של המיקס נשמר בנפרד מהמוזיקה והאפקטים עד לסיום המיקס הסופי. מכיוון שגזע הדיאלוג מורכב רק מדיאלוג, Cloud STT נותן תוצאות טובות יותר כשמתמללים את הגזעים במקום לנסות לשלוף את הערוץ המרכזי ממיקס סופי. הסיבה לכך היא שערוץ מרכזי שחולץ עשוי להיות מעורבב עם צלילים שאינם דיאלוג, ולכן קשה להבין את הדיאלוג.

  1. ב-Cloud Shell, מפצלים את הקובץ Alice_51_sample_mix.aif לקובצי FLAC, ומציינים את שמות קובצי הפלט לכל ערוץ:

    ffmpeg -i $PROJECT_FILES/Alice_51_sample_mix.aif -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/Alice_FL.flac -map "[FR]" output/Alice_FR.flac -map "[FC]" output/Alice_FC.flac -map "[LFE]" output/Alice_LFE.flac -map "[BL]" output/Alice_BL.flac -map "[BR]" output/Alice_BR.flac
    

    הפלט שיתקבל:

    Duration: 00:00:55.00, bitrate: 4235 kb/s
      Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 5.1, s16, 4233 kb/s
    Stream mapping:
      Stream #0:0 (pcm_s16le) -> channelsplit
      channelsplit:FL -> Stream #0:0 (flac)
      channelsplit:FR -> Stream #1:0 (flac)
      channelsplit:FC -> Stream #2:0 (flac)
      channelsplit:LFE -> Stream #3:0 (flac)
      channelsplit:BL -> Stream #4:0 (flac)
      channelsplit:BR -> Stream #5:0 (flac)
    Press [q] to stop, [?] for help
    Output #0, flac, to 'Alice_FL.flac':
    (...)
        Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s
    (...)
    Output #1, flac, to 'output/Alice_FR.flac':
    (...)
        Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s
    (...)
    Output #2, flac, to 'output/Alice_FC.flac':
    (...)
        Stream #2:0: Audio: flac, 44100 Hz, mono, s16, 128 kb/s
    (...)
    Output #3, flac, to 'output/Alice_LFE.flac':
    (...)
        Stream #3:0: Audio: flac, 44100 Hz, 1 channels (LFE), s16, 128 kb/s
    (...)
    Output #4, flac, to 'output/Alice_BL.flac':
    (...)
        Stream #4:0: Audio: flac, 44100 Hz, 1 channels (BL), s16, 128 kb/s
    (...)
    Output #5, flac, to 'output/Alice_BR.flac':
    (...)
        Stream #5:0: Audio: flac, 44100 Hz, 1 channels (BR), s16, 128 kb/s
    (...)
    
  2. כדי להאזין לקובץ הבא, לוחצים עליו. הקובץ הזה נמצא בקטגוריה של Cloud Storage, וכשלוחצים על השם שלו, הוא מופעל בכרטיסייה חדשה בדפדפן.

    Alice_mono_downmix.flac
    
  3. מאזינים לקובץ הערוץ FC (קובץ ערוץ מרכזי בלבד) שיצרתם. (הדיאלוג מתחיל אחרי כמה שניות של שקט).

    Alice_FC.flac
    

    אפשר לראות את ההבדל בבהירות לעומת הקובץ הקודם. הטראק הזה מבוסס רק על חלק הדיאלוג במיקס.

בדיקת האיכות של קובץ האודיו

לפני שממירים את קובצי המדיה באמצעות Cloud STT, מומלץ להאזין לקבצים כדי לבדוק אם יש אנומליות באיכות הצליל שעלולות למנוע מכלי ה-ML לספק תוצאות מדויקות. בקטע הזה, אתם יכולים להפעיל את הקבצים בדפדפן בלחיצה על שמות הקבצים. (מומלץ להשתמש באוזניות או ברמקולים עם טווח דינמי רחב).

האזנה לאודיו מקובץ וידאו

  1. לוחצים על הקובץ הבא כדי להפעיל אותו:

    HumptyDumptySample4416.flac
    

    הקובץ הזה הוא בתדר של 44.1‎ kHz ובעומק ביט של 16 ביט. שימו לב לאיכות הגבוהה, הברורה והלא מעוותת של הקובץ הזה, ולמובנות שלו. זהו מקרה מתאים לתמלול באמצעות Cloud STT.

  2. מפעילים את קובץ הווידאו לדוגמה בפורמט 5.1 כדי לשמוע מיקס סראונד עם תוכן שאינו דיאלוג בכל הערוצים, למעט הערוץ המרכזי:

    sample_51_mix_movie.mp4
    

    הקובץ מיועד להפעלה במערכת אודיו 5.1. אם אתם משתמשים רק באוזניות או במערכת עם שני ערוצים, יכול להיות שלא תשמעו את כל הערוצים במהלך ההפעלה. (כדי לשמוע את כל ששת הערוצים, צריך לפענח את ההפעלה במערכת 5.1 או ליצור מיקס דאון של סטריאו עם שני ערוצים).

    באופן אידיאלי, משתמשים בערוץ הדיאלוג בלבד ל-Cloud STT. קובץ הדוגמה מכיל אודיו שאינו דיאלוג בחמישה ערוצים ודיאלוג בערוץ אחד. בקטע אופטימיזציה של קובצי אודיו לניתוח בהמשך, נסביר איך לחלץ את ששת ערוצי האודיו המונופוניים הנפרדים שמקודדים בקובץ 5.1 כדי להאזין לכל טראק. כך אפשר לבודד את הערוץ שמכיל רק דיאלוג (בדרך כלל הערוץ המרכזי או הקדמי-מרכזי) מהערוצים שלא מכילים דיאלוג, כדי לשפר את היכולת של Cloud STT לתמלל את הקובץ.

בדיקת אותו קובץ בתדירויות דגימה שונות

בטבלה הבאה מפורטות כמה גרסאות של אותו קובץ אודיו, כל אחת עם עומק סיביות ותדירות דגימה שונים.

קובץ אודיו תדירות הדגימה/עומק הסיביות
HumptyDumptySample4416.flac ‫44.1 kHz/16-bit Linear PCM
HumptyDumptySample2216.flac ‫22 kHz/16-bit Linear PCM
HumptyDumptySample1616.flac ‫16 kHz/16-bit Linear PCM
HumptyDumptySample1116.flac ‫11 kHz/16-bit Linear PCM
HumptyDumptySample0808.flac ‫8 kHz/8-bit Linear PCM
HumptyDumptyUpSample4416.flac ‫44.1 kHz (upsampled)/16-bit Linear PCM
HumptyDumptySample4408.flac ‫44.1kHz‏/8-bit Linear PCM
HumptyDumptySample4408to16.flac ‫44.1 kHz/16-bit Linear PCM (המרת איכות)
  1. כדי להאזין לכל אחד מהקבצים בטבלה שלמעלה, לוחצים על שם הקובץ. (נגן האודיו ייפתח בכרטיסייה חדשה בדפדפן). שימו לב להבדל באיכות כשמפחיתים את תדירות הדגימה.

    הנאמנות למקור של קובצי 16 ביט פוחתת בתדירויות דגימה נמוכות יותר, ויחס האות לרעש פוחת באופן דרסטי בגרסאות של קובצי 8 ביט בגלל שגיאות קוונטיזציה. הקובץ האחרון בטבלה הוא קובץ מקורי של 8kHz 8-bit שנדגם מחדש ל-44.1kHz/16-bit. שימו לב: איכות האודיו זהה לזו של קובץ 8 kHz/8-bit.

  2. ב-Cloud Shell, בודקים את המטא-נתונים של הקובץ HumptyDumptySampleStereo.flac:

    ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flac
    

    הפלט שיתקבל:

    Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac':
        Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s
        Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
    

    הפלט יכלול את הפרטים הבאים:

    • משך הקובץ הוא 26 שניות ו-28 פריימים. המידע הזה שימושי לתרחישים מתקדמים, למשל אם רוצים לעבד קבצים באורך של יותר מדקה באמצעות הפקודה gcloud speech recognize-long-running.
    • קצב העברת הנתונים של הקובץ הוא 378Kbps.
    • מספר הזרמים בקובץ הוא 1. (הערך הזה שונה ממספר הערוצים).
    • תדירות הדגימה של הקובץ היא ‎44.1 kHz.
    • מספר ערוצי האודיו הוא 2 (סטריאו).
    • עומק הביט של הקובץ הוא 16 ביט.

    זרם תעבורה יכול להכיל מספר זרמים, כולל אודיו, וידאו ומטא-נתונים. לכל אחד מהם יש מאפיינים שונים, כמו מספר ערוצי האודיו בכל שידור, הקודק של שידורי הווידאו ומספר הפריימים לשנייה של שידורי הווידאו.

    שימו לב שהמטא-נתונים חושפים שמדובר בקובץ סטריאו. זה חשוב, כי מספר ערוצי האודיו המומלץ כברירת מחדל לניתוח באמצעות Cloud STT הוא ערוץ מונו אחד.

תמלול קבצים באמצעות Cloud STT

אחרי שחילצתם קבצים מונופוניים, אתם יכולים להשתמש ב-Cloud STT כדי לתמלל את טראקים האודיו. משתמשים בפקודה gcloud ml speech שמפעילה את Cloud STT API.

  • מתמללים את קובץ הדיאלוג הנקי Alice_FC.flac:

    gcloud ml speech recognize ~/output/Alice_FC.flac \
        --language-code='en-US' --format=text
    

    ממתינים כמה שניות עד שהתמלול יסתיים. הפלט שיתקבל:

    results[0].alternatives[0].confidence: 0.952115
    results[0].alternatives[0].transcript: the walrus and the carpenter were walking close at hand they whip like anything to see such quantities of sand if this were only cleared away they said it would be grand
    results[1].alternatives[0].confidence: 0.968585
    results[1].alternatives[0].transcript: " if 7 Maids with seven mops swept it for half a year do you suppose the walrus said that they could get it clear I doubt it said the Carpenter and shed a bitter tear"
    results[2].alternatives[0].confidence: 0.960146
    results[2].alternatives[0].transcript: " oysters come and walk with us the walrus did beseech a pleasant walk a pleasant talk along the Briny Beach we cannot do with more than four to give a hand to each the eldest oyster look at him but never a word he said the eldest oyster winked his eye and shook his heavy head"
    

תמלול של טראק עם מילים גסות

יכול להיות שיש לכם קובצי אודיו של אנשים שמדברים, שכוללים גם אלמנטים אחרים של סאונד שמעורבבים בשיחה. הם נקראים לעיתים קרובות טראקים 'מלוכלכים', בניגוד לטראקים 'נקיים' של דיאלוג בלבד, שלא משולבים בהם אלמנטים אחרים. למרות ש-Cloud STT יכול לזהות דיבור בסביבות רועשות, יכול להיות שהתוצאות יהיו פחות מדויקות מאשר עבור רצועות נקיות. יכול להיות שתצטרכו לבצע סינון ועיבוד אודיו נוספים כדי לשפר את הבהירות של הדיאלוג לפני שתנתחו את הקובץ באמצעות Cloud STT.

בקטע הזה מתמללים מיקס דאון מונו של קובץ האודיו 5.1 שניתחנו בדוגמה הקודמת.

  1. ב-Cloud Shell, מתמללים את הקובץ Alice_mono_downmix.flac:

    gcloud ml speech recognize $PROJECT_FILES/Alice_mono_downmix.flac \
        --language-code='en-US' --format=text
    

    הפלט שיתקבל:

    results[0].alternatives[0].confidence: 0.891331
    results[0].alternatives[0].transcript: the walrus and the carpenter Milwaukee Corsicana they reflect anything to see such quantity if this were only
    results[1].alternatives[0].confidence: 0.846227
    results[1].alternatives[0].transcript: " it's Sunday 7th March 23rd happy few supposed former said that they could get it clear I doubt it to the doctor and she said it did it to just come and walk with us"
    results[2].alternatives[0].confidence: 0.917319
    results[2].alternatives[0].transcript: " along the Briny Beach it cannot do with more than four to give a hand to each the eldest oyster look at him but he said it was poised to Rich's eye and shook his head"
    

    תוצאות הניתוח לא מדויקות בגלל הצלילים הנוספים שמסתירים את הדיאלוג. רמת הסמך של התמליל נמוכה מ-85%. כמו שאפשר לראות בפלט, הטקסט לא תואם לדיאלוג בהקלטה כמו שהוא אמור להיות.

תמלול של קובצי אודיו עם תדירות דגימה ועומק סיביות שונים

כדי להבין איך תדירות הדגימה ועומק הסיביות משפיעים על התמלול, בקטע הזה מתמללים את אותו קובץ אודיו שהוקלט בתדירויות דגימה ובעומקי סיביות שונים. כך אפשר לראות את רמת הביטחון של Cloud STT ואת הקשר שלה לאיכות הכוללת של האודיו.

  1. כדי להאזין לדוגמה ולשים לב להבדל באיכות, לוחצים על שמות הקבצים בטבלה הבאה. בכל פעם שלוחצים על שם של קובץ, קובץ האודיו מופעל בכרטיסייה חדשה בדפדפן.

    שם קובץ האודיו מפרט הקבצים
    Speech_11k8b.flac תדירות דגימה של 11025Hz, עומק של 8 ביט
    Speech_16k8b.flac תדירות דגימה של 16kHz, עומק של 8 ביט
    Speech_16k16b.flac תדירות דגימה של 16kHz, עומק של 16 ביט
    Speech_441k8b.flac תדירות דגימה של 44,100Hz, עומק של 8 ביט
    Speech_441k16b.flac תדירות דגימה של 44,100Hz, עומק של 16 סיביות
  2. ב-Cloud Shell, מתמללים את הקובץ Speech_11k8b.flac, שמייצג בדוגמה הזו את איכות האודיו הכי נמוכה:

    gcloud ml speech recognize $PROJECT_FILES/Speech_11k8b.flac \
        --language-code='en-US' --format=text
    

    הפלט שיתקבל:

    results[0].alternatives[0].confidence: 0.77032
    results[0].alternatives[0].transcript: number of Pentacle represent
    results[1].alternatives[0].confidence: 0.819939
    results[1].alternatives[0].transcript: " what people can get in trouble if we take a look at the X again"
    
  3. תתמלל את הקובץ Speech_441k16b.flac, שהוקלט באיכות גבוהה בהרבה:

    gcloud ml speech recognize $PROJECT_FILES/Speech_441k16b.flac \
        --language-code='en-US' --format=text
    

    הפלט שיתקבל:

    results[0].alternatives[0].confidence: 0.934018
    results[0].alternatives[0].transcript: that gives us the number of pixels per inch when magnified to a 40-foot screen size now we take that number and multiply it by the distance between our eyes the interocular distance of 2 and 1/2 inch number of 10 pixels in other words on a 40-foot screen 10 pixels of information represents 2 and 1/2 in anything farther apart than that and positive Parallax is going to start to force the eyes to rotate that word in order to use the image
    results[1].alternatives[0].confidence: 0.956892
    results[1].alternatives[0].transcript: " where people tend to get in trouble is by looking at these images on a small monitor now if we take a look at the same math using a smaller monitor in this case 60 in the screen size in the resolution to multiply It Again by the distance between our eyes we end up with eighty pixels of Divergence on a monitor which equals two and a half inches so on the monitor things might look fine but when magnified up to the larger screen in this case for defeat we've created a situation that's eight times what we can stand to look at its very painful and should be avoided"
    

    שימו לב להבדל ברמת הביטחון בפלט של שתי הדוגמאות. לקובץ הראשון (Speech_11k8b.flac), שהוקלט ב-11kHz עם עומק של 8 ביט, יש רמת מהימנות מתחת ל-78%. רמת הסמך של הקובץ השני היא בערך 94%.

  4. אפשר גם לתמלל את הקבצים האחרים שמופיעים בטבלה בשלב 1 כדי להשוות בין תדירות הדגימה של קובץ האודיו לבין דיוק עומק הביט.

בטבלה הבאה מוצג סיכום של הפלט של Cloud STT לכל אחד מהקבצים שמופיעים בטבלה בשלב 1 של התהליך הקודם. שימו לב להבדל בתוצאות של ערך המהימנות בכל סוג קובץ. (יכול להיות שתקבלו תוצאות שונות). התמלילים של קובצי האודיו עם קצב הדגימה וקצב העברת הנתונים הנמוכים יותר נוטים להניב תוצאות עם רמת סמך נמוכה יותר, בגלל איכות הצליל הנמוכה יותר.

שם קובץ האודיו מהימנות (חלק ראשון) ביטחון עצמי (חלק שני)
Speech_11k8b.flac 0.770318 0.81994
Speech_16k8b.flac 0.935356 0.959684
Speech_16k16b.flac 0.945423 0.964689
Speech_44.1k8b.flac 0.934017 0.956892
Speech_44.1k16b.flac 0.949069 0.961777

אופטימיזציה של קובצי וידאו לניתוח

בקטע הזה של ההדרכה מפורטים השלבים שנדרשים כדי לחלץ אודיו 5.1 מקובץ סרט.

  1. ב-Cloud Shell, מחלצים 6 ערוצי מונו מקובץ סרט בפורמט 5.1 וממירים את הקבצים הבודדים לפורמט FLAC:‏

    ffmpeg -i $PROJECT_FILES/sample_51_mix_movie.mp4 -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/sample_FL.flac -map "[FR]" output/sample_FR.flac -map "[FC]" output/sample_FC.flac -map "[LFE]" output/sample_LFE.flac -map "[BL]" output/sample_BL.flac -map "[BR]" output/sample_BR.flac
    

    הפקודה הזו מחלצת את הקבצים הבאים לספריית הפלט:

    sample_BL.flac
    sample_BR.flac
    sample_FC.flac
    sample_FL.flac
    sample_FR.flac
    sample_LFE.flac
    
  2. בודקים את המטא-נתונים של קובץ הדוגמה:

    ffprobe $PROJECT_FILES/Speech_48kFloat.wav
    

    הפלט שיתקבל:

    Duration: 00:00:05.12, bitrate: 1536 kb/s
    Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 48000 Hz, mono, flt, 1536 kb/s
    

    ערכי המטא-נתונים pcm_f32le ו-flt מציינים שלקובץ הזה יש קצב העברת נתונים בנקודה צפה. צריך להמיר קובץ WAV עם קצב העברת נתונים בנקודה צפה (floating-point) לפורמט של מספר שלם עם סימן (signed-integer).

  3. ממירים את קצב העברת הנתונים של הקובץ לפורמט של מספר שלם עם סימן:

    ffmpeg -i $PROJECT_FILES/Speech_48kFloat.wav -c:a pcm_s16le output/Speech_48k16bNonFloatingPoint.wav
    

    הפקודה הזו יוצרת קובץ WAV חדש שקצב העברת הנתונים שלו הוא בפורמט של מספר שלם עם סימן.

  4. בודקים את המטא-נתונים של הקובץ החדש שנוצר:

    ffprobe ~/output/Speech_48k16bNonFloatingPoint.wav
    

    הפלט שיתקבל:

    Duration: 00:00:05.12, bitrate: 768 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, s16, 768 kb/s
    

    המטא-נתונים מראים עכשיו שקצב העברת הנתונים בקובץ שהומר הוא בפורמט של מספר שלם עם סימן (little-endian), כפי שמצוין בסימונים pcm_s16le ו-s16.

הרצת דוגמאות מהמדריך בטרמינל מקומי

אתם יכולים להריץ את כל הדוגמאות שבמדריך הזה מטרמינל במחשב המקומי. הפעלת הדוגמאות באופן מקומי מספקת יכולת חשובה להפעלה ישירה של קובצי אודיו ווידאו באמצעות הפקודה ffplay (במקום להאזין להם בדפדפן).

  1. בטרמינל במחשב המקומי, מתקינים את הכלי FFMPEG:

    sudo apt update
    sudo apt install ffmpeg
    
  2. מורידים את הקבצים לדוגמה למחשב המקומי:

    gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* local_destination_path
    

    מחליפים את local_destination_path במיקום שבו רוצים לשמור את קובצי הדוגמה.

  3. מגדירים את משתנה הסביבה LOCAL_PATH למיקום במחשב שבו הורדתם את קובצי הדוגמה:

    export LOCAL_PATH=local_destination_path
    

    מחליפים את local_destination_path בנתיב מהשלב הקודם.

  4. בטרמינל, משתמשים בפקודה ffplay כדי להאזין לקובץ אודיו לדוגמה:

    • קובץ אודיו: ffplay $LOCAL_PATH/HumptyDumpty4416.flac
    • קובץ וידאו: ffplay $LOCAL_PATH/sample_51_mix_movie.mp4
    • הפעלה של קטגוריה של Cloud Storage: ffplay $GCS_BUCKET_PATH/HumptyDumpty4416.flac

    נסו להריץ בטרמינל המקומי את הדוגמאות שהשתמשתם בהן קודם במדריך הזה. כך תוכלו להבין טוב יותר איך להשתמש ב-Cloud STT בצורה הכי יעילה.

פתרון בעיות

שגיאות יכולות להיגרם מכמה סיבות, לכן כדאי לבדוק כמה שגיאות נפוצות וללמוד איך לתקן אותן. יכול להיות שתיתקלו בכמה שגיאות בקובץ אודיו מסוים שימנעו את השלמת תהליך התמלול.

האודיו ארוך מדי

הפקודה gcloud speech recognize יכולה לעבד קבצים באורך של עד דקה. לדוגמה, נסו את הדוגמה הבאה:

gcloud ml speech recognize $PROJECT_FILES/HumptyDumpty4416.flac \
    --language-code='en-US' --format=text

הפלט שיתקבל:

ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.

השגיאה נגרמת כשמנסים להשתמש בפקודה speech recognize כדי לעבד קובץ שאורכו יותר מדקה אחת.

לקבצים באורך של יותר מדקה ופחות מ-80 דקות, אפשר להשתמש בפקודה speech recognize-long-running. כדי לראות את משך הזמן של הקובץ, אפשר להשתמש בפקודה ffprobe, כמו בדוגמה הבאה:

ffprobe $PROJECT_FILES/HumptyDumpty4416.flac

הפלט אמור להיראות כך:

Duration: 00:04:07.91, start: 0.000000, bitrate: 280 kb/s
Stream #0:0: Audio: flac, 44100 Hz, mono, s16

שימו לב שאורך קובץ האודיו הוא כ-4 דקות ו-8 שניות.

קריאת קבצים גדולים מהמחשב המקומי

הפקודה speech recognize-long-running יכולה לעבד קבצים באורך של עד דקה אחת מהמחשב המקומי. כדי לראות איפה עלולה להתרחש שגיאה, נסו להשתמש בפקודה speech recognize-long-running ב-Cloud Shell לקובץ ארוך יותר:

gcloud ml speech recognize-long-running $PROJECT_FILES/HumptyDumpty4416.flac \
    --language-code='en-US' --format=text

הפלט שיתקבל:

ERROR: (gcloud.ml.speech.recognize-long-running) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.

השגיאה הזו לא נגרמת בגלל האורך של האודיו, אלא בגלל הגודל של הקובץ במחשב המקומי. כשמשתמשים בפקודה recognize-long-running, הקובץ צריך להיות בקטגוריה של Cloud Storage.

כדי לקרוא קבצים שאורכם יותר מדקה אחת, משתמשים ב-recognize-long-running כדי לקרוא קובץ מקטגוריה של Cloud Storage, כמו בפקודה הבאה:

gcloud ml speech recognize-long-running $GCS_BUCKET_PATH/HumptyDumpty4416.flac \
    --language-code='en-US' --format=text

התהליך הזה נמשך כמה דקות.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

מחיקת הפרויקט

  1. נכנסים לדף Manage resources במסוף Google Cloud .

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים