שימוש ב-Speech-to-Text API עם C#

1. סקירה כללית

Google Cloud Speech-to-Text API מאפשר למפתחים להמיר אודיו לטקסט ב-120 שפות וריאנטים, באמצעות מודלים רבי עוצמה של רשתות נוירונים בממשק API קל לשימוש.

ב-Codelab הזה אתם תתמקדו בשימוש ב-Speech-to-Text API עם C#. נסביר לכם איך לשלוח קובץ אודיו באנגלית ובשפות אחרות ל-Cloud Speech-to-Text API לתמלול.

מה תלמדו

  • איך משתמשים ב-Cloud Shell
  • איך מפעילים את Speech-to-Text API
  • איך לאמת בקשות API
  • איך מתקינים את ספריית הלקוח של Google Cloud ל-C#
  • איך מתמללים קובצי אודיו באנגלית
  • איך לתמלל קובצי אודיו עם חותמות זמן של מילים
  • איך מתמללים קובצי אודיו בשפות שונות

מה צריך להכין

  • פרויקט ב-Google Cloud Platform
  • דפדפן, למשל Chrome או Firefox
  • היכרות עם C#

סקר

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

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

איזה דירוג מגיע לחוויה שלך עם C#?

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

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

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

2. הגדרה ודרישות

הגדרת סביבה בקצב עצמאי

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
  • Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט שלכם (בדרך כלל מזוהה כ-PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניכם, אתם יכולים ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלך ולראות אם הוא זמין. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט.
  • לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית משאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

הפעלת Cloud Shell

אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.

הפעלת Cloud Shell

  1. במסוף Cloud, לוחצים על Activate Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

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

d95252b003979716.png

ההקצאה וההתחברות ל-Cloud Shell נמשכת כמה דקות.

7833d5e1c5d18f54.png

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

אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שהפרויקט מאומת ושהפרויקט מוגדר לפי מזהה הפרויקט שלכם.

  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהאימות בוצע:
gcloud auth list

פלט הפקודה

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה ב-gcloud יודעת על הפרויקט שלכם:
gcloud config list project

פלט הפקודה

[core]
project = <PROJECT_ID>

אם הוא לא משויך, תוכלו להגדיר אותו באמצעות הפקודה הבאה:

gcloud config set project <PROJECT_ID>

פלט הפקודה

Updated property [core/project].

3. הפעלת Speech-to-Text API

כדי להתחיל להשתמש ב-Speech-to-Text API, צריך להפעיל את ה-API. כדי להפעיל את ה-API תוכלו להשתמש בפקודה הבאה ב-Cloud Shell:

gcloud services enable speech.googleapis.com

4. התקנה של ספריית הלקוח של Google Cloud Speech-to-Text API עבור C#

קודם כול, יוצרים אפליקציה פשוטה במסוף C# ומשתמשים בה כדי להריץ דוגמאות של Speech-to-Text API:

dotnet new console -n SpeechToTextApiDemo

אתם אמורים לראות את האפליקציה שנוצרה ואת יחסי התלות:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

בשלב הבא, עוברים לתיקייה SpeechToTextApiDemo:

cd SpeechToTextApiDemo/

ומוסיפים את חבילת NuGet Google.Cloud.Speech.V1 לפרויקט:

dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.

עכשיו אפשר להשתמש ב-Speech-to-Text API!

5. תמלול קובצי אודיו

בקטע הזה, תתמלל קובץ אודיו מוקלט מראש באנגלית. קובץ האודיו זמין ב-Google Cloud Storage.

כדי לתמלל קובץ אודיו, פותחים את עורך הקוד מהצד השמאלי העליון של Cloud Shell:

fd3fc1303e63572.png

עוברים לקובץ Program.cs שבתוך התיקייה SpeechToTextApiDemo ומחליפים את הקוד כך:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");         
            
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

כדאי להקדיש דקה או שתיים כדי ללמוד את הקוד ולראות איך הוא משמש לתמלול קובץ אודיו*.

הפרמטר Encoding מציין ל-API באיזה סוג של קידוד אודיו אתם משתמשים לקובץ האודיו. Flac הוא סוג הקידוד לקובצי RAW (פרטים נוספים זמינים במסמך).

באובייקט RecognitionAudio, אפשר להעביר את ה-API – ה-URI של קובץ האודיו שלנו ב-Cloud Storage או נתיב הקובץ המקומי של קובץ האודיו. כאן אנחנו משתמשים ב-URI של Cloud Storage.

בחזרה ב-Cloud Shell, מריצים את האפליקציה:

dotnet run

הפלט הבא אמור להתקבל:

how old is the Brooklyn Bridge

סיכום

בשלב הזה הצלחת לתמלל קובץ אודיו באנגלית ולהדפיס את התוצאה. למידע נוסף על תמלול

6. תמלול עם חותמות זמן של מילים

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

כדי לתמלל קובץ אודיו עם הפרשי זמן, צריך לעבור לקובץ Program.cs בתיקייה SpeechToTextApiDemo ולהחליף את הקוד כך:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates,
                EnableWordTimeOffsets = true
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
     
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine($"Transcript: { alternative.Transcript}");
                    Console.WriteLine("Word details:");
                    Console.WriteLine($" Word count:{alternative.Words.Count}");
                    foreach (var item in alternative.Words)
                    {
                        Console.WriteLine($"  {item.Word}");
                        Console.WriteLine($"    WordStartTime: {item.StartTime}");
                        Console.WriteLine($"    WordEndTime: {item.EndTime}");
                    }
                }
            }
        }
    }
}

