תמלול של דיבור לטקסט באמצעות Cloud Speech-to-Text API

באמצעות Cloud Speech API אפשר לבצע תמלול של קובצי אודיו ליותר מ-80 שפות.

בשיעור ה-Lab הזה נקליט קובץ אודיו ונשלח אותו אל Cloud Speech API לצורך תמלול.

מה תלמדו

  • יצירת בקשה ל-Speech API והתקשרות ל-API באמצעות curl
  • שליחת קריאה ל-Speech API עם קובצי אודיו בשפות שונות

מה נדרש

  • פרויקט ב-Google Cloud Platform
  • דפדפן, כמו Chrome או Firefox

איך תשתמשו במדריך הזה?

רק קוראים את המאמר קוראים את המאמר ומבצעים את התרגילים

איזה דירוג מגיע לדעתך לחוויית השימוש שלך ב-Google Cloud Platform?

מתחילים ביניים מומחים

הגדרת סביבה בקצב אישי

אם עדיין אין לכם חשבון Google (Gmail או Google Apps), אתם צריכים ליצור חשבון. נכנסים ל-Google Cloud Platform Console‏ (console.cloud.google.com) ויוצרים פרויקט חדש:

Screenshot from 2016-02-10 12:45:26.png

חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שמופיע למעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה, נתייחס אליו כאל PROJECT_ID.

בשלב הבא, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.

העלות של התרגיל הזה לא אמורה להיות גבוהה, אבל היא יכולה להיות גבוהה יותר אם תחליטו להשתמש ביותר משאבים או אם תשאירו אותם פועלים (ראו את הקטע 'ניקוי' בסוף המסמך הזה).

משתמשים חדשים ב-Google Cloud Platform זכאים לתקופת ניסיון בחינם בשווי 300$.

לוחצים על סמל התפריט בפינה השמאלית העליונה.

בתפריט הנפתח בוחרים בAPIs and Services .

לוחצים על Enable APIs and Services.

לאחר מכן, מחפשים את האפשרות 'דיבור' בתיבת החיפוש. לוחצים על Google Cloud Speech API:

לוחצים על Enable כדי להפעיל את Cloud Speech API:

מחכים כמה שניות עד שהאפשרות תופעל. אחרי ההפעלה, תראו את ההודעה הבאה:

‫Google Cloud Shell היא סביבת שורת פקודה שפועלת בענן. המכונה הווירטואלית הזו מבוססת על Debian, וטעונים בה כל הכלים הדרושים למפתחים (gcloud,‏ bq,‏ git וכלים אחרים), ועם ספריית בית בעלת אחסון מתמיד בגודל 5GB. נשתמש ב-Cloud Shell כדי ליצור את הבקשה שלנו ל-Speech API.

כדי להתחיל להשתמש ב-Cloud Shell, לוחצים על הסמל 'הפעלת Google Cloud Shell' Screen Shot 2015-06-08 at 5.30.32 PM.png בפינה השמאלית העליונה של סרגל הכותרת.

בחלק התחתון של המסוף ייפתח סשן של Cloud Shell בתוך מסגרת חדשה ותופיע הודעה של שורת הפקודה. ממתינים עד להופעת ההנחיה user@project:~$

מכיוון שנשתמש ב-curl כדי לשלוח בקשה ל-Speech API, נצטרך ליצור מפתח API כדי להעביר אותו בכתובת ה-URL של הבקשה. כדי ליצור מפתח API, עוברים אל הקטע APIs & Services > Credentials בלוח הבקרה של הפרויקט:

לאחר מכן לוחצים על יצירת אמצעי אימות:

בתפריט הנפתח, בוחרים באפשרות API key:

לאחר מכן, מעתיקים את המפתח שנוצר ולוחצים על Close (לא מגבילים את המפתח).

אחרי שיצרתם מפתח API, כדאי לשמור אותו במשתנה סביבה כדי שלא תצטרכו להוסיף את הערך של מפתח ה-API בכל בקשה. אפשר לעשות את זה ב-Cloud Shell. חשוב להחליף את <your_api_key> במפתח שהעתקתם.

