1. ภาพรวม
Text-to-Speech API ของ Google Cloud (เบต้า) ช่วยให้นักพัฒนาแอปสามารถใส่เสียงพูดสังเคราะห์ของมนุษย์ที่ฟังดูเป็นธรรมชาติเป็นเสียงที่เล่นได้ในแอปพลิเคชันของตน 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#
- วิธีแสดงรายการเสียงที่มี
- วิธีสังเคราะห์เสียงจากข้อความ
สิ่งที่คุณต้องมี
แบบสำรวจ
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์การใช้งาน C# เท่าใด
คุณจะให้คะแนนประสบการณ์การใช้บริการ Google Cloud Platform เท่าใด
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีค่าใช้จ่ายเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell


หากคุณเริ่มใช้ Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอระดับกลางที่อธิบายว่า Cloud Shell คืออะไร หากเห็นหน้าจอระดับกลาง ให้คลิกต่อไป

การจัดสรรและเชื่อมต่อกับ Cloud Shell จะใช้เวลาไม่นาน

เครื่องเสมือนนี้โหลดเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่จำเป็นไว้แล้ว โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานส่วนใหญ่หรือทั้งหมดในโค้ดแล็บนี้ได้ด้วยเบราว์เซอร์
เมื่อเชื่อมต่อกับ 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. เปิดใช้ 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/
และเพิ่มแพ็กเกจ Google.Cloud.TextToSpeech.V1 NuGet ลงในโปรเจ็กต์
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 โดยทำดังนี้

ไปที่ไฟล์ 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\"");
}
}
}
ใช้เวลาสัก 1-2 นาทีเพื่อศึกษาโค้ดและดูวิธีใช้โค้ดเพื่อสร้างไฟล์เสียงจากข้อความ*.*
กลับไปที่ Cloud Shell แล้วเรียกใช้แอปโดยทำดังนี้
dotnet run
คุณควรเห็นเอาต์พุตต่อไปนี้
Audio content written to file "output.mp3"
คุณสามารถดาวน์โหลดไฟล์ MP3 และเล่นในเครื่องของคุณได้ภายในเครื่องมือแก้ไขโค้ด

สรุป
ในขั้นตอนนี้ คุณสามารถใช้ Text-to-Speech API เพื่อแปลงสตริงเป็นไฟล์เสียง MP3 ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างไฟล์เสียงพูด
7. ยินดีด้วย
คุณได้เรียนรู้วิธีใช้ Text-to-Speech API โดยใช้ C# เพื่อถอดเสียงประเภทต่างๆ ในไฟล์เสียงแล้ว
ล้างข้อมูล
เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud Platform สำหรับทรัพยากรที่ใช้ในการเริ่มต้นอย่างรวดเร็วนี้ ควรทำดังนี้
- ไปที่คอนโซล Cloud Platform
- เลือกโปรเจ็กต์ที่ต้องการปิด แล้วคลิก "ลบ" ที่ด้านบน ซึ่งจะเป็นการกำหนดเวลาให้ลบโปรเจ็กต์
ดูข้อมูลเพิ่มเติม
- Google Cloud Text-to-Speech API: https://cloud.google.com/text-to-speech/docs
- C#/.NET ใน Google Cloud Platform: https://cloud.google.com/dotnet/
- ไคลเอ็นต์ .NET ของ Google Cloud: https://googlecloudplatform.github.io/google-cloud-dotnet/
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 2.0 แบบทั่วไป