使用 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 等),并提供 5GB 的永久性主目录。我们将使用 Cloud Shell 创建对 Speech API 的请求。

如需开始使用 Cloud Shell,请点击标题栏右上角的“激活 Google Cloud Shell”图标 2015 年 6 月 8 日下午 5.30.32 的屏幕截图

一个 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 中的内置网页编辑器:

在您的主目录中创建该文件,以便轻松引用该文件并将其添加到 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 对象中,您可以向 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

后续步骤