使用 Cloud Speech-to-Text API 进行语音转文字

Cloud Speech API 支持对 80 多种语言的音频文件进行语音转文字。

在本实验中,我们将录制一个音频文件并将其发送到 Cloud Speech API 以进行转录。

学习内容

  • 创建 Speech API 请求并使用 curl 调用 API
  • 对不同语言的音频文件调用 Speech API

所需条件

  • 一个 Google Cloud Platform 项目
  • 一个浏览器,例如 ChromeFirefox

您将如何使用本教程?

仅阅读教程内容 阅读并完成练习

您如何评价自己在 Google Cloud Platform 方面的经验水平?

新手水平 中等水平 熟练水平

自定进度的环境设置

如果您还没有 Google 账号(Gmail 或 Google Apps),则必须创建一个。登录 Google Cloud Platform Console (console.cloud.google.com) 并创建一个新项目:

2016-02-10 12:45:26 的屏幕截图.png

请记住项目 ID,它在所有 Google Cloud 项目中都是唯一名称(很抱歉,上述名称已被占用,您无法使用!)。它稍后将在此 Codelab 中被称为 PROJECT_ID

接下来,您需要在 Cloud Console 中启用结算功能,才能使用 Google Cloud 资源。

在此 Codelab 中运行仅花费几美元,但是如果您决定使用更多资源或继续让它们运行,费用可能更高(请参阅本文档末尾的“清理”部分)。

Google Cloud Platform 的新用户有资格获享 $300 免费试用

点击屏幕左上角的菜单图标。

从下拉菜单中选择 API 和服务 信息中心。

点击启用 API 和服务

然后,在搜索框中搜索“语音”。点击 Google Cloud Speech API

点击启用以启用 Cloud Speech API:

等待几秒钟,直到该功能启用。启用后,您会看到以下内容:

Google Cloud Shell 是 在云端运行的命令行环境。这个基于 Debian 的虚拟机上已加载您需要的所有开发工具(gcloudbqgit 等),并提供永久性的 5 GB 主目录。我们将使用 Cloud Shell 创建发送至 Speech API 的请求。

如需开始使用 Cloud Shell,请点击标题栏右上角的“激活 Google Cloud Shell”Screen Shot 2015-06-08 at 5.30.32 PM.png 图标

一个 Cloud Shell 会话随即会在控制台底部的新框内打开,并显示命令行提示符。等待直到出现 user@project:~$ 提示

由于我们后续将使用 curl 向 Speech API 发送请求,所以需要生成 API 密钥来传入请求网址。如需创建 API 密钥,请前往项目信息中心的 API 和服务 > 凭据部分:

然后点击创建凭据

在下拉菜单中选择 API 密钥

接下来,复制刚刚生成的密钥,然后选择关闭(不要限制密钥)。

现在您已经有了 API 密钥,可以将其保存到一个环境变量中,这样就不必在每个请求中都手动插入该 API 密钥的值。您可以在 Cloud Shell 中执行此操作。请务必将 <your_api_key> 替换为您刚刚复制的密钥。

export API_KEY=<YOUR_API_KEY>

您可以在 request.json 文件中构建对 Speech API 的请求。如需创建和修改此文件,您可以使用自己习惯使用的任一命令行编辑器(nano、vim、emacs 等),也可以使用 Cloud Shell 中的内置 Web 编辑器:

在您的主目录中创建该文件,以便轻松引用它,并将以下内容添加到您的 request.json 文件中:

request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

请求正文包含 configaudio 对象。在 config 中,我们会告知 Speech API 如何处理请求。encoding 参数的用途是告知 API 您要对发送到此 API 的音频文件使用哪种类型的音频编码。FLAC 是 .raw 文件的编码类型(如需了解详情,请参阅有关编码类型的文档)。您还可以向 config 对象添加其他参数,但只有 encoding 是必须提供的。如果没有填写请求的 languageCode 参数,它将默认为英语。

audio 对象中,您可以向 API 传递 Cloud Storage 中的音频文件的 URI,也可以采用字符串的形式提供 base64 编码的音频。我们在这里使用的是 Cloud Storage 网址。下一步就是调用 Speech API!

现在,您可以通过以下 curl 命令(包含在一个命令行中)将请求正文以及之前保存的 API 密钥环境变量传递给 Speech API:

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1/speech:recognize?key=${API_KEY}"

curl 命令返回的响应应如下所示:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

transcript 值返回的是 Speech API 将音频文件转写成的文字,而 confidence 值代表 API 对音频转写准确性的置信度。

您会发现,我们在上述请求中调用了 recognize 方法。Speech API 同时支持同步和异步语音转文字转写。在本例中,我们发送的是完整的音频文件,但您也可以使用 longrunningrecognize 方法,在用户仍在讲话的同时执行流式语音转文字转录。

您是否通晓多种语言?Speech API 支持将 100 多种语言的语音转写成文字!您可以在 request.json 中更改 languageCode 参数。您可以点击此处查看支持的语言列表。

现在,我们来尝试转录一个法语音频文件(如果您想要先听一听该音频文件,请点击此处)。将您的 request.json 更改为以下内容:

request.json

 {
  "config": {
      "encoding":"FLAC",
      "languageCode": "fr"
  },
  "audio": {
      "uri":"gs://speech-language-samples/fr-sample.flac"
  }
}

您应该会看到以下响应:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "maître corbeau sur un arbre perché tenait en son bec un fromage",
          "confidence": 0.9710122
        }
      ]
    }
  ]
}

这句话出自一个广受欢迎的法国儿童故事。如果您有其他语言的音频文件,也可以尝试将其添加到 Cloud Storage 中,并更改请求中的 languageCode 参数。

您已经了解了如何使用 Speech API 执行语音转文字转录。在本示例中,您是将音频文件的 Google Cloud Storage URI 传递给了 API;当然,您也可以传递音频内容的 base64 编码字符串。

所学内容

  • 向 Speech API 传递音频文件的 Google Cloud Storage URI
  • 创建 Speech API 请求并使用 curl 调用 API
  • 对不同语言的音频文件调用 Speech API

后续步骤