export API_KEY=<YOUR_API_KEY>

אפשר ליצור את הבקשה ל-Speech API בקובץ request.json. כדי ליצור ולערוך את הקובץ הזה, אפשר להשתמש באחד מעורכי שורת הפקודה המועדפים (nano, ‏ vim, ‏ emacs) או בעורך האינטרנטי המובנה ב-Cloud Shell:

יוצרים את הקובץ בספריית הבית כדי שיהיה קל להתייחס אליו, ומוסיפים לקובץ request.json את הנתונים הבאים :

request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

גוף הבקשה כולל את האובייקטים config ו-audio. ב-config, אנחנו מציינים ל-Speech API איך לעבד את הבקשה. הפרמטר encoding מציין ל-API את סוג קידוד האודיו שבו אתם משתמשים בקובץ האודיו שאתם שולחים ל-API. ‫FLAC הוא סוג הקידוד של קובצי ‎ .raw (פרטים נוספים על סוג הקידוד זמינים בתיעוד). יש עוד פרמטרים שאפשר להוסיף לאובייקט config, אבל encoding הוא הפרמטר הנדרש היחיד. אם לא תציינו את השפה בבקשה, ברירת המחדל של languageCode תהיה אנגלית.

באובייקט audio, אפשר להעביר ל-API את ה-URI של קובץ האודיו שלנו ב-Cloud Storage או את האודיו בקידוד base64 כמחרוזת. בדוגמה הזו השתמשנו בכתובות URL של Cloud Storage. בשלב הבא נפעיל את Speech API.

עכשיו אפשר להעביר את גוף הבקשה, יחד עם משתנה הסביבה של מפתח ה-API ששמרתם קודם, אל Speech API באמצעות הפקודה curl הבאה (הכול בשורת פקודה אחת):

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1/speech:recognize?key=${API_KEY}"

התגובה שמתקבלת מהפקודה curl אמורה להיראות כך:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

הערך transcript יחזיר את התמלול של קובץ האודיו באמצעות Speech API, והערך transcript מציין את רמת הביטחון של ה-API בתמלול המדויק של האודיו.confidence

אפשר לראות שקראנו לשיטה recognize בבקשה שלמעלה. ‫Speech API תומך בתמלול סינכרוני ואסינכרוני של דיבור לטקסט. בדוגמה הזו שלחנו קובץ אודיו מלא, אבל אפשר גם להשתמש בשיטה longrunningrecognize כדי לבצע תמלול של דיבור בזמן אמת, בזמן שהמשתמש עדיין מדבר.

האם אתה דובר כמה שפות? ‫Speech API תומך בתמלול של דיבור לטקסט ביותר מ-100 שפות. אפשר לשנות את הפרמטר languageCode בrequest.json. כאן אפשר למצוא רשימה של השפות הנתמכות.

ננסה קובץ אודיו בצרפתית (אפשר להאזין לו כאן כדי לקבל הצצה). משנים את הקובץ request.json כך שייראה כמו הקובץ הבא:

request.json

 {
  "config": {
      "encoding":"FLAC",
      "languageCode": "fr"
  },
  "audio": {
      "uri":"gs://speech-language-samples/fr-sample.flac"
  }
}

אמורה להתקבל התגובה הבאה:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "maître corbeau sur un arbre perché tenait en son bec un fromage",
          "confidence": 0.9710122
        }
      ]
    }
  ]
}

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

למדתם איך לבצע תמלול של דיבור לטקסט באמצעות Speech API. בדוגמה הזו העברתם ל-API את ה-URI של קובץ האודיו ב-Google Cloud Storage. אפשר גם להעביר מחרוזת בקידוד base64 של תוכן האודיו.

מה למדנו

  • העברת URI של Google Cloud Storage של קובץ אודיו אל Speech API
  • יצירת בקשה ל-Speech API והתקשרות ל-API באמצעות curl
  • שליחת קריאה ל-Speech API עם קובצי אודיו בשפות שונות

השלבים הבאים