1. ภาพรวม
Google Cloud Speech-to-Text API ช่วยให้นักพัฒนาซอฟต์แวร์แปลงเสียงเป็นข้อความใน 120 ภาษาและตัวแปร โดยใช้โมเดลโครงข่ายระบบประสาทเทียมอันทรงพลังใน API ที่ใช้งานง่าย
ใน Codelab นี้ คุณจะมุ่งเน้นที่การใช้ 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 ของระบบคลาวด์ การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่นอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud ใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
เปิดใช้งาน Cloud Shell
- คลิกเปิดใช้งาน Cloud Shell จาก Cloud Console
หากเริ่มต้นใช้งาน Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอตรงกลางที่อธิบายว่านี่คืออะไร หากระบบแสดงหน้าจอตรงกลาง ให้คลิกต่อไป
การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที
เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่จำเป็น โดยมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานใน 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. เปิดใช้ API การแปลงเสียงพูดเป็นข้อความ
คุณต้องเปิดใช้ API ก่อนจึงจะเริ่มใช้ Speech-to-Text API ได้ คุณเปิดใช้ API ได้โดยใช้คำสั่งต่อไปนี้ใน Cloud Shell
gcloud services enable speech.googleapis.com
4. ติดตั้งไลบรารีของไคลเอ็นต์ Google Cloud Speech-to-Text API สำหรับ C#
ขั้นแรก ให้สร้างแอปพลิเคชันคอนโซล C# แบบง่ายที่คุณจะใช้เพื่อเรียกใช้ตัวอย่าง API การแปลงเสียงพูดเป็นข้อความ ดังนี้
dotnet new console -n SpeechToTextApiDemo
คุณควรเห็นการสร้างแอปพลิเคชันและการแก้ไขทรัพยากร Dependency แล้ว
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);
}
}
}
}
}
โปรดใช้เวลาสัก 1-2 นาทีศึกษาโค้ดและดูว่ามีการใช้โค้ดเพื่อถอดเสียงไฟล์เสียง**
พารามิเตอร์ 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}");
}
}
}
}
}
}
ใช้เวลาสัก 1-2 นาทีศึกษาโค้ดและดูว่ามีการใช้โค้ดเพื่อถอดเสียงไฟล์เสียงที่มีการประทับเวลาของคำ** พารามิเตอร์ 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);
}
}
}
}
}
ใช้เวลา 1-2 นาทีศึกษาโค้ดและดูว่าระบบใช้ในการถอดเสียงไฟล์เสียงอย่างไร* พารามิเตอร์ LanguageCode
จะบอก API ว่าการบันทึกเสียงดังกล่าวเป็นภาษาอะไร
กลับไปที่ Cloud Shell แล้วเรียกใช้แอปโดยทำดังนี้
dotnet run
คุณควรจะเห็นผลลัพธ์ต่อไปนี้
maître corbeau sur un arbre perché tenait en son bec un fromage
นี่คือประโยคจากนิทานเด็กฝรั่งเศสยอดนิยม
สรุป
ในขั้นตอนนี้ คุณสามารถถอดเสียงไฟล์เสียงเป็นภาษาฝรั่งเศสและพิมพ์ผลลัพธ์ออกมา อ่านเพิ่มเติมเกี่ยวกับภาษาที่รองรับ
8. ยินดีด้วย
คุณได้เรียนรู้วิธีใช้ 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/
- ไคลเอ็นต์ Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0