使用说明
本文介绍如何在你的项目中集成和使用标贝声音转换插件。
技术原理
标贝声音转换插件是对离线实时语音转换核心 API 的封装。通过声网 SDK v4.x 提供的 setExtensionPropertyWithVendor
方法,传入指定的 key
和 value
参数,你可以快速集成标贝的离线实时语音转换能力。
setExtensionPropertyWithVendor
方法的 key
参数与标贝的 API 名称完全对应,value
参数以 JSON 格式包装该 API 的部分或全部参数。因此,调用该方法时只要传入指定的 key
和 value
,就可以调用对应的标贝 API,实现离线实时语音转换的有关功能。
前提条件
iOS 开发环境需满足以下要求:
- Xcode 或以上版本。
- 运行 iOS 或以上版本的真机(非模拟器)。
示例项目
标贝声音转换插件提供了 GitHub 示例项目,你可以前往克隆或下载并进行体验。
平台 | 语言 | 示例项目 |
---|---|---|
Android | Java | 项目地址 |
iOS | Swift | 项目地址 |
运行步骤
参考以下步骤快速跑通示例项目:
-
克隆仓库:
Shellgit clone https://github.com/data-baker/DBOfflineVoiceConversionFilter.git
-
在 Xcode 中打开示例项目
OfflineVoiceConversion_iOS
。 -
将
DataBakerOfflineVC.xcframework
保存到项目中。 -
打开
KeyCenter.swift
文件,进行如下修改:- 填入你的 App ID。获取 App ID 请参考开通服务。
- 填入你购买插件后收到的
clientId
和clientSecret
。
Swift// 填入你的声网 App ID
static let AppId: String = "xxx"
// 填入购买插件后收到的 clientId 和 clientSecret
static let clientId = "xxx"
static let clientSecret = "xxx" -
连接一台 iOS 真机(非模拟器),运行项目。
预期效果
运行成功后,示例项目会安装到你的设备上。按照如下步骤体验转换音色功能:
- 启动 App,输入频道名后,进入插件系统成功后可以看到插件开关、音色列表按钮。
- 点击插件开关,可以控制插件。
- 点击音色列表后切换对应的转换音色。
集成和调用流程
1. 集成 SDK 和插件
开始前,你需要在项目中分别集成声网音频 SDK 和标贝声音转换插件。
1.1 使用声网 SDK 实现语音通话
标贝声音转换插件需要与声网音频 SDK v4.x 搭配使用。参考以下文档集成音频 SDK v4.x 并实现基础的语音通话:
标贝声音转换插件支持声网 SDK v4.1.1 或以上版本。
1.2 购买和激活插件
你需要进入声网控制台 > 云市场页面,按照提示购买标贝声音转换插件。随后你会收到一对 clientId 和 clientSecret,用于后续调用 API 完成鉴权。
1.3 集成插件
参考以下步骤集成插件:
-
进入声网控制台 > 云市场页面,下载标贝声音转换的 iOS 插件动态库压缩包。
-
解压文件夹,将
DataBakerOfflineVC.xcframework
保存到.xcodeproj
路径下。 -
导入需要用到的头文件:
Objective-Cimport DataBakerOfflineVC
1.4 升级插件
声网云市场推荐你更新插件版本前使用数据库工具 (如 SQLite) 来实现插件版本管理,从而确保插件版本与对应的资源包版本一致。因为当插件版本和资源包版本未对齐时,会出现 App 闪退、崩溃等现象。
以下是用 SQLite 来进行插件版本管理的示例:
- 使用 SQLite 数据库自行维护插件包和资源包的版本信息。
- 每次项目初始化时,自动检测当前项目使用的资源包版本:
- 如果无记录文件或记录的资源包版本为旧,则更新资源。成功更新后,回写最新资源包版本信息到 SQLite。
- 如果记录的资源包版本与当前匹配,则正常实现业务。
如果你的项目已经集成过声网云市场提供的第三方插件,并需要更新插件,可以参考以下步骤来保证更新后的可用性。
以下升级流程以相芯美颜特效插件为例:
-
参考集成插件章节下载所需平台最新版本的插件包和资源包。
-
删除项目内旧版本的插件包及其资源包后,再将新版插件和资源包放入对应位置。或者直接在对应目录下用新版插件和资源包替换旧版。
-
删除设备上用老版本插件和资源包编译的 App,重新编译你的项目并运行。
编译 App 时,系统会优先使用连接设备上存在的资源包。请务必在删除旧版本应用程序后再进行编译和运行,否则可能会出现插件版本与资源包不匹配的情况,从而导致各种意外问题。
2. 启用插件
创建并初始化 AgoraRtcEngineKit
后,首先调用 enableExtensionWithVendor
启用插件,再调用其它 API(enableVideo
、joinChannelByToken
等)。
agoraKit.enableExtension(withVendor: DBVoiceConvertFilterManager.vendorName(), extension: AUDIO_FILTER_NAME, enabled: true)
3. 设置鉴权
收到声网 SDK 的 onExtensionStarted
回调后,调用 setExtensionPropertyWithVendor
并传入对应的 key
和 value
。
离线声音转换的鉴权方式是按照装机量进行授权的,需要传入你购买插件后获取的 clientId
和 clientSecret
。
let authorInfo = [
"clientId":clientId,
"clientSecret":clientSecret,
"voiceName":voiceName
]
let isValid = JSONSerialization.isValidJSONObject(authorInfo)
guard isValid else {
print("the Author json is invalid")
return
}
let jsonString = getJSONStringFromDictionary(dictionary: authorInfo as NSDictionary)
agoraKit.setExtensionPropertyWithVendor(DBVoiceConvertFilterManager.vendorName(), extension: AUDIO_FILTER_NAME, key: "authors", value: jsonString)
4. 开始转换
传入 key
为 enable
,开始进行声音转换。
agoraKit.setExtensionPropertyWithVendor(DBVoiceConvertFilterManager.vendorName(), extension: AUDIO_FILTER_NAME, key: "enable", value: value)
5. 切换音色
你还可以根据需要,切换用户使用的音色。
agoraKit.setExtensionPropertyWithVendor(DBVoiceConvertFilterManager.vendorName(), extension: AUDIO_FILTER_NAME, key: "voiceName", value: value)