שימוש ב-API של המרת טקסט לדיבור (TTS) באמצעות C#

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

Google Cloud Text-to-Speech API (בטא) מאפשר למפתחים לכלול באפליקציות שלהם אודיו שניתן להפעלה של דיבור אנושי סינתטי שנשמע טבעי. ‫Text-to-Speech API ממיר טקסט או קלט של Speech Synthesis Markup Language‏ (SSML) לנתוני אודיו כמו MP3 או LINEAR16 (הקידוד שמשמש בקובצי WAV).

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

מה תלמדו

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

מה תצטרכו

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

סקר

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

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

איך היית מדרג את חוויית השימוש שלך ב-C#?

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

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

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

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

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

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

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

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

מפעילים את Cloud Shell

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

הפעלת Cloud Shell

  1. ב-Cloud Console, לוחצים על 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. הפעלת Text-to-Speech API

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

gcloud services enable texttospeech.googleapis.com

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

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

dotnet new console -n TextToSpeechApiDemo

אמורה להופיע האפליקציה שנוצרה והתלות שנפתרה:

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

לאחר מכן, עוברים לתיקייה TextToSpeechApiDemo:

cd TextToSpeechApiDemo/

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

dotnet add package Google.Cloud.TextToSpeech.V1
info : Adding PackageReference for package 'Google.Cloud.TextToSpeech.V1' into project '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.
log  : Restoring packages for /home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.TextToSpeech.V1' version '1.0.0-beta01' added to file '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.

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

5. רשימת הקולות הזמינים

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

קודם פותחים את עורך הקוד בפינה השמאלית העליונה של Cloud Shell:

fd3fc1303e63572.png

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

using Google.Cloud.TextToSpeech.V1;
using System;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();
            var response = client.ListVoices("en");
            foreach (var voice in response.Voices)
            {
                Console.WriteLine($"{voice.Name} ({voice.SsmlGender}); Language codes: {string.Join(", ", voice.LanguageCodes)}");
            }
        }
    }
}

כדאי להקדיש דקה או שתיים ללימוד הקוד*.* חוזרים ל-Cloud Shell ומריצים את האפליקציה:

dotnet run

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

en-US-Wavenet-D (Male); Language codes: en-US
en-AU-Wavenet-A (Female); Language codes: en-AU
en-AU-Wavenet-B (Male); Language codes: en-AU
en-AU-Wavenet-C (Female); Language codes: en-AU
en-AU-Wavenet-D (Male); Language codes: en-AU
en-GB-Wavenet-A (Female); Language codes: en-GB
en-GB-Wavenet-B (Male); Language codes: en-GB
en-GB-Wavenet-C (Female); Language codes: en-GB
...
en-GB-Standard-A (Female); Language codes: en-GB
en-GB-Standard-B (Male); Language codes: en-GB
en-AU-Standard-D (Male); Language codes: en-AU

סיכום

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

6. סינתוז אודיו מטקסט

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

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

using Google.Cloud.TextToSpeech.V1;
using System;
using System.IO;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();

            // The input to be synthesized, can be provided as text or SSML.
            var input = new SynthesisInput
            {
                Text = "This is a demonstration of the Google Cloud Text-to-Speech API"
            };

            // Build the voice request.
            var voiceSelection = new VoiceSelectionParams
            {
                LanguageCode = "en-US",
                SsmlGender = SsmlVoiceGender.Female
            };

            // Specify the type of audio file.
            var audioConfig = new AudioConfig
            {
                AudioEncoding = AudioEncoding.Mp3
            };

            // Perform the text-to-speech request.
            var response = client.SynthesizeSpeech(input, voiceSelection, audioConfig);
            
            // Write the response to the output file.
            using (var output = File.Create("output.mp3"))
            {
                response.AudioContent.WriteTo(output);
            }
            Console.WriteLine("Audio content written to file \"output.mp3\"");
        }
    }
}

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

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

dotnet run

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

Audio content written to file "output.mp3"

בעורך הקוד, אפשר להוריד את קובץ ה-MP3 ולהפעיל אותו באופן מקומי במחשב.

a4b9578505422dad.png

סיכום

בשלב הזה, השתמשתם ב-Text-to-Speech API כדי להמיר מחרוזת לקובץ אודיו מסוג MP3. מידע נוסף על יצירת קובצי אודיו עם קול

7. מעולה!

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

הסרת המשאבים

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

  • עוברים אל Cloud Platform Console.
  • בוחרים את הפרויקט שרוצים לסגור ולוחצים על 'מחיקה' בחלק העליון. הפעולה הזו מתזמנת את הפרויקט למחיקה.

מידע נוסף

רישיון

העבודה הזו בשימוש במסגרת רישיון Creative Commons שמותנה בייחוס כללי מגרסה 2.0.