# Online Speech SDK Demo

独立工程，包含：

- `demo-android`：可直接在 Android Studio 打开的示例应用（通过 Maven 依赖 `online-speech` 与 `open-sdk`）

配套文档：

- [SDK 接入说明](./docs/SDK_INTEGRATION.md)
- [Demo-Android 使用说明](./docs/DEMO_ANDROID.md)

## 1) 功能说明

- 支持通过接口传入 `domain / ak / sk / uid / deviceId`
- SDK 内部生成 `x-app-authorization`（JWT HS256），并按过期前窗口自动刷新
- 对接当前工程同风格 WebSocket 协议：
  - `header.task=asr|tts`
  - `header.action=Start|End`
  - `header.version=v1`
  - 消息体 `payload` 与现网结构一致（`format/rate/channel/bits/text/voice/lang...`）
- ASR：支持发送 `Start/End`，并推 PCM 二进制音频
- ASR：支持高层一键接口 `startAsrWithMic()/stopAsrWithMic()`（配合 `AudioSource`）
- TTS：支持 `speak(text)` 队列播放与 `stop()`
- TTS：SDK 提供播放状态回调；在 Android 可接入 `AndroidPcmTtsStreamPlayer` 实现默认流式播放

## 2) 运行 Android Demo

```bash
cd online-speech-sdk-demo
./gradlew :demo-android:assembleDebug
```

`demo-android` 默认从 `online-speech-sdk-demo/gradle.properties` 读取鉴权参数：

- `online.demo.domain`
- `online.demo.ak`
- `online.demo.sk`
- `online.demo.uid`
- `online.demo.deviceId`

安装后打开 `OnlineSpeechDemo`：

- 初始化页：点击 `Init SDK (create clients)`
- ASR 页：`connect -> startAsrWithMic -> stopAsrWithMic`
- TTS 页：`connect -> speak(default text) -> stop`

## 3) 接入 SDK（代码）

```kotlin
val cfg = OnlineSpeechSdkConfig(
    domain = "api-test.rokid.com",
    ak = "<AK>",
    sk = "<SK>",
    uid = "<UID>",
    deviceId = "<DEVICE_ID>",
)
val sdk = OnlineSpeechSdk(cfg)
val asr = sdk.createAsrClient()
val tts = sdk.createTtsClient()
asr.connect()
tts.connect()
```

搭配 open-sdk 录音一键调用：

```kotlin
val asr = sdk.createAsrClient()
    .attachAudioSource(OpenSdkAudioSource())
asr.connect()
asr.startAsrWithMic()
// ...
asr.stopAsrWithMic()
```
