目录

语音识别

本教程演示了如何在 JxBrowser 中启用语音识别功能。

启用 Speech API 

语音识别是 Chromium 的专有功能,需要 Google API 密钥才能正常运行。在获取该密钥之前,您需要先启用私有的 Speech API(语音 API):

  1. 该 API 仅对订阅了 chromium-dev Google Group 的用户可见。加入时,请确保勾选了链接到我的 Google 帐户个人资料选项。
  2. 进入 Google Cloud 控制台。确保您使用的是与订阅 “chromium-dev” 组的电子邮件地址关联的 Google 账户登录。
  3. 在顶部栏中,为您的应用程序创建一个新项目或选择一个现有项目。
  4. 从侧边菜单中选择 APIs & Services(API 和服务)> Library(库)。
  5. 找到并启用 “Speech API”,注意不是 “Cloud Speech-to-Text API”(云语音转文本 API)。如果未找到该 API,返回 Library(库) 页面,在左侧的 Visibility(公开范围) 部分中选择 Private(私享)。在那里,您将看到所有对您公开的私享 API。

Speech API

订阅该组后,私享 API 的显示可能需要一些时间(最多 15 分钟)。

获取凭据 

现在,您可以获取需要传递给 EngineOptions 的凭据:

Java
Kotlin
var options = EngineOptions.newBuilder(HARDWARE_ACCELERATED)
        .googleApiKey("key")
        .googleDefaultClientId("client-id")
        .googleDefaultClientSecret("secret")
        .build();
var engine = Engine.newInstance(options);
val engine = Engine(HARDWARE_ACCELERATED) {
      google {
         apiKey = "key"
         defaultClientId = "client-id"
         defaultClientSecret = "secret"
      }
}
  1. 在侧边菜单中选择 APIs & Services(API 和服务)> Credentials(凭据)。
  2. 点击 CREATE CREDENTIALS(创建凭据) 按钮,并在下拉列表中选择 OAuth client ID(OAuth 客户端 ID)。在 Application type(应用类型) 部分,勾选 Desktop app(桌面应用) 并在 Name(名称) 文本框中为其命名,然后点击 Create(创建)。
  3. 在弹出窗口中,您将看到一个客户端 ID 和一个客户端密钥字符串。它们应分别传递给 googleDefaultClientId 和 googleDefaultClientSecret 方法。
  4. 在同一页面上再次点击 CREATE CREDENTIALS(创建凭据) 按钮,选择 API 密钥项。应该会弹出一个窗口,显示 API 密钥字符串。它应传递给 googleApiKey 方法。

请注意,启用 API 和获取凭据并非即时操作。在 Google Cloud 中,应用这些设置需要一些时间,之后您才能使用它们。甚至在创建凭据时,平台也会提醒您这一点。

创建凭据

授予权限 

为了允许 Chromium 识别您的语音,您需要授予其录制音频的权限:

Java
Kotlin
engine.permissions().set(RequestPermissionCallback.class, 
                         (params, tell) -> {
                            if (params.permissionType() == AUDIO_CAPTURE) {
                                tell.grant();
                            } else {
                                tell.deny();
                            }
                          });
engine.permissions().set(RequestPermissionCallback::class.java) { params, tell ->
   if (params.permissionType() === AUDIO_CAPTURE) {
      tell.grant()
   } else {
      tell.deny()
   }
}

请查看完整的代码片段。