本文介绍如何在你的项目中集成和使用云上曲率实时语音转写&翻译(多语种)插件(以下简称云上曲率转写及翻译插件),包括 Android 和 iOS 平台。
云上曲率实时转写及翻译插件是对云上曲率实时语音识别和实时翻译核心 API 的封装。通过声网 SDK v4.x 提供的 setExtensionProperty 或 setExtensionPropertyWithVendor 方法,传入指定的 key
和 value
参数,你可以快速集成云上曲率的实时语音转写和翻译能力。
以 setExtensionProperty
为例,其中的 key
参数与云上曲率的 API 名称完全对应,value
参数以 JSON 格式包装该 API 的部分或全部参数。因此,调用 setExtensionProperty
时只要传入指定的 key
和 value
,就可以调用对应的云上曲率 API,实现实时语音转写和翻译的有关功能。setExtensionPropertyWithVendor
同理。
支持的 key 详见插件的 key 概览。
平台 | 语言 | 示例项目 |
---|---|---|
Android | Java | rtvt-agora-marketplace |
iOS | Objective-C | rtvt-agora-marketplace |
Android
git clone https://github.com/highras/rtvt-agora-marketplace.git
iOS
git clone https://github.com/highras/rtvt-agora-marketplace.git
iOS/SW_Test
目录,运行以下命令使用 CocoaPods 安装依赖: pod install
SW_Test.xcworkspace
。运行成功后,示例项目会安装到你的 Android 或 iOS 设备上。
云上曲率转写及翻译插件需要与声网音频 SDK v4.x 搭配使用。参考以下文档集成音频 SDK v4.x 并实现基础的语音通话:
在声网控制台购买和激活云上曲率转写及翻译插件,保存好获取到的 appKey
和 appSecret
,后续初始化插件时需要用到。
参考如下步骤在你的项目中集成云上曲率转写及翻译插件:
Android
在声网云市场下载页面下载云上曲率转写及翻译插件的 Android 插件包。解压后,将所有 .aar
文件保存到项目文件夹的 /app/libs
路径。
打开 app/build.gradle
文件,在 dependencies
中添加如下行:
implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"])
iOS
在声网云市场下载页面下载云上曲率转写及翻译插件的 iOS 插件包。解压后,将所有 .framework
库文件保存到你的项目文件夹下。
在 Xcode 中添加动态库,确保 Embed 属性设置为 Embed & Sign。
以如下项目结构为例,你可以把库文件保存到 <ProjectName>
路径下。
.
├── <ProjectName>
├── <ProjectName>.xcodeproj
选中 TARGETS,依次点击 Build Settings、选中 All 视图、点击 Other Linker Flags,添加 -ObjC
。注意字母 O 和 C 需要大写,符号 -
请勿忽略。
确保项目中至少有一个 .mm
文件:插件库文件通过 Objective-C++ 语言实现,因此你的项目中需要至少有一个 .mm
后缀的源文件。你可以将任意一个 .m
后缀的文件修改为 .mm
。
下面介绍插件相关接口的调用流程。接口的参数解释详见接口说明。
Android
初始化声网 RtcEngine
时,调用 addExtension
加载插件,然后调用 enableExtension
启用插件。
RtcEngineConfig config = new RtcEngineConfig();
config.addExtension("agora-iLiveData-filter");
engine = RtcEngine.create(config);
engine.enableExtension("iLiveData", "RTVT", true);
iOS
初始化声网 AgoraRtcEngineKit
时,调用 enableExtensionWithVendor
启用插件。
AgoraRtcEngineConfig *config = [AgoraRtcEngineConfig new];
// 监听插件事件,用于接收 onEvent 回调
config.eventDelegate = self;
self.agoraKit = [AgoraRtcEngineKit sharedEngineWithConfig:config
delegate:self];
// 开启插件
[self.kit enableExtensionWithVendor:[iLiveDataSimpleFilterManager companyName]
extension:[iLiveDataSimpleFilterManager plugName]
enabled:YES];
Android
调用setExtensionProperty
指定 key 为 startAudioTranslation
,在 value 中以 JSON 格式传入 appKey
、appSecret
等参数。
JSONObject jsonObject = new JSONObject();
// 传入在声网控制台购买和激活插件后获取的 appKey
jsonObject.put("appKey", "80001000");
// 传入在声网控制台购买和激活插件后获取的 appSecret
jsonObject.put("appSecret", "qwerty");
// 传入源语言
jsonObject.put("srclang", "zh");
// 传入目标语言
jsonObject.put("dstLang", "en");
engine.setExtensionProperty(EXTENSION_VENDOR_NAME, EXTENSION_AUDIO_FILTER_VOLUME, "startAudioTranslation", jsonObject.toString());
iOS
调用 setExtensionPropertyWithVendor
,指定 key 为 startAudioTranslation
并在 value 中传入 appKey
和 appSecret
等参数。
NSDictionary * startDic = @{
// 传入在声网控制台购买和激活插件后获取的 appKey
@"appKey":<YOUR_APP_KEY>,
// 传入在声网控制台购买和激活插件后获取的 appSecret
@"appSecret":<YOUR_APP_SECRET>,
// 传入源语言
@"srcLanguage":@"zh",
// 传入目标语言
@"destLanguage":@"en"
};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:startDic options:NSJSONWritingPrettyPrinted error:nil];
NSString * jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[self.kit setExtensionPropertyWithVendor:[iLiveDataSimpleFilterManager companyName]
extension:[iLiveDataSimpleFilterManager plugName]
key:"startAudioTranslation"
value:jsonStr];
初始化成功后,云上曲率转写及翻译插件会通过 onEvent
回调返回转写和翻译结果。返回结果的含义详见 onEvent 回调。
Android
调用 setExtensionProperty
方法并指定 key 为 closeAudioTranslation
,结束云上曲率转写和翻译插件的使用。
engine.setExtensionProperty(EXTENSION_VENDOR_NAME, EXTENSION_AUDIO_FILTER_VOLUME, "closeAudioTranslation", "end");
iOS
调用 setExtensionPropertyWithVendor
方法并指定 key 为 closeAudioTranslation
,结束云上曲率转写和翻译插件的使用。
[self.kit setExtensionPropertyWithVendor:[iLiveDataSimpleFilterManager companyName]
extension:[iLiveDataSimpleFilterManager plugName]
key:"closeAudioTranslation"
value:"end"];
插件所有相关接口的参数解释详见接口说明。