首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【征文计划】基于Rokid CXR-M SDK 打造AI 实时会议助手:从连接到自定义界面的完整实践

【征文计划】基于Rokid CXR-M SDK 打造AI 实时会议助手:从连接到自定义界面的完整实践

原创
作者头像
摘星.
发布2025-10-05 21:39:12
发布2025-10-05 21:39:12
1820
举报

【征文计划】基于Rokid CXR-M SDK 打造AI 实时会议助手:从连接到自定义界面的完整实践

摘要:本文基于 Rokid CXR-M SDK,详细阐述如何构建一个面向商务会议场景的“AI 实时会议助手”应用。通过手机端与 Rokid 智能眼镜的协同,实现语音转写、要点提炼、提词引导、多语翻译与会后纪要自动生成。文章涵盖从环境配置、蓝牙/Wi-Fi 连接、设备控制、AI 场景交互到自定义 UI 渲染的完整开发流程,并提供关键代码示例与最佳实践建议。

一、引言:为什么需要一个“AI 会议助手”?

在快节奏的职场环境中,会议是信息传递与决策的核心场景。然而,传统会议存在诸多痛点:

  • 信息遗漏:参会者忙于记录,无法专注倾听;
  • 语言障碍:跨国会议中实时翻译需求迫切;
  • 效率低下:会后整理纪要耗时耗力;
  • 操作干扰:频繁操作手机/电脑打断会议节奏。

Rokid 智能眼镜凭借其免手持、第一视角、低干扰的特性,天然适合作为会议信息的呈现终端。而 CXR-M SDK 正好提供了手机端与眼镜端协同开发的完整能力。本文将基于该 SDK,手把手教你构建一个真正可落地的“AI 实时会议助手”。

二、技术架构设计

我们的系统采用 “手机为大脑,眼镜为窗口” 的双端架构:

  • 手机端(Android App)
    1. 负责蓝牙/Wi-Fi 连接管理;
    2. 调用云端大模型进行 ASR(语音识别)、NLU(语义理解)、TTS(语音合成);
    3. 处理多语翻译、会议纪要生成;
    4. 通过 CXR-M SDK 与眼镜通信。
  • 眼镜端(Rokid Glasses)
    1. 接收并渲染实时转写文本、翻译字幕;
    2. 在用户发言时自动推送提词内容;
    3. 支持拍照记录白板、文档;
    4. 所有交互通过语音或功能键触发,无需手动操作。

核心优势:眼镜端无需开发原生应用,所有 UI 均通过 CXR-M SDK 的 自定义页面(Custom View) 动态生成。

三、开发环境准备

3.1 项目配置

在 settings.gradle.kts 中添加 Rokid Maven 仓库:

dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven { url = uri("https://maven.rokid.com/repository/maven-public/") } google() mavenCentral() } }

在 build.gradle.kts 中导入 SDK 依赖,并设置 minSdk = 28:

