实时字幕功能为线上会议、在线教育等场景提供实时的语音转文字服务,这项功能可以帮助参会者更好的理解会议内容。DingRTC为您提供了实时字幕的功能。通过阅读本文,您可以了解Windows端集成实时字幕能力的方法。
一、集成说明
请集成3.8.0及以上版本的SDK。
二、实现字幕基本功能
1)在Android端使用字幕功能前,业务服务端需对接完智能纪要功能,并通过StartCloudNote接口启动。
2)按照“快速入门”部分的说明,完成引擎的创建、加入频道、发布和订阅音视频流。
3)获取字幕管理器
ding::rtc::RtcEngineSubtitleManager *subtitleEngine = rtcEngine->GetSubtitleManager();
4)设置发言语言类型
subtitleEngine->SetCurrentSpeakLanguage("zh");
5)设置翻译语言列表
int languageSize = 1;
const char **langs_c = (const char **) malloc(sizeof(char *) * (languageSize + 1));
langs_c[0] = "zh";
subtitleEngine->SetCurrentTranslateLanguages(langs_c, languageSize);
6)设置字幕监听器
// 实现字幕观察者接口
class MySubtitleObserver : public ding::rtc::RtcEngineSubtitleObserver {
public:
// 语言列表更新回调
void OnLanguageListsUpdated() override {
std::cout << "Language lists updated. Please refresh the language list." << std::endl;
}
// 字幕服务状态变化回调
void OnSubtitleServiceStatusChanged(ding::rtc::RtcEngineSubtitleStatus status) override {
std::cout << "Subtitle service status changed to: " << static_cast<int>(status) << std::endl;
}
// 字幕消息回调
void OnSubtitleMessage(const ding::rtc::RtcEngineSubtitleMessage &message) override {
std::cout << "Received subtitle message: " << message.text << std::endl;
}
};
MySubtitleObserver* observer = new MySubtitleObserver();
subtitleManager->RegisterSubtitleObserver(observer);
7)开启字幕
subtitleEngine->EnableSubtitle(true);
三、Windows C++接口说明
1)字幕管理器
class RtcEngineSubtitleManager {
public:
/*!
* @ingroup CPP_DingRtcEngineSubtitle
* @since 3.8
* @brief 字幕语言枚举回调
* @param context 用户自定义上下文
* @param language 语言类型
* @return 返回true继续, 返回false停止
*/
using EnumLanguageCallback = bool(*) (void *context, const char *language);
/**
* @ingroup CPP_DingRtcEngineSubtitle
* @since 3.8
* @brief 枚举支持的发言语言列表。
* @param cb 回调函数
* @param context 用户自定义上下文, 在回调函数中返回给用户
*/
virtual void EnumerateSpeakLanguages(EnumLanguageCallback cb, void *context) const = 0;
/**
* @ingroup CPP_DingRtcEngineSubtitle
* @since 3.8
* @brief 选择发言语言类型。
* @param language 语言类型。
* @return
* - 0:成功;
* - 非0:失败。
*/
virtual int SetCurrentSpeakLanguage(const char *language) = 0;
/**
* @ingroup CPP_DingRtcEngineSubtitle
* @since 3.8
* @brief 枚举支持的翻译语言列表。
* @param cb 回调函数
* @param context 用户自定义上下文, 在回调函数中返回给用户
*/
virtual void EnumerateTranslateLanguages(EnumLanguageCallback cb, void *context) const = 0;
/**
* @ingroup CPP_DingRtcEngineSubtitle
* @since 3.8
* @brief 选择翻译语言类型。
* @param languages 语言类型数组。
* @param number 语言类型数量。
* @return
* - 0:成功;
* - 非0:失败。
*/
virtual int SetCurrentTranslateLanguages(const char *languages[], int number) = 0;
/**
* @ingroup CPP_DingRtcEngineSubtitle
* @since 3.8
* @brief 注册字幕观察类对象。
* @param observer 字幕观察类对象指针。
* @return
* - 0:成功;
* - 非0:失败。
* @note 要移除observer,调用RegisterSubtitleObserver(NULL)。
*/
virtual int RegisterSubtitleObserver(RtcEngineSubtitleObserver *observer) = 0;
/**
* @ingroup CPP_DingRtcEngineSubtitle
* @since 3.8
* @brief 是否开启字幕。
* @param enable
* - 是否开启/关闭字幕。
* - true:开启字幕。
* - false:关闭字幕。
* @return
* - 0:设置成功;
* - <0:设置失败,返回错误码。
* @note SDK默认设置不开启字幕。在开启字幕前,请调用字幕管理类接口进行设置。
*/
virtual int EnableSubtitle(bool enable) = 0;
};
2)字幕监听器
class RtcEngineSubtitleObserver {
public:
virtual ~RtcEngineSubtitleObserver() {}
/**
* @brief 语言列表更新回调。
* @details 语言列表有更新时,通过此接口通知到业务层重新获取语言列表。
* @since 3.8
*/
virtual void OnLanguageListsUpdated() = 0;
/**
* @brief 字幕服务状态变化通知。
* @details 字幕服务状态有变化时,通过此接口回调到业务层。
* @param status 字幕服务状态,详见{@link RtcEngineSubtitleStatus}。
* @since 3.8
*/
virtual void OnSubtitleServiceStatusChanged(RtcEngineSubtitleStatus status) = 0;
/**
* @brief 字幕消息回调。
* @details 所有字幕消息都通过此接口回调到业务层。
* @param message 字幕消息,详见{@link RtcEngineSubtitleMessage}。
* @since 3.8
*/
virtual void OnSubtitleMessage(const RtcEngineSubtitleMessage &message) = 0;
}
3)相关数据类
enum RtcEngineSubtitleStatus {
/** 字幕服务开启。 */
RtcEngineSubtitleStatusOpen = 0,
/** 字幕服务关闭。 */
RtcEngineSubtitleStatusClose = 1,
/** 字幕服务出错。 */
RtcEngineSubtitleStatusError = 2
};
struct RtcEngineSubtitleMessage {
/** 字幕用户ID。 */
const char* userId = nullptr;
/** 字幕内容。 */
const char* subtitle = nullptr;
/** 字幕句子序列号。 */
uint64_t sentenceIndex = 0;
/** 字幕句子结束标识。 */
bool sentenceEnd = false;
/** 翻译字幕标识。 */
bool translate = false;
/** 字幕语言类型。 */
const char* language = nullptr;
/** 字幕句子开始时间。 */
uint64_t beginTime = 0;
/** 字幕句子结束时间。 */
uint64_t endTime = 0;
};
该文章对您有帮助吗?
- 本页导读 (0)
- 一、集成说明
- 二、实现字幕基本功能
- 三、Windows C++接口说明