 
准备工作
- 实验会创建一个 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 和 WebSocket 结合使用,Java Servlet 可以接受来自网页的流式传输语音,并提供相应的转写文稿,使任何网页都能将语音内容作为额外的界面使用。
本实验分为多个部分,每个部分介绍最终 Web 应用的一个组件。
您创建的 Web 应用会从客户端的麦克风获取音频,并将其流式传输到 Java Servlet。Java Servlet 将数据传递给 Cloud Speech API,后者会将检测到的任何语音的转写内容以流式传输方式返回给 Servlet。然后,Servlet 将转写结果传递给客户端,后者则会在网页上显示相应结果。
为此,您需要创建以下几种组件:
本实验假设您熟悉以下内容:
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
您也可以在“实验详细信息”窗格中找到“用户名”。
点击下一步。
复制下面的密码,然后将其粘贴到欢迎对话框中。
您也可以在“实验详细信息”窗格中找到“密码”。
点击下一步。
继续在后续页面中点击以完成相应操作:
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
Compute Engine 是一项服务,可用于在 Google 基础设施上启动虚拟机。在本实验中,您将创建虚拟机,并通过它来运行用 Java 8 编写的 Servlet;该 Servlet 托管网站并使用 Cloud Speech API 向客户端提供动态转写服务。在本实验中,您还将使用虚拟机运行代码。
创建新的虚拟机,方法是依次点击导航菜单 () > Compute Engine > 虚拟机实例。
创建新实例,方法是点击创建实例。
在机器配置中,
将新实例命名为 speaking-with-a-webpage。
选择一个可用区作为 
将其他值保留为默认值。
点击操作系统和存储空间。
点击更改开始配置启动磁盘,并选择以下各项的值:
对于操作系统,选择 Debian。
对于版本,选择 Debian GNU/Linux 12 (bookworm)。
将启动磁盘类型保留为默认设置。
在窗口底部,点击选择。
点击网络。
点击安全。
对于身份和 API 访问权限 > 服务账号,保留默认设置。
对于访问权限范围,选择授予对所有 Cloud API 的完整访问权限。
点击创建。
几分钟后,您的虚拟机会启动并正常运行!在虚拟机实例列表中查看您的虚拟机及其详细信息。请注意 SSH 按钮(将在下一步中使用)和外部 IP(将在本实验的后续步骤中使用)。
系统会打开一个新窗口,将您连接到这个虚拟机,同时提供命令提示符。您会在本实验的其余部分使用此界面。
点击检查我的进度,验证您已完成的任务。
如需详细了解 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 退出。
点击检查我的进度,验证您已完成的任务。
Java Servlet 是支持此 Web 应用的支柱,因为它提供所需的客户端 HTML、CSS 和 JavaScript 代码,并连接到 Cloud Speech API 以提供转写功能。
当从网页访问用户的麦克风时,浏览器要求网页通过安全信道进行通信,以防止窃听。因此,请将 Servlet 设置为通过 HTTPS 传送网页。由于配置和传送安全网页本身就是一个独立的主题,因此在本实验中,请使用所提供示例解决方案中的自签名证书和 Jetty 配置文件,这足以满足开发环境的需求。
对于本部分,只需通读并运行 01-hello-https 中提供的 Maven 项目即可。请特别注意 src/ 目录中的文件,因为它们是后续步骤中进行构建所用的主要文件:
src/main/webapp 中的文件包括由 Jetty 静态传送的 JavaScript、CSS 和 HTML 文件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 网址访问该 Web 应用时,浏览器可能会发出警告:该连接不是私密连接。这是因为示例应用在开发时使用了自签名 SSL 证书。在生产环境中,您需要使用由证书授权机构签名的 SSL 证书,但就本实验而言,自签名 SSL 证书就已够用。请务必注意,不要在网页上透露任何机密信息。😁
点击检查我的进度,验证您已完成的任务。
Web Audio API 允许网页在征得用户同意的情况下从用户的麦克风捕获音频数据。Cloud Speech API 需要这些原始数据以特定格式提供,并且需要知道其采样率。
在提供的 speaking-with-a-webpage 代码库中,02-webaudio 子目录基于 01-hello-https 示例代码构建:通过添加 Web Audio getUserMedia 函数,将用户的麦克风连接到音频的可视化效果。然后,它会向音频流水线添加 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/
点击检查我的进度,验证您已完成的任务。
常规 HTTP 连接并不适合将音频实时流式传输到服务器,同时接收可用转写内容。在本部分中,您将创建从客户端到服务器的 WebSocket 连接,并使用该连接将音频元数据(即采样率)和数据发送到服务器,同时监听响应(即数据的转写内容)。
提供的示例将 TranscribeServlet 更改为从 WebSocketServlet 扩展,以便注册 WebSocketAdapter。它定义的 WebSocketAdapter 仅接收消息并将其发送回客户端。
在客户端,该示例将上一步中的 scriptNode 替换为用于将数据发送到稍后要定义的套接字的节点。然后,它会创建与服务器的安全 WebSocket 连接。服务器和麦克风都连接后,它会开始监听来自服务器的消息,然后将采样率发送给服务器。当服务器回传采样率时,客户端会使用更持久的转写处理程序替换监听器,并连接 scriptNode,开始向服务器流式传输音频字节。
03-websockets 的目录:访问正在运行的 Web 应用,方法是在 Cloud 控制台的“虚拟机实例”页面中查找外部 IP 地址,然后通过浏览器访问如下网址:https://<your-external-ip>:8443
按 CTRL+C 以停止服务器。
借助 Google Cloud Speech 流式传输 API,您可以实时向该 API 发送音频字节,并异步接收其检测到的任何语音的转写内容。该 API 希望音频字节采用特定格式,具体由在请求开头发送的配置决定。对于此 Web 应用,您需要向该 API 发送 LINEAR16 格式的原始音频样本,即每个样本都是一个 16 位有符号整数,并以客户端获取的采样率发送。
在提供的 speaking-with-a-webpage 代码库中,04-speech 子目录会填充 03-websockets 步骤中的服务器代码。它包含了上述 StreamingRecognizeClient 示例代码中的代码,用于连接 Cloud Speech API、向其传递音频字节,并从其接收转写内容。它异步接收到转写内容后,会使用与 JavaScript 客户端的连接传递这些内容。JavaScript 客户端只需将其输出到网页上。
https://<your-external-ip>:8443
下面的选择题可加强您对本实验所涉概念的理解。请尽您所能回答。
您已了解如何使用 gcloud 创建虚拟机并启动 Java Servlet,以便在网页上捕获音频并转写为文本!
思考一下可以对软件进行哪些改进:
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2025 年 9 月 15 日
本手册的最后测试时间:2025 年 9 月 15 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
 
 
 
 
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
 
太好了!
一旦可用,我们会通过电子邮件告知您
 
 
一次一个实验
确认结束所有现有实验并开始此实验
