准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create a virtual machine
/ 20
Install necessary software and create a firewall rule
/ 40
Run the sample solution (hello-https)
/ 20
Run the sample solution to capture audio on webpage
/ 20
開發人員可透過 Google Cloud Speech 串流 API,即時將語音內容轉換為文字。只要將 API 與 JavaScript 的 Web Audio API 和 Websockets 搭配使用,Java Servlet 就能接受網頁串流語音並提供文字轉錄稿,讓任何網頁都能用語音提供額外的使用者介面。
本實驗室分為多個部分,每個部分都會介紹最終網路應用程式的元件。
您建立的網頁應用程式會從用戶端麥克風擷取音訊資料,再串流傳輸至 Java Servlet。接著,Java Servlet 會將音訊資料傳送到 Cloud Speech API,該 API 則會將偵測到的語音轉錄內容傳回 Servlet。最後,Servlet 會將語音轉錄結果傳送給用戶端,並顯示在網頁上。
為了達成上述目的,您需要建立多個元件:
本實驗室假設您已熟悉下列項目:
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
如有必要,請將下方的 Username 貼到「登入」對話方塊。
您也可以在「Lab Details」窗格找到 Username。
點選「下一步」。
複製下方的 Password,並貼到「歡迎使用」對話方塊。
您也可以在「Lab Details」窗格找到 Password。
點選「下一步」。
按過後續的所有頁面:
Google Cloud 控制台稍後會在這個分頁開啟。
Compute Engine 是一項服務,可讓您在 Google 基礎架構上啟動 VM。在本實驗室中,您將建立及使用 VM 執行以 Java 8 編寫的 Servlet,該 Servlet 會代管網站,並使用 Cloud Speech API 為用戶端提供動態語音轉錄內容。在本實驗室中,您也會使用 VM 執行程式碼。
如要建立新的 VM,請依序點按「導覽選單」 () >「Compute Engine」>「VM 執行個體」。
點按「建立執行個體」,建立新的執行個體。
前往「機器設定」專區。
將新執行個體命名為 speaking-with-a-webpage。
選擇可用區
其他值則保留預設值。
點按「OS 和儲存空間」。
點按「變更」,開始設定開機磁碟,並選取下列選項:
在「作業系統」部分,選取「Debian」。
在「版本」部分,選取「Debian GNU/Linux 12 (bookworm)」。
將「開機磁碟類型」保留預設值。
點按視窗底部的「選取」。
點按「網路」。
點按「安全性」。
在「身分及 API 存取權」>「服務帳戶」部分,保留預設值。
在「存取權範圍」部分,選取「允許所有 Cloud API 的完整存取權」。
點按「建立」。
VM 會在幾分鐘後開始運作!在「VM 執行個體」清單中,查看 VM 及其詳細資料。請留意會在下個步驟使用的「SSH」按鈕,以及要在本實驗室後續部分使用的外部 IP。
系統會隨即開啟新視窗,並連線至 VM,提供命令提示字元。本實驗室的後續部分都會用到這個介面。
點按「Check my progress」,確認工作已完成。
如要進一步瞭解 Compute Engine 及其各種功能,請參閱 Compute Engine 說明文件。
這會建立 speaking-with-a-webpage 目錄,其中包含下列各部分的子目錄。每個子目錄都會以前一個為基礎,逐步新增功能:
01-hello-https - 包括含有靜態檔案的最低 Jetty Servlet,以及透過 HTTPS 提供的處理常式02-webaudio - 填寫用戶端 JavaScript,透過用戶端麥克風錄音,並顯示視覺效果,確認麥克風可正常運作03-websockets - 修改用戶端和伺服器,透過 WebSocket 與彼此通訊04-speech - 修改伺服器,將音訊內容傳送到 Cloud Speech API,並將後續語音轉錄內容傳送至 JavaScript 用戶端本實驗室使用的範例採用的不是一般 HTTPS 通訊埠,而是用於開發目的的非特權通訊埠 8443。
cd ~/speaking-with-a-webpage
git diff --no-index 01-hello-https/ 02-webaudio/
02-https 與 03-webaudio 目錄/步驟之間的差異。
使用方向鍵、PgUp/PgDn 鍵可進行瀏覽,按下 q 鍵則可退出。
點按「Check my progress」,確認工作已完成。
Java Servlet 是支援這個網頁應用程式的支柱,提供必要的用戶端 HTML、CSS 和 JavaScript 程式碼,並可連線至 Cloud Speech API 來提供語音轉錄功能。
從網頁存取使用者的麥克風時,瀏覽器會要求網頁透過安全管道進行通訊,以防竊聽。因此,請設定 Servlet,透過 HTTPS 提供網頁。由於設定及提供安全網頁本身就是一個主題,因此在本實驗室中,請使用我們所提供範例解決方案中的自行簽署憑證和 Jetty 設定檔,即可建立足以執行操作的開發環境。
在這個部分中,請直接閱讀內文,並執行 01-hello-https 中提供的 Maven 專案。請特別注意 src/ 目錄中的檔案,因為這些是要在後續步驟中建構的主要檔案:
src/main/webapp 中的檔案包括 JavaScript、CSS 和 HTML 檔案,這些檔案是由 Jetty 靜態提供TranscribeServlet.java 可定義 Servlet,用於處理 /transcribe 路徑收到的要求在提供的 speaking-with-a-webpage 存放區中,01-hello-https 子目錄包含為 HTTPS 設定的 Maven Servlet 專案。這個 Servlet 會使用 Jetty Servlet 架構,同時提供靜態檔案和動態端點。此外,這個範例也會使用上述網誌文章,透過 Key Tool 指令產生自行簽署的憑證,並新增 Jetty 設定來支援 HTTPS。
01-hello-https。https://<your-external-ip>:8443
首次使用 HTTPS 網址存取網頁應用程式時,瀏覽器可能會發出警告,指出您的連線不是私人連線。這是因為範例應用程式使用自行簽署的 SSL 憑證進行開發。在正式環境中,您需要憑證授權單位簽署的 SSL 憑證,但在本實驗室中,只要有自行簽署的 SSL 憑證即可,但請務必不要透過網頁談論任何機密。😁
點按「Check my progress」,確認工作已完成。
在使用者授予同意後,網頁就能透過 Web Audio API 擷取使用者麥克風的音訊資料。Cloud Speech API 需要特定格式的原始資料,並瞭解取樣率。
在我們提供的 speaking-with-a-webpage 存放區中,02-webaudio 子目錄會新增 Web Audio getUserMedia 函式,將使用者的麥克風連結到音訊視覺效果,藉此利用 01-hello-https 程式碼範例執行建構。接著,將 ScriptProcessorNode 新增至音訊管道,以便擷取原始音訊位元組,準備傳送到伺服器。由於 Cloud Speech API 最終也需要 sampleRate,因此也會一併擷取。請按照下列步驟啟動 02-webaudio 應用程式:
按下 CTRL+C 鍵,停止伺服器。
前往包含 02-webaudio 的目錄:
https://<your-external-ip>:8443。01-hello-https) 與本節 (02-webaudio) 間的不同之處:
cd ~/speaking-with-a-webpage
git diff --no-index 01-hello-https/ 02-webaudio/
點按「Check my progress」,確認工作已完成。
一般 HTTP 連線不適合用於將音訊資料即時串流傳輸到伺服器,同時接收轉錄稿。在這個部分中,您會從用戶端建立與伺服器的 Web Socket 連線,並使用該連線將音訊中繼資料 (即取樣率) 和相關資料傳送到伺服器,同時監聽回應 (即資料的轉錄稿)。
本節提供的範例會變更 TranscribeServlet,從 WebSocketServlet 進行擴充,以便註冊 WebSocketAdapter。範例定義的 WebSocketAdapter 會接收訊息,然後傳回用戶端。
在用戶端上,這個範例會將上個步驟中的 scriptNode,替換成將資料傳送至稍後定義的通訊端,然後建立與伺服器的安全 WebSocket 連線。伺服器和麥克風連線後,就會開始監聽伺服器的訊息,然後將取樣率傳送給伺服器。伺服器傳回取樣率時,用戶端會將事件監聽器替換成更永久的語音轉錄處理常式,並連結 scriptNode,開始將音訊位元組串流傳輸至伺服器。
03-websockets 的目錄:如要存取執行中的網頁應用程式,請在 Cloud 控制台的「VM 執行個體」頁面中尋找外部 IP 位址,然後在瀏覽器中前往:https://<your-external-ip>:8443。
按下 CTRL+C 鍵,停止伺服器。
Google Cloud Speech 串流 API 可讓您即時將音訊位元組傳送至 API,並以非同步方式接收系統偵測到的語音轉錄內容。API 會預期位元組採用特定格式 (取決於要求開頭傳送的設定)。在本網頁應用程式中,您會以 LINEAR16 格式傳送 API 原始音訊樣本,也就是每個樣本均為 16 位元的正負整數,並以用戶端採取的取樣率傳送。
在範例提供的 speaking-with-a-webpage 存放區中,04-speech 子目錄會填入 03-websockets 步驟的伺服器程式碼。這會併入上述 StreamingRecognizeClient 程式碼範例中的程式碼,用來建立連結、傳送音訊位元組,以及從 Cloud Speech API 接收轉錄稿。非同步接收轉錄稿時,會使用 JavaScript 用戶端的連線傳送這些轉錄稿。JavaScript 用戶端會直接將其輸出至網頁。
https://<your-external-ip>:8443。完成下列選擇題能加深您的印象,更清楚本實驗室介紹的概念,盡力回答即可。
您已學會如何使用 gcloud 建立 VM,並啟動 Java Servlet,透過網頁擷取音訊資料並轉錄成文字!
請考慮加入下列軟體改善項目:
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 9 月 15 日
實驗室上次測試日期:2025 年 9 月 15 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验