1. 總覽
Google Cloud Speech-to-Text API 讓開發人員透過簡單易用的 API,運用強大的類神經網路模型,將音訊轉換成 120 種語言和方言的文字。
在本程式碼研究室中,您將專注於搭配 C# 使用 Speech-to-Text API。您會瞭解如何將英文和其他語言的音訊檔案傳送至 Cloud Speech-to-Text API 進行語音轉錄。
課程內容
- 如何使用 Cloud Shell
- 如何啟用 Speech-to-Text API
- 如何驗證 API 要求
- 如何安裝 C# 適用的 Google Cloud 用戶端程式庫
- 如何轉錄英文音訊檔案
- 如何轉錄含字詞時間戳記的音訊檔案
- 如何轉錄不同語言的音訊檔案
軟硬體需求
問卷調查
您會如何使用這個教學課程?
針對 C# 的使用體驗,您會給予什麼評價?
根據您使用 Google Cloud Platform 服務的經驗,您會給予什麼評價?
2. 設定和需求
自修環境設定
- 登入 Google Cloud 控制台,建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。
- 「專案名稱」是這項專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
- 所有 Google Cloud 專案的專案 ID 均不得重複,而且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常為
PROJECT_ID
)。如果您對產生的 ID 不滿意,可以隨機產生一個 ID。或者,您也可以自行嘗試,看看是否支援。在這個步驟後,這個名稱即無法變更,而且在專案期間內仍會保持有效。 - 資訊中的第三個值是專案編號,部分 API 會使用這個編號。如要進一步瞭解這三個值,請參閱說明文件。
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Cloud 資源/API。執行本程式碼研究室不會產生任何費用 (如果有的話)。如要關閉資源,以免產生本教學課程結束後產生的費用,您可以刪除自己建立的資源或刪除專案。新使用者符合 $300 美元免費試用計畫的資格。
啟動 Cloud Shell
雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。
啟用 Cloud Shell
- 在 Cloud 控制台中,按一下「啟用 Cloud Shell」圖示 。
如果您是第一次啟動 Cloud Shell,系統會顯示中繼畫面,說明這項服務的內容。如果系統顯示中繼畫面,請按一下「繼續」。
佈建並連線至 Cloud Shell 只需幾分鐘的時間。
這個虛擬機器已載入所有必要的開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。在本程式碼研究室中,您的大部分作業都可透過瀏覽器完成。
連線至 Cloud Shell 後,您應會發現自己通過驗證,且專案已設為您的專案 ID。
- 在 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
您必須先啟用 API,才能開始使用 Speech-to-Text API。您可以在 Cloud Shell 中使用下列指令啟用 API:
gcloud services enable speech.googleapis.com
4. 安裝 C# 適用的 Google Cloud Speech-to-Text API 用戶端程式庫
首先,請建立簡易的 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 右上角的程式碼編輯器:
前往 SpeechToTextApiDemo
資料夾中的 Program.cs
檔案,然後將程式碼替換為以下程式碼:
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 傳遞 Cloud Storage 中音訊檔案的 URI,或是音訊檔案的本機檔案路徑。這裡使用 Cloud Storage URI。
返回 Cloud Shell,執行應用程式:
dotnet run
您應該會看到以下的輸出內容:
how old is the Brooklyn Bridge
摘要
在這個步驟中,您可以轉錄英文音訊檔案並列印結果。進一步瞭解轉錄。
6. 使用字詞時間戳記轉錄
Speech-to-Text 可以偵測轉錄音訊的時間偏移 (時間戳記)。時間偏移會顯示提供的音訊中每個朗讀字詞的開始和結束時間。時間偏移值代表從音訊開頭經過的時間量,以 100 毫秒為遞增量。
如要使用時間偏移轉錄音訊檔案,請前往 SpeechToTextApiDemo
資料夾中的 Program.cs
檔案,然後將程式碼替換為以下程式碼:
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 取得音訊檔案。
如要轉錄法文音訊檔案,請前往 SpeechToTextApiDemo
資料夾中的 Program.cs
檔案,然後將程式碼替換成以下程式碼:
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. 恭喜!
您已瞭解如何使用 C# 的 Speech-to-Text API,對音訊檔案執行不同類型的語音轉錄!
清除所用資源
如何避免系統向您的 Google Cloud Platform 帳戶收取您在本快速入門導覽課程中所用資源的相關費用:
- 前往 Cloud Platform 主控台。
- 選取您要關閉的專案,然後按一下「刪除」會安排將專案刪除。
瞭解詳情
- Google Cloud Speech-to-Text API:https://cloud.google.com/speech-to-text/docs
- Google Cloud Platform 上的 C#/.NET:https://cloud.google.com/dotnet/
- Google Cloud .NET 用戶端:https://googlecloudplatform.github.io/google-cloud-dotnet/
授權
這項內容採用的是創用 CC 姓名標示 2.0 通用授權。