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#
- איך מתמללים קובצי אודיו באנגלית
- איך מתמללים קובצי אודיו עם חותמות זמן של מילים
- איך מתמללים קובצי אודיו בשפות שונות
מה תצטרכו
סקר
איך תשתמשו במדריך הזה?
איך היית מדרג את חוויית השימוש שלך ב-C#?
איזה דירוג מגיע לדעתך לחוויית השימוש שלך בשירותים של Google Cloud Platform?
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שהוא מוגדר). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-
PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא תישאר לאורך הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
הפעלת Cloud Shell
- ב-Cloud Console, לוחצים על Activate Cloud Shell
.

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

הקצאת המשאבים והחיבור ל-Cloud Shell נמשכים רק כמה רגעים.

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן.
אחרי שמתחברים ל-Cloud Shell, אמור להופיע אימות ושהפרויקט מוגדר לפי מזהה הפרויקט.
- מריצים את הפקודה הבאה ב-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`
- מריצים את הפקודה הבאה ב-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:

עוברים לקובץ 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. תמלול עם חותמות זמן של מילים
התכונה 'דיבור לטקסט' יכולה לזהות את ההפרש בזמן (חותמת זמן) של האודיו המתומלל. ההיסטים של הזמן מראים את ההתחלה והסוף של כל מילה מדוברת באודיו שסופק. ערך ההיסט של הזמן מייצג את משך הזמן שחלף מתחילת האודיו, במרווחים של 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.
- בוחרים את הפרויקט שרוצים לסגור ולוחצים על 'מחיקה' בחלק העליון. הפעולה הזו מתזמנת את הפרויקט למחיקה.
מידע נוסף
- Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/docs
- C#/.NET ב-Google Cloud Platform: https://cloud.google.com/dotnet/
- לקוח Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
רישיון
עבודה זו מורשית תחת רישיון Creative Commons שמותנה בייחוס 2.0 כללי.