Skip to content

手机端 SDK 初始化(ASR/TTS)

示例说明

演示手机端如何在 SDK 初始化阶段启用在线语音转文本和文本转语音能力,并说明接入时需要补齐的鉴权参数。

使用位置

手机端首页:

  • MainPhoneActivity

核心初始化方法:

  • initSDK()

适用端

  • 手机端

关键文件

源码定位

仓库内重点查看下面这些位置:

如果你后续要继续扩展手机端语音调试页,建议从 MainPhoneActivity.initSDK() 往下追踪 SDK 初始化成功后的业务分发逻辑。

相关 API 文档

流程说明

  1. 创建客户端 ID 列表:SecurityPhoneGlassSample
  2. 构造 UserAuthInfo,这里需要填入在线 ASR/TTS 对应的 accessKeysecretKey
  3. 构造 EngineParam
  4. 通过 PSecuritySDK.getMobileEngineService().initSDK(param) 初始化手机端引擎服务。
  5. 初始化成功后,再继续设备连接、消息监听和状态同步。

关键代码片段

kotlin
private fun initSDK() {
    lifecycleScope.launch {
        val clientIds = arrayListOf("SecurityPhone", "GlassSample")

        // 这里需要替换成真实的 AK/SK
        val userAuthInfo = UserAuthInfo("", "")

        // 当前示例不初始化翻译服务,保留 ASR/TTS
        val banServiceList: List<NetServiceType> =
            arrayListOf(NetServiceType.TranslateService)

        val param = EngineParam(
            clientIds = clientIds,
            userAuthInfo = userAuthInfo,
            banServiceList = banServiceList,
            envType = EnvType.Companion.PUBLIC
        )

        PSecuritySDK.getMobileEngineService().initSDK(param) {
            if (it.isSuccess) {
                GlobalData.setSdkInitState(it.isSuccess)
            }
        }
    }
}

初始化时序

准备参数手机端组装 EngineParamclientId 和 AK/SK。
初始化 SDK调用 initSDK(EngineParam)
建立在线能力SDK 使用鉴权信息初始化在线语音服务。
接收结果初始化成功后继续连接设备或注册监听。

关键代码要点

clientId 配置

手机端和眼镜端需要共享业务侧约定的 clientId,示例里是:

  • SecurityPhone
  • GlassSample

在线语音鉴权

当前示例代码里仍然是占位值:

kotlin
val userAuthInfo = UserAuthInfo("", "")

真正接入在线 ASR/TTS 时,需要替换成商务申请下来的 AK/SK。

服务初始化范围

示例里没有禁用 ASR/TTS,而是禁用了翻译服务:

kotlin
val banServiceList: List<NetServiceType> = arrayListOf(NetServiceType.TranslateService)

这意味着当前初始化目标是:

  • 初始化在线语音转文本
  • 初始化在线文本转语音
  • 不初始化翻译服务

实现说明

为什么这里只看到初始化,没有单独的手机端 ASR/TTS 页面

当前仓库里,手机端主要把在线语音能力准备工作放在了 SDK 初始化阶段,真正可直接点击验证的 ASR/TTS 页面示例更多在眼镜端。

所以这篇文档的价值主要在于说明:

  • 在线语音能力从哪里打开
  • AK/SK 应该在哪里配置
  • clientId 怎样和眼镜端保持一致

如果 AK/SK 没填会怎样

SDK 初始化本身可能仍然成功,但涉及在线 ASR/TTS 的实际调用时会失败,或者拿不到可用结果。

为什么要在初始化时就决定 banServiceList

因为这里相当于声明“本次要拉起哪些在线能力”。当前示例明确保留了 ASR/TTS,把翻译服务排除掉,方便调试语音链路本身。

接入清单

  • 向商务申请在线语音能力 AK/SK
  • 保证手机端和眼镜端约定同一组 clientId
  • 在初始化成功后再触发依赖在线语音的页面或业务
  • 给错误态补充更明确的 UI 提示,避免开发期误判为 SDK 初始化失败

注意事项

  • UserAuthInfo 不能继续保持空值用于正式环境。
  • 手机端和眼镜端必须约定一致的 clientId。
  • 如果后续需要单独的手机端语音调试页,建议在这个初始化逻辑之上再补一个独立 Demo 页面。