כדאי להקדיש דקה או שתיים כדי ללמוד את הקוד ולראות איך הוא משמש לתמלול קובץ אודיו עם חותמות זמן של מילים*.* הפרמטר EnableWordTimeOffsets מורה ל-API להפעיל הפרשי זמן (פרטים נוספים זמינים במסמך).

בחזרה ב-Cloud Shell, מריצים את האפליקציה:

dotnet run

הפלט הבא אמור להתקבל:

dotnet run

Transcript: how old is the Brooklyn Bridge
Word details:
 Word count:6
  how
    WordStartTime: "0s"
    WordEndTime: "0.300s"
  old
    WordStartTime: "0.300s"
    WordEndTime: "0.600s"
  is
    WordStartTime: "0.600s"
    WordEndTime: "0.800s"
  the
    WordStartTime: "0.800s"
    WordEndTime: "0.900s"
  Brooklyn
    WordStartTime: "0.900s"
    WordEndTime: "1.100s"
  Bridge
    WordStartTime: "1.100s"
    WordEndTime: "1.500s"

סיכום

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

7. תמלול שפות שונות

Speech-to-Text API תומך בתמלול ביותר מ-100 שפות! כאן אפשר למצוא רשימה של שפות נתמכות.

בקטע הזה, תתמללו קובץ אודיו מוקלט מראש בצרפתית. קובץ האודיו זמין ב-Google Cloud Storage.

כדי לתמלל את קובץ האודיו בצרפתית, צריך לעבור לקובץ Program.cs שבתיקייה SpeechToTextApiDemo ולהחליף את הקוד הבא:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                LanguageCode = LanguageCodes.French.France
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");

            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

כדאי להקדיש דקה או שתיים כדי ללמוד את הקוד ולראות איך הוא משמש לתמלול קובץ אודיו*.* הפרמטר LanguageCode מציין ל-API באיזו שפה הקלטת האודיו.

בחזרה ב-Cloud Shell, מריצים את האפליקציה:

dotnet run

הפלט הבא אמור להתקבל:

maître corbeau sur un arbre perché tenait en son bec un fromage

זה משפט מתוך סיפור ילדים פופולרי בצרפת.

סיכום

בשלב הזה הצלחת לתמלל קובץ אודיו בצרפתית ולהדפיס את התוצאה. מידע נוסף על שפות נתמכות

8. מעולה!

למדת איך להשתמש ב-Speech-to-Text API באמצעות C# כדי לבצע סוגים שונים של תמליל בקובצי אודיו.

הסרת המשאבים

כדי להימנע מצבירת חיובים בחשבון Google Cloud Platform על המשאבים שבהם השתמשתם במדריך למתחילים הזה:

  • עוברים אל Cloud Platform Console.
  • בוחרים את הפרויקט שרוצים להשבית ולוחצים על Delete (מחיקה). למעלה: מתזמנת את מחיקת הפרויקט.

מידע נוסף

רישיון

היצירה הזו בשימוש ברישיון Creative Commons Attribution 2.0 גנרי.