实时字幕功能为线上会议、在线教育等场景提供实时的语音转文字服务,这项功能可以帮助参会者更好的理解会议内容。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接口说明