android { defaultConfig { minSdk = 28 } } dependencies { implementation("com.rokid.cxr:client-m:1.0.1-20250812.080117-2") // 其他依赖(如 Retrofit、OkHttp)按文档要求添加 }

SDK文档:https://custom.rokid.com/prod/rokid_web/57e35cd3ae294d16b1b8fc8dcbb1b7c7/pc/cn/9d9dea4799ca4dd2a1176fedb075b6f2.html?documentId=d2ba1c8040964577a43b394d8f7dc814

3.2 权限声明与动态申请

在 AndroidManifest.xml 中声明必要权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" />

在 MainActivity 中动态申请权限(关键代码):

private val REQUIRED_PERMISSIONS = mutableListOf( Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH, Manifest.permission.BLUETOOTH_ADMIN, ).apply { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { add(Manifest.permission.BLUETOOTH_SCAN) add(Manifest.permission.BLUETOOTH_CONNECT) } }.toTypedArray() override fun onCreate(savedInstanceState: Bundle?) { requestPermissions(REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS) }

⚠️ 注意:权限未授予时,SDK 将无法工作。

四、设备连接:蓝牙 + Wi-Fi 双通道

4.1 蓝牙连接(基础通道)

使用标准 Android Bluetooth API 扫描设备,并通过 Rokid 专属 UUID 过滤:

val scanFilter = ScanFilter.Builder() .setServiceUuid(ParcelUuid.fromString("00009100-0000-1000-8000-00805f9b34fb")) .build()

连接流程分为两步:

  1. 初始化蓝牙

CxrApi.getInstance().initBluetooth(context, device, callback)

  1. 建立连接(使用 onConnectionInfo 回调中的 socketUuid 和 macAddress):

CxrApi.getInstance().connectBluetooth(context, socketUuid, macAddress, callback)

连接成功后,可通过 isBluetoothConnected 实时监听状态。

4.2 Wi-Fi P2P 连接(高速通道)

Wi-Fi 用于传输图片、视频等大文件,需在蓝牙连接成功后初始化:

CxrApi.getInstance().initWifiP2P(object : WifiP2PStatusCallback { override fun onConnected() { Log.d("WiFi", "P2P connected") } override fun onFailed(errorCode: CxrWifiErrorCode?) { // 处理错误:如手机 Wi-Fi 未开启 } })

💡 最佳实践:Wi-Fi 模块高耗电,仅在需要同步媒体文件时开启,完成后立即 deinitWifiP2P()。

五、核心功能实现

5.1 实时语音转写与要点提炼

手机端流程:
  1. 通过 openAudioRecord(1, "meeting") 开启 PCM 格式录音;
  2. 将音频流发送至 ASR 服务(如讯飞、阿里云);
  3. 收到转写文本后,调用大模型提取关键信息(如待办事项、决策点)。
推送至眼镜:
  • 使用 自定义页面 动态更新转写内容:

[ { "action": "update", "id": "transcript_text", "props": { "text": "刚才提到Q3预算需增加20%..." } } ]

  • 若检测到“待办事项”,高亮显示:

{ "action": "update", "id": "todo_item", "props": { "text": "✅ 张三:周三前提交方案", "textColor": "#FF00FF00" } }

5.2 智能提词器(发言辅助)

当用户需要发言时,App 自动推送提纲:

  1. 打开提词器场景

CxrApi.getInstance().controlScene(CxrSceneType.WORD_TIPS, true, null)

  1. 配置显示参数(居中、大字体):

CxrApi.getInstance().configWordTipsText( textSize = 24f, lineSpace = 1.5f, mode = "normal", startPointX = 0, startPointY = 300, width = 1200, height = 600 )

  1. 发送提词内容

val script = "各位同事,关于新项目,我想强调三点..." CxrApi.getInstance().sendStream( CxrStreamType.WORD_TIPS, script.toByteArray(), "meeting_script.txt", callback )

5.3 实时多语翻译

  1. 打开翻译场景

CxrApi.getInstance().controlScene(CxrSceneType.TRANSLATION, true, null)

  1. 配置显示区域(底部居中):

CxrApi.getInstance().configTranslationText( textSize = 20, startPointX = 200, startPointY = 800, width = 800, height = 100 )

  1. 推送翻译结果(按 VAD 分段):

// vadId=1 表示第一段语音 CxrApi.getInstance().sendTranslationContent( vadId = 1, subId = 0, temporary = false, finished = true, content = "The budget needs to be increased by 20%." )

🌐 提示:眼镜端自动进入远场拾音模式,仅拾取他人语音。

5.4 白板/文档拍照与同步

  1. 触发拍照(通过功能键长按或语音指令):

// 在 AI 场景中拍照,结果通过蓝牙返回 CxrApi.getInstance().takeGlassPhoto(1920, 1080, 80, photoCallback)

  1. 监听未同步文件数量

CxrApi.getInstance().getUnsyncNum { _, _, pictureNum, _ -> if (pictureNum > 0) startSyncPictures() }

  1. 通过 Wi-Fi 同步图片

CxrApi.getInstance().startSync( savePath = getExternalFilesDir(Environment.DIRECTORY_PICTURES)?.absolutePath ?: "", types = arrayOf(CxrMediaType.PICTURE), callback = syncCallback )

六、自定义 UI:打造专属会议界面

CXR-M SDK 的 Custom View 是本项目的核心亮点。我们设计一个包含三区域的会议界面:

  • 顶部:会议标题与状态
  • 中部:实时转写/翻译
  • 底部:操作提示(如“长按拍照”)

6.1 初始化 JSON

{ "type": "LinearLayout", "props": { "layout_width": "match_parent", "layout_height": "match_parent", "orientation": "vertical", "backgroundColor": "#FF000000" }, "children": [ { "type": "TextView", "props": { "id": "title", "layout_width": "wrap_content", "layout_height": "wrap_content", "text": "Q3 项目评审会", "textSize": "18sp", "textColor": "#FF00FF00", "gravity": "center", "paddingTop": "50dp" } }, { "type": "TextView", "props": { "id": "content", "layout_width": "match_parent", "layout_height": "0dp", "layout_weight": "1", "text": "等待语音输入...", "textSize": "16sp", "textColor": "#FF00FF00", "gravity": "top|start", "padding": "30dp" } }, { "type": "TextView", "props": { "id": "hint", "layout_width": "wrap_content", "layout_height": "wrap_content", "text": "长按功能键拍照", "textSize": "12sp", "textColor": "#888888", "gravity": "center", "paddingBottom": "30dp" } } ] }

6.2 动态更新内容

fun updateTranscript(text: String) { val updateJson = """ [ { "action": "update", "id": "content", "props": { "text": "$text" } } ] """.trimIndent() CxrApi.getInstance().updateCustomView(updateJson) }

6.3 上传图标(可选)

如需显示状态图标(如麦克风、翻译标志),需提前上传 Base64 图片:

val icon = IconInfo("mic_icon", base64String) CxrApi.getInstance().sendCustomViewIcons(listOf(icon))

📏 限制:图片 ≤128×128px,建议使用纯绿色通道(#00FF00)以确保显示效果。

七、会后自动化:生成结构化纪要

会议结束后,App 自动整合以下内容:

  • 全程转写文本;
  • AI 提取的待办事项;
  • 拍摄的白板/文档图片;
  • 会议元数据(时间、参与人)。

最终生成 Markdown 格式纪要:

# Q3 项目评审会纪要 **时间**:2025-04-27 14:00 **参会人**:张三、李四、王五 ## 关键结论 - 预算增加 20% - 新功能上线延期至 6 月 ## 待办事项 - [ ] 张三:周三前提交详细方案 - [ ] 李四:联系供应商确认报价 ## 附件 ![白板](whiteboard_001.jpg)

支持一键分享至企业微信、钉钉或邮箱。

八、错误处理与用户体验优化

8.1 网络异常

  • 监听 ASR/TTS 失败,调用 notifyNoNetwork() 或 notifyAiError();
  • 眼镜端显示友好提示:“网络中断,请检查连接”。

8.2 设备状态监听

  • 实时监听电量、音量、亮度,自动调整:

CxrApi.getInstance().setBatteryLevelUpdateListener { level, charging -> if (level < 10 && !charging) { // 提示低电量 } }

8.3 会话管理

  • 会议开始时 setScreenOffTimeout(3600)(1小时不熄屏);
  • 会议结束时 notifyGlassShutdown() 节省电量。

九、总结与展望

本文完整展示了如何利用 Rokid CXR-M SDK 构建一个高价值的“AI 实时会议助手”。我们充分利用了 SDK 的以下能力:

  • 蓝牙/Wi-Fi 双通道连接;
  • AI 场景交互(ASR/TTS/拍照);
  • 提词器与翻译场景;
  • 自定义页面动态渲染;
  • 媒体文件同步。

该方案不仅技术可行,且直击用户痛点,具备极强的落地潜力。未来可进一步扩展:

  • 接入企业知识库,实现智能问答;
  • 支持多人眼镜协同,打造沉浸式会议空间;
  • 结合 AR 标注,实现远程协作指导。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【征文计划】基于Rokid CXR-M SDK 打造AI 实时会议助手:从连接到自定义界面的完整实践
    • 一、引言:为什么需要一个“AI 会议助手”?
    • 二、技术架构设计
    • 三、开发环境准备
      • 3.1 项目配置
      • 3.2 权限声明与动态申请
    • 四、设备连接:蓝牙 + Wi-Fi 双通道
      • 4.1 蓝牙连接(基础通道)
      • 4.2 Wi-Fi P2P 连接(高速通道)
    • 五、核心功能实现
      • 5.1 实时语音转写与要点提炼
      • 5.2 智能提词器(发言辅助)
      • 5.3 实时多语翻译
      • 5.4 白板/文档拍照与同步
    • 六、自定义 UI:打造专属会议界面
      • 6.1 初始化 JSON
      • 6.2 动态更新内容
      • 6.3 上传图标(可选)
    • 七、会后自动化:生成结构化纪要
    • 八、错误处理与用户体验优化
      • 8.1 网络异常
      • 8.2 设备状态监听
      • 8.3 会话管理
    • 九、总结与展望
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档