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 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. เปิดใช้ Speech-to-Text API
คุณต้องเปิดใช้ Speech-to-Text 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/
และเพิ่มแพ็กเกจ Google.Cloud.Speech.V1 NuGet ลงในโปรเจ็กต์
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
- เลือกโปรเจ็กต์ที่ต้องการปิด แล้วคลิก "ลบ" ที่ด้านบน ซึ่งจะเป็นการกำหนดเวลาให้ลบโปรเจ็กต์
ดูข้อมูลเพิ่มเติม
- Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/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 แบบทั่วไป