博客 / 詳情

返回

基於 Rokid CXR-S SDK 的智能提詞器開發全解析——AI 應答輔助系統

在內容創作、直播及演講場景中,“順暢表達”往往比稿件內容本身更具決定性。傳統提詞器需要額外屏幕或設備,使用時不僅需要手動控制播放,還容易打斷自然表達節奏。隨着 Rokid AR 眼鏡與 AI 大模型能力的成熟,我們終於可以把“提詞器”這一工具沉入眼鏡底層,讓文本提示隨用户視野自然跟隨,讓演講體驗真正進入免手持、低干擾的時代。
本文基於 Rokid CXR-S SDK 官方提供的提詞器場景接口,詳細講解 提詞器場景的設計思路、SDK 接口用法、ASR 結合策略以及大量的工程級優化經驗,幫助你快速構建一個可用的大模型賦能的智能提詞器。

讓用户可以戴着Rokid眼鏡直接連接AI大模型,實現智能顯示觀眾或者粉絲提問的參考答案。

在這裏插入圖片描述

一、場景概述:從“顯示文本”到“AI 驅動的智能提示”

智能提詞器的目標不是簡單地把一段文字顯示在眼鏡裏,而是讓用户在創作過程中獲得:

  • 免手持可見性:稿件懸浮在視野當中,不需要額外設備
  • 大模型輔助優化:自動潤色、補齊、重寫或生成關鍵詞提示
  • 高穩定交互:眼鏡端與服務端的雙向狀態回調與錯誤恢復機制
  • 低打斷感體驗:自動更新、動態提示、視覺穩定、延遲最小化
    相比傳統提詞器,Rokid 眼鏡的優勢在於其 CXR 場景系統 本身已支持“提詞器場景(WORD_TIPS)”,包括文本發送、佈局配置等官方接口,使開發者可以快速接入、擴展或增強功能。

在這裏插入圖片描述

二、提詞器場景控制:官方 SDK 接口一覽

Rokid CXR-S SDK 已提供 提詞器場景接口,核心能力包括:

  • 打開 / 關閉提詞器界面
  • 發送文本(支持流式發送與分片發送)
  • 配置字體、行距、顯示區域
  • 自動滾動
    以下為核心接口及實際工程用法。

    2.1 打開 / 關閉提詞器場景

fun openOrCloseWordTips(toOpen: Boolean): ValueUtil.CxrStatus? {
    return CxrApi.getInstance()
        .controlScene(ValueUtil.CxrSceneType.WORD_TIPS, toOpen, null)
}

返回狀態説明:

  • REQUEST_SUCCEED:成功
  • REQUEST_WAITING:正在處理中(常見於連續重複觸發)
  • REQUEST_FAILED:失敗(需處理異常)

2.2 發送提詞器文本(官方支持流式)

SDK 支持文本流式寫入,適合長稿件。

private val sendCallback = object : SendStatusCallback {
    override fun onSendSucceed() { Log.d(TAG, "文字發送成功") }
    override fun onSendFailed(e: ValueUtil.CxrSendErrorCode?) { Log.e(TAG, "發送失敗: $e") }
}

fun setWordTipsText(text: String, fileName: String): ValueUtil.CxrStatus? {
    return CxrApi.getInstance()
        .sendStream(ValueUtil.CxrStreamType.WORD_TIPS, text.toByteRokidray(), fileName, sendCallback)
}

SDK 官方機制允許分段發送文本,避免一次性發送大文本導致 UI 延遲。

2.3 配置提詞器顯示參數(字體/行間距/AI 模式/區域)

fun configWordTipsText(
    textSize: Float,
    lineSpace: Float,
    mode: String,  // "normal" 或 "ai"
    x: Int,
    y: Int,
    width: Int,
    height: Int
): ValueUtil.CxrStatus? {
    return CxrApi.getInstance()
        .configWordTipsText(textSize, lineSpace, mode, x, y, width, height)
}

三、AI 大模型賦能:SDK + ASR 的聯動設計

AI 模式核心接口:

fun sendWordTipsAsrContent(content: String): ValueUtil.CxrStatus? {
    return CxrApi.getInstance().sendAsrContent(content)
}
  1. 用户語音被 ASR 轉寫
  2. ASR 文本發送到眼鏡
  3. SDK 在本地根據 ASR 文本與提詞器內容匹配:

    • 匹配到段落末尾
  4. 若結合大模型,則可:

    • 對文本做摘要、重寫
    • 提取關鍵詞高亮
    • 修正口語化表達
    開發者只需傳遞大模型輸出的內容即可。建議對接通義大模型提供API服務
    在這裏插入圖片描述

    四、實戰經驗與優化策略

    以下是開發過程中最核心的工程經驗

    4.1 避免重複觸發:狀態鎖

    SDK 若連續收到相同指令可能進入 WAITING 狀態,因此需要本地狀態鎖。

private var isWordTipsOpen = false

fun toggleWordTips(open: Boolean) {
    if (isWordTipsOpen == open) return

    val status = openOrCloseWordTips(open)
    if (status == ValueUtil.CxrStatus.REQUEST_SUCCEED) {
        isWordTipsOpen = open
    }
}

減少重複請求,可顯著降低失敗率。

4.2 長文本→分段發送(實踐中非常關鍵)

fun sendTextInChunks(text: String, fileName: String, chunkSize: Int = 180) {
    var index = 0
    while (index < text.length) {
        val end = (index + chunkSize).coerceAtMost(text.length)
        setWordTipsText(text.substring(index, end), "$fileName-${index/chunkSize}")
        index += chunkSize
    }
}

