AITranscriberManager 接口在客户端快速集成 AI 实时转录(语音转文字)与实时翻译功能。AITranscriberManager,您可以直接在客户端发起转录任务、接收识别结果并进行控制。相较于服务端接入方式,通过 SDK 接入无需自建后台调用云端 API,极大地简化了开发流程。AITranscriberManager 是管理 AI 转录功能的核心类,您需要通过 TRTCCloud 获取其实例。import com.tencent.liteav.transcriber.AITranscriberManager;TRTCCloud mTRTCCloud = TRTCCloud.sharedInstance(context);AITranscriberManager aiTranscriberManager = mTRTCCloud.getAITranscriberManager();
TRTCCloud *trtcCloud = [TRTCCloud sharedInstance];AITranscriberManager *manager = [trtcCloud getAITranscriberManager];
liteav::ITRTCCloud* trtcCloud = liteav::ITRTCCloud::getTRTCShareInstance();liteav::AITranscriberManager* manager = trtcCloud->getAITranscriberManager();
AITranscriberManager.AITranscriberListener listener = new AITranscriberManager.AITranscriberListener() {@Overridepublic void onRealtimeTranscriberStarted(String roomId, String transcriberRobotId) {// 转录已开启}@Overridepublic void onReceiveTranscriberMessage(String roomId, AITranscriberManager.TranscriberMessage message) {// 处理实时转录与翻译消息}@Overridepublic void onRealtimeTranscriberStopped(String roomId, String transcriberRobotId, int reason) {// 转录已停止}@Overridepublic void onRealtimeTranscriberError(String roomId, String transcriberRobotId, int error, String errorInfo) {// 处理实时转录服务错误信息}};aiTranscriberManager.addListener(listener);
- (void)onRealtimeTranscriberStarted:(NSString *)roomId transcriberRobotId:(NSString *)transcriberRobotId {// 转录已开启}- (void)onReceiveTranscriberMessage:(NSString *)roomId message:(TranscriberMessage *)message {// 处理实时转录与翻译消息}- (void)onRealtimeTranscriberStopped:(NSString *)roomId transcriberRobotId:(NSString *)transcriberRobotId reason:(NSInteger)reason {// 转录已停止}- (void)onRealtimeTranscriberError:(NSString *)roomId transcriberRobotId:(NSString *)transcriberRobotId error:(NSInteger)error errorInfo:(NSString *)errorInfo {// 处理实时转录服务错误信息}[manager addListener:self];
class MyTranscriberListener : public liteav::AITranscriberListener {public:void onRealtimeTranscriberStarted(const char* roomId, const char* transcriberRobotId) override {// 转录已开启}void onReceiveTranscriberMessage(const char* roomId, const liteav::TranscriberMessage& message) override {// 处理实时转录与翻译消息}void onRealtimeTranscriberStopped(const char* roomId, const char* transcriberRobotId, int reason) override {// 转录已停止}void onRealtimeTranscriberError(const char* roomId, const char* transcriberRobotId, int error, const char* errorInfo) override {// 处理实时转录服务错误信息}};MyTranscriberListener* listener = new MyTranscriberListener();manager->addListener(listener);
字段名 | 类型 | 说明 |
segmentId | String | 消息段的唯一标识 ID。可用于消息去重或排序。 |
speakerUserId | String | 说话用户的 ID。 |
sourceText | String | 识别出的源语言文本(Unicode 编码)。 |
translationTexts | Map/List | 翻译后的目标语言文本。 |
timestamp | long | 消息生成的 UTC 时间戳,单位:毫秒。 |
isCompleted | bool | 转录是否结束。 true: 表示该句话已说完,是最终结果。false: 表示该句话还在进行中,是中间结果(流式更新)。 |
TranscriberParams 参数对象,配置转录机器人 ID、源语言、目标翻译语言等信息,然后调用 startRealtimeTranscriber 开启服务。AITranscriberManager.TranscriberParams params = new AITranscriberManager.TranscriberParams();params.transcriberRobotId = "my_robot"; // 可选:指定机器人 IDparams.sourceLanguage = "zh"; // 源语言:中文params.translationLanguages = Arrays.asList("en", "ja"); // 可选:不填时仅发起转录,不进行翻译params.userIdsToTranscribe = Arrays.asList("userA"); // 可选:不填时表示转录房间内所有用户aiTranscriberManager.startRealtimeTranscriber(params);
TranscriberParams *params = [[TranscriberParams alloc] init];params.transcriberRobotId = @"my_robot"; // 可选:指定机器人 IDparams.sourceLanguage = @"zh"; // 源语言:中文params.translationLanguages = @[@"en", @"ja"]; // 可选:不填时仅发起转录,不进行翻译params.userIdsToTranscribe = @[@"userA"]; // 可选:不填时表示转录房间内所有用户[manager startRealtimeTranscriber:params];
liteav::TranscriberParams params;params.transcriberRobotId = "my_robot"; // 可选:指定机器人 IDparams.sourceLanguage = "zh"; // 源语言:中文const char* targetLangs[] = {"en", "ja"};params.translationLanguages = targetLangs; // 可选:不填时仅发起转录,不进行翻译params.translationLanguagesCount = 2;const char* transcribeUsers[] = {"userA"};params.userIdsToTranscribe = transcribeUsers; // 可选:不填时表示转录房间内所有用户params.userIdsToTranscribeCount = 1;manager->startRealtimeTranscriber(params);
参数字段 | 类型 | 必填 | 说明 |
transcriberRobotId | String | 否 | 转录机器人的唯一标识 ID。 单个转录任务场景下,如果不指定,SDK 会默认生成一个 ID,格式为 transcriber_${roomid}_robot_${userid}。若同时发起多个转录任务,需要指定的机器人 ID。 |
sourceLanguage | String | 是 | 源语言代码。 指定源音频的语言种类,请填写标准的语言代码(例如“zh”)。 |
translationLanguages | List/Array | 否 | 翻译目标语言代码列表。 如果需要翻译,请在此设置目标语言代码(例如“en”)。 |
userIdsToTranscribe | List/Array | 否 | 指定转录的用户 ID 列表。 如果不填,默认转录房间内所有用户的音频。 |
onRealtimeTranscriberStarted 回调,表示转录任务已成功开启,此时您将可以通过 onReceiveTranscriberMessage 回调接收实时转录翻译信息。onRealtimeTranscriberError 回调,表示转录任务开启失败,此时您可以根据具体错误码做出相应措施(详情见下方 服务端错误码详情)。stopRealtimeTranscriber 停止任务以释放资源。请传入启动时使用的机器人 ID。(若启动时未指定机器人 ID 会默认生成一个,填写为空即可停止该机器人任务。)aiTranscriberManager.stopRealtimeTranscriber("my_robot");
[manager stopRealtimeTranscriber:@"my_robot"];
manager->stopRealtimeTranscriber("my_robot");
onRealtimeTranscriberStopped 回调,表示转录任务已成功停止,此时您将不会再接收到新的转录消息。onRealtimeTranscriberError 回调,表示转录任务停止失败,此时您可以根据具体错误码做出相应措施(详情见下方 服务端错误码详情)。语言代码 | 语言名称 |
zh | 中文 |
en | 英语 |
vi | 越南语 |
ja | 日语 |
ko | 韩语 |
id | 印度尼西亚语 |
th | 泰语 |
pt | 葡萄牙语 |
tr | 土耳其语 |
ar | 阿拉伯语 |
es | 西班牙语 |
hi | 印地语 |
fr | 法语 |
ms | 马来语 |
fil | 菲律宾语 |
de | 德语 |
it | 意大利语 |
ru | 俄语 |
sv | 瑞典语 |
da | 丹麦语 |
no | 挪威语 |
AITranscriberManager 发起的中文和英文实时转录默认使用标准版语言引擎中的最新 16k_zh_en 中英大模型语音识别,相关计费说明参考 AI 智能识别计费说明。语言代码 | 语言名称 |
zh | 中文 |
en | 英语 |
es | 西班牙语 |
pt | 葡萄牙语 |
fr | 法语 |
de | 德语 |
ru | 俄语 |
ar | 阿拉伯语 |
ja | 日语 |
ko | 韩语 |
vi | 越南语 |
ms | 马来语 |
id | 印度尼西亚语 |
it | 意大利语 |
th | 泰语 |
错误码 | 含义 | 建议处理措施 |
2000 | 参数错误。 | 建议检查请求参数是否合法。 |
2002 | 任务不存在。 | 若是调用 stop 接口时返回,可忽略。 |
2026 | 转录服务(ASR/翻译服务)未开通。 | 请前往控制台开通相关服务。 |
3000 | 内部错误。 | 建议重试。 |
4003 | 任务正在退出。 | 若是调用 stop 接口时返回,可忽略。 |
5000 | 资源过载。 | 建议采用退避策略重试。 |
5001 | 并发受限。 | 请联系产品侧提升并发限制。 |
-102009 | 主播不在房间内。 | 建议确认主播状态后延迟重试。 |
-102005 | 房间不存在。 | 建议确认房间状态后延迟重试。 |
文档反馈