List icon 目录

语音识别

本教程演示了如何在 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 和一个客户端密钥字符串。它们应分别传递给 googleDefaultClientIdgoogleDefaultClientSecret 方法。
  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()
   }
}

请查看完整的代码片段