AI Real-Time Subtitles

功能介绍

接入 TUIRoomKit 后,您可以通过点击底部栏的 "AI 助手" 开启 AI 实时字幕功能,该功能可实现:
AI 实时字幕:将会议过程中的讨论内容以字幕形式进行显示。
AI 实时会议记录:将会议过程中的讨论内容以文字形式记录下来。
注意:
使用该功能需开通 TUIRoomKit 包月套餐。除了正常通话费用(音视频时长计费说明);该功能进行语音转文本时,会产生额外的 AI 智能识别费用,详情请参考 AI 智能识别计费说明




功能接入

步骤1: 开启本地后台服务

注意:
开启 AI 转录需要用到用户的云 id 与 key,敏感度较高,因此不在客户端集成此接口,您需要自己在您的业务后台增加 StartAITranscription 相关代码,此处以 Nodejs 服务为例,如果您的后台服务为其它语言,可点击调试,生成对应语言事例代码。
开启 Nodejs 后台服务,客户端监听用户进房,通过 http 请求打开 AI 转录任务,示例代码:点击下载
require('dotenv').config();
const express = require('express');
const tencentcloud = require('tencentcloud-sdk-nodejs-trtc');
const cors = require('cors')

const TrtcClient = tencentcloud.trtc.v20190722.Client;

// 从环境变量中获取腾讯云账户 SecretId 和 SecretKey
// 入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。
// 以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
const secretId = process.env.TENCENT_SECRET_ID || '';
const secretKey = process.env.TENCENT_SECRET_KEY || '';
const region = process.env.TENCENT_REGION || '';

const clientConfig = {
credential: {
secretId: secretId,
secretKey: secretKey,
},
region: region,
profile: {
httpProfile: {
endpoint: 'trtc.tencentcloudapi.com',
},
},
};

const client = new TrtcClient(clientConfig);

const app = express();
app.use(express.json());
app.use(cors());
app.post('/start', async (req, res) => {
const { SdkAppId, RoomId, RoomIdType = 1, UserId, UserSig } = req.body;
const params = {
SdkAppId: SdkAppId,
RoomId: RoomId,
RoomIdType: RoomIdType,
TranscriptionParams: {
UserId: UserId,
UserSig: UserSig,
},
};

try {
const data = await client.StartAITranscription(params);
console.log('success',data)
res.status(200).json(data);
} catch (err) {
console.error('error', err);
res.status(500).json({ error: err.message });
}
});

app.post('/stop', async (req, res) => {
const { TaskId } = req.body;

try {
const data = await client.StopAITranscription({ TaskId: TaskId });
res.status(200).json(data);
} catch (err) {
console.error('error', err);
res.status(500).json({ error: err.message });
}
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});

步骤2: Roomkit 开启 AI 助手功能

注意:
Roomkit 仅进行 AI字幕/会议总结 的数据处理,实际 ASR 的开启时机是客户端用户进房,此处您可根据自己的业务需求调整时机。
<template>
<conference-main-view display-mode="permanent"></conference-main-view>
</template>
<script setup lang="ts">
import { roomService } from '@tencentcloud/roomkit-web-vue3';
// 在 conference-main-view 组件 onmounted 之前调用
roomService.setComponentConfig({ AIControl: { visible: true } });
</script>




步骤3:Roomkit 监听用户进房,调用 node 服务,开启 AI 转录。

<template>
<conference-main-view display-mode="permanent"></conference-main-view>
</template>
<script setup lang="ts">
import { conference } from '@tencentcloud/roomkit-web-vue3';
import { startAITranscription } from '../http';
const handleAITask = (data: {roomId: string}) => {
const { roomId } = data;
startAITranscription({
RoomId: roomId,
UserId: 'robot', // 此处需要一个机器人用户,以 robot 为例,此处不能与房间内用户的 userId 一样,建议使用 robot
UserSig: 'xxx', // robot 对应的 userSig
SdkAppId: sdkAppId,
RoomIdType: 1, // 房间类型为字符串房间
});
};
conference.on(RoomEvent.ROOM_JOIN, handleAITask);
conference.on(RoomEvent.ROOM_START, handleAITask);
onUnmounted(() => {
conference.off(RoomEvent.ROOM_JOIN, handleAITask);
conference.off(RoomEvent.ROOM_START, handleAITask);
});
</script>


// http.ts
import axios from 'axios';
const http = axios.create({
baseURL: 'http://localhost:3000', // 您的 Node.js 服务地址
timeout: 10000, // 请求超时时间
});

interface TranscriptionParams {
SdkAppId: number;
RoomId: string;
RoomIdType?: number;
UserId: string;
UserSig: string;
}

interface StopParams {
TaskId: string;
}

// 启动 AI 转写任务
export function startAITranscription(params: TranscriptionParams) {
return http.post('/start', params);
}

// 停止 AI 转写任务
export function stopAITranscription(params: StopParams) {
return http.post('/stop', params);
}
说明:
如果您在接入和使用过程有任何需要或者反馈,您可以联系:info_rtc@tencent.com。