作用:

  • 避免卡頓
  • 避免 sendStream 回調排隊

    4.3 ASR 觸發緩衝

    語音識別存在延遲,如無緩衝會導致“跳段”。

private var lastSentAsrIndex = 0

fun sendAsrContentOptimized(asrContent: String) {
    if (asrContent.length <= lastSentAsrIndex + 3) return

    val delta = asrContent.substring(lastSentAsrIndex)
    val status = sendWordTipsAsrContent(delta)
    if (status == ValueUtil.CxrStatus.REQUEST_SUCCEED) {
        lastSentAsrIndex = asrContent.length
    }
}

保留 3~5 字字符緩衝可非常平滑。

4.4 顯示參數動態調節:不同用户不同舒適區

fun adjustWordTipsLayout(
    textSize: Float = 28f,
    lineSpace: Float = 1.5f,
    mode: String = "ai",
    x: Int = 40,
    y: Int = 100,
    width: Int = 620,
    height: Int = 420
) {
    configWordTipsText(textSize, lineSpace, mode, x, y, width, height)
}

提升閲讀體驗效果極其顯著。

4.5 全鏈路穩定性:重試機制(藍牙/網絡波動必備)

fun sendTextWithRetry(text: String, fileName: String, maxRetry: Int = 3) {
    repeat(maxRetry) { i ->
        val status = setWordTipsText(text, fileName)
        if (status == ValueUtil.CxrStatus.REQUEST_SUCCEED) return
        Thread.sleep(150)
    }
    Log.e(TAG, "發送文本最終失敗")
}
Rokid 眼鏡使用藍牙鏈路,與手機連接時偶發丟包,因此務必使用重試策略。

五、典型應用場景:AI 驅動的智能表達輔助

提詞器場景在 Rokid 眼鏡中最大的價值,並不是“把文字顯示出來”,而是讓 AI 參與到表達過程,在直播、演講、創作等場景中成為用户的“隱藏助理”。以下從真實使用角度,説明該系統如何提升表達效率。
在這裏插入圖片描述

5.1 直播場景:AI 給出“即時回答參考”

在直播中,觀眾提問往往節奏快、內容雜,主播既要閲讀彈幕又要組織語言,非常容易出現延遲或表達混亂。智能提詞器讓流程變得順暢:

  • 觀眾提問 → 服務端 → 大模型生成參考答案
  • 答案自動被分段推送到眼鏡中
  • 主播抬眼即可看到“參考答法”
    這並不強制主播照念,而是提供一條結構化的表達路徑,例如:
    AI 提示格式:
  • 問題重點
  • 建議回答框架
  • 可補充的亮點信息
    主播保持自然表達,但準確性更高、思路更清晰。

5.2 演講場景:AI 自動生成“下一句提示”

演講稿通常較長,但演講時真正需要的只是“下一步要講什麼”。結合 ASR 的官方機制,大模型可以自動把長文本轉為 簡短提示,並在用户講話時顯示:

  • AI 自動提煉段落核心
  • 眼鏡中只顯示“下一句 / 下一點”
  • ASR 捕捉用户語音 → 自動推進進度
    這讓演講者能與觀眾保持眼神交流,而不必盯着稿子。整個過程更自然、節奏更平穩。

    5.3 內容創作錄製:AI 實時潤色口語表達

錄短視頻或口播時,創作者常常需要“説着説着重來”。智能提詞器可以幫助生成更自然的表達方式:

  • 用户初稿 → ASR → AI 自動優化
  • AI 輸出更簡潔、節奏更好的句子
  • 眼鏡顯示修改後的“最佳口播版本”
    創作者可以邊看提示邊説,大幅減少重拍次數。

    5.4 對話與會議:AI 給出“應答建議”

    在商務交流或多方對話中,AI 能根據對方話語生成 應答方向,例如:

  • 對方觀點總結
  • AI 建議的回覆框架
  • 可補充的數據或觀點
    用户只需輕掃視野即可掌握下一步的表達邏輯,既不搶話,也不出現空白停頓。
    通過將 Rokid 官方提詞器場景能力與大模型回答生成結合,提詞器從“顯示文本”升級為 實時表達輔助系統:
  • AI 幫你理解問題
  • AI 幫你組織答案
  • Rokid眼鏡幫你無感展示
    直播更穩、演講更順、拍攝更自然、對話更自信,自此進入 AI 輔助表達的新階段。

    六、總結:從工具到智能助理的演進

    通過 Rokid CXR-S SDK,我們構建了一個真正意義上的 AI 智能提詞器系統,包含:

  • 提詞器場景控制:場景開關、流式文本發送、佈局參數設置
  • ASR + 大模型聯動:內容糾錯、關鍵詞提示
  • 完整工程能力:分段發送、狀態鎖、重試機制
  • 高可擴展性:可進一步接入通義/千問等大模型增強稿件生成體驗
    最終效果:
    ✔ 演講/直播過程無需手動操作
    ✔ 文本可隨時更新,不會打斷視野
    ✔ 穩定、低延遲,可用於真實生產環境
    ✔ 大模型賦能,可調用大模型能力直接輔助回答觀眾的問題
    整體來看,Rokid眼鏡+AI大模型的組合,使提詞器從傳統輔助工具升級為智能內容提示系統,在演講、直播、短視頻創作等場景中大幅提升用户效率與流暢度。同時,該技術方案具備可擴展性,可結合多模態AI能力實現語音指令控制、情緒提示和實時稿件優化,為未來內容創作提供更智能的輔助工具。

在這裏插入圖片描述

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.