iOS&Mac

更新时间:2025-06-11 02:11:47

实时字幕功能为线上会议、在线教育等场景提供实时的语音转文字服务,这项功能可以帮助参会者更好的理解会议内容。DingRTC为您提供了实时字幕的功能。通过阅读本文,您可以了解iOS/Mac端集成实时字幕能力的方法。

一、集成说明

请集成3.8.0及以上版本的SDK。

二、实现字幕基本功能

1)在iOS/Mac端使用字幕功能前,业务服务端需对接完智能纪要功能,并通过StartCloudNote接口启动。

2)按照“快速入门”部分的说明,完成引擎的创建、加入频道、发布和订阅音视频流。

3)获取字幕管理器

DingRtcEngineSubtitleManager *subtitleEngine = [rtcEngine getSubtitleManager];

4)设置发言语言类型

[subtitleEngine setCurrentTranslateLanguages:@"zg"];

5)设置翻译语言列表

NSMutableSet<NSString *> *selectedTransLanguageIds;
[selectedTransLanguageIds addObject:@"zh"];
[subtitleEngine setCurrentTranslateLanguages:selectedTransLanguageIds.allObjects];

6)设置字幕监听器

// 实现字幕管理器委托协议
@interface MySubtitleDelegate : NSObject <DingRtcEngineSubtitleManagerDelegate>

@end

@implementation MySubtitleDelegate

// 语言列表更新回调
- (void)onLanguageListsUpdated {
    NSLog(@"Language lists updated. Please refresh the language list.");
}

// 字幕服务状态变化回调
- (void)onSubtitleServiceStatusChanged:(DingRtcSubtitleStatus)status {
    NSLog(@"Subtitle service status changed to: %d", status);
}

// 字幕消息回调
- (void)onSubtitleMessage:(DingRtcSubtitleMessage *)message {
    NSLog(@"Received subtitle message: %@", message.text);
}

@end

// 创建委托实例
MySubtitleDelegate *delegate = [[MySubtitleDelegate alloc] init];

// 设置字幕管理器的委托
[subtitleEngine setDelegate:delegate];

7)开启字幕

[subtitleEngine enableSubtitle:YES];

三、iOS/Mac接口说明

1)字幕管理器

@interface DingRtcEngineSubtitleManager : NSObject

/**
 * @ingroup OC_DingRtcEngineSubtitle
 * 
 * @since 3.8
 * @brief 设置字幕管理器监听器。
 * @param delegate  用于接收来自字幕管理器的事件
 */
- (void)setDelegate:(id<DingRtcEngineSubtitleManagerDelegate>_Nullable)delegate;

/**
 * @ingroup OC_DingRtcEngineSubtitle
 * 
 * @since 3.8
 * @brief 是否开启字幕。
 * @param enable
 * - 是否开启/关闭字幕。
 * - YES:开启字幕。
 * - NO:关闭字幕。
 * @return
 * - 0:成功;
 * - 非0:失败。
 */
- (int)enableSubtitle:(BOOL)enable;

/**
 * @ingroup OC_DingRtcEngineSubtitle
 *
 * @since 3.8
 * @brief 获取支持的发言语言列表
 * @return 发言语言列表
 */
- (NSArray<NSString *> * _Nullable)getSupportedSpeakLanguages;

/**
 * @ingroup OC_DingRtcEngineSubtitle
 *
 * @since 3.8
 * @brief 选择发言语言类型
 * @param language 发言语言类型
 * @return
 * - 0:成功;
 * - 非0:失败。
 */
- (int)setCurrentSpeakLanguage:(NSString * _Nonnull)language;

/**
 * @ingroup OC_DingRtcEngineSubtitle
 *
 * @since 3.8
 * @brief 获取支持的翻译语言列表
 * @return 翻译语言列表
 */
- (NSArray<NSString *> * _Nullable)getSupportedTranslateLanguages;

/**
 * @ingroup OC_DingRtcEngineSubtitle
 *
 * @since 3.8
 * @brief 选择翻译语言类型
 * @param languages 翻译语言类型
 * @return
 * - 0:成功;
 * - 非0:失败。
 */
- (int)setCurrentTranslateLanguages:(NSArray<NSString *> * _Nonnull)languages;

@end

2)字幕监听器

@protocol DingRtcEngineSubtitleManagerDelegate <NSObject>
@optional

/**
 * @ingroup OC_DingRtcEngineSubtitle
 * 
 * @since 3.8
 * @brief 语言列表更新回调通知。
 */
- (void)onLanguageListsUpdated;

/**
 * @ingroup OC_DingRtcEngineSubtitle
 *
 * @since 3.8
 * @brief 字幕服务状态变化通知。
 * @param status 字幕服务状态
 */
- (void)onSubtitleServiceStatusChanged:(DingRtcSubtitleStatus)status;

/**
 * @ingroup OC_DingRtcEngineSubtitle
 *
 * @since 3.8
 * @brief 字幕消息回调通知。
 * @param message 字幕消息
 */
- (void)onSubtitleMessage:(DingRtcSubtitleMessage*)message;

@end

3)相关数据类

typedef NS_ENUM(NSUInteger, DingRtcSubtitleStatus) {
    /** 字幕服务开启。 */
    DingRtcSubtitleStatusOpen = 0,
    /** 字幕服务关闭。 */
    DingRtcSubtitleStatusClose = 1,
    /** 字幕服务出错。 */
    DingRtcSubtitleStatusError = 2,
};

@interface DingRtcSubtitleMessage : NSObject

/** 字幕用户ID。 */
@property (nonatomic, copy) NSString * _Nonnull userId;
/** 字幕内容。 */
@property (nonatomic, copy) NSString * _Nonnull subtitle;
/** 字幕句子序列号。 */
@property (nonatomic, assign) uint64_t sentenceIndex;
/** 字幕句子结束标识。 */
@property (nonatomic, assign) BOOL sentenceEnd;
/** 是否翻译字幕标识。 */
@property (nonatomic, assign) BOOL translate;
/** 字幕语言类型。 */
@property (nonatomic, copy) NSString * _Nonnull language;
/** 字幕句子开始时间。 */
@property (nonatomic, assign) uint64_t beginTime;
/** 字幕句子结束时间。 */
@property (nonatomic, assign) uint64_t endTime;

@end
  • 本页导读 (0)
  • 一、集成说明
  • 二、实现字幕基本功能
  • 三、iOS/Mac接口说明
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问