使用说明
本文介绍如何在你的项目中集成和使用云上曲率实时语音转写&翻译(多语种)插件(以下简称云上曲率转写及翻译插件)。
技术原理
云上曲率转写及翻译插件是对云上曲率实时语音识别和实时翻译核心 API 的封装。通过声网 SDK v4.x 提供的 setExtensionPropertyWithVendor
方法,传入指定的 key
和 value
参数,你可以快速集成云上曲率的实时语音转写和翻译能力。
setExtensionPropertyWithVendor
方法的 key
参数与云上曲率的 API 名称完全对应,value
参数以 JSON 格式包装该 API 的部分或全部参数。因此,调用该方法时只要传入指定的 key
和 value
,就可以调用对应的云上曲率 API,实现实时语音转写和翻译的有关功能。
前提条件
iOS 开发环境需满足以下要求:
- Xcode 9.0 或以上版本。
- 运行 iOS 9.0 或以上版本的真机(非模拟器)。
示例项目
云上曲率转写及翻译插件提供了 GitHub 示例项目,你可以前往克隆或下载并进行体验。
平台 | 语言 | 示例代码 |
---|---|---|
Android | Java | rtvt-agora-marketplace |
iOS | Objective-C | rtvt-agora-marketplace |
运行步骤
参考以下步骤快速跑通示例项目:
-
克隆仓库:
Shellgit clone https://github.com/highras/rtvt-agora-marketplace.git
-
在终端中进入
iOS/SW_Test
目录,运行以下命令使用 CocoaPods 安装依赖:Shellpod install
-
在 Xcode 中打开示例项目
SW_Test.xcworkspace
。 -
连接一台 iOS 真机(非模拟器),运行项目。
预期效果
运行成功后,示例项目会安装到你的设备上。按照如下步骤体验美化特效功能:
- 启动 App,在屏幕下方的输入框中填写频道名称,点击加入。成功加入频道后,加入按钮会变成离开按钮。
- 点击开始翻译,对着设备说话,你可以在屏幕上看到实时转写内容和翻译内容。
- 点击结束翻译,结束转写和翻译。
- 点击结束插件,停止使用插件。
集成和调用流程
1. 集成 SDK 和插件
开始前,你需要在项目中分别集成声网音频 SDK 和云上曲率转写及翻译插件。
1.1 集成声网音频 SDK
插件需要与 RTC SDK 搭配使用。参考以下文档集成 RTC SDK 并实现基础的音视频互动:
1.2 购买和激活插件
你需要进入声网控制台 > 云市场页面,按照提示购买云上曲率转写及翻译插件,保存好获取到的 appKey
和 appSecret
,后续初始化插件时需要用到。
1.3 集成插件
参考以下步骤集成插件:
-
进入声网控制台 > 云市场页面,下载云上曲率转写及翻译插件的 iOS 插件包。解压后,将所有
.framework
库文件保存到你的项目文件夹下。以如下项目结构为例,你可以把库文件保存到<ProjectName>
路径下。Shell.
├── <ProjectName>
├── <ProjectName>.xcodeproj -
在 Xcode 中添加动态库,确保 Embed 属性设置为 Embed & Sign。
-
选中 TARGETS,依次点击 Build Settings、选中 All 视图、点击 Other Linker Flags,添加
-ObjC
。注意字母 O 和 C 需要大写,符号
-
请勿忽略。 -
确保项目中至少有一个
.mm
文件:插件库文件通过 Objective-C++ 语言实现,因此你的项目中需要至少有一个.mm
后缀的源文件。你可以将任意一个.m
后缀的文件修改为.mm
。
1.4 升级插件
声网云市场推荐你更新插件版本前使用数据库工具 (如 SQLite) 来实现插件版本管理,从而确保插件版本与对应的资源包版本一致。因为当插件版本和资源包版本未对齐时,会出现 App 闪退、崩溃等现象。
以下是用 SQLite 来进行插件版本管理的示例:
- 使用 SQLite 数据库自行维护插件包和资源包的版本信息。
- 每次项目初始化时,自动检测当前项目使用的资源包版本:
- 如果无记录文件或记录的资源包版本为旧,则更新资源。成功更新后,回写最新资源包版本信息到 SQLite。
- 如果记录的资源包版本与当前匹配,则正常实现业务。
如果你的项目已经集成过声网云市场提供的第三方插件,并需要更新插件,可以参考以下步骤来保证更新后的可用性。
以下升级流程以相芯美颜特效插件为例:
-
参考集成插件章节下载所需平台最新版本的插件包和资源包。
-
删除项目内旧版本的插件包及其资源包后,再将新版插件和资源包放入对应位置。或者直接在对应目录下用新版插件和资源包替换旧版。
-
删除设备上用老版本插件和资源包编译的 App,重新编译你的项目并运行。
编译 App 时,系统会优先使用连接设备上存在的资源包。请务必在删除旧版本应用程序后再进行编译和运行,否则可能会出现插件版本与资源包不匹配的情况,从而导致各种意外问题。
2. 启用插件
初始化 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];
3. 开始转写和翻译
调用 setExtensionPropertyWithVendor
指定 key
为 startAudioTranslation
,在 value
中以 JSON 格式传入 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];
4. 接收转写和翻译结果
初始化成功后,云上曲率转写及翻译插件会通过 onEvent
回调返回转写和翻译结果。返回结果的含义详见 onEvent 回调。
5. 结束使用插件
调用 setExtensionPropertyWithVendor
方法并指定 key
为 closeAudioTranslation
,结束云上曲率转写和翻译插件的使用。
[self.kit setExtensionPropertyWithVendor:[iLiveDataSimpleFilterManager companyName]
extension:[iLiveDataSimpleFilterManager plugName]
key:"closeAudioTranslation"
value:"end"];