本文介绍如何在你的项目中集成和使用云知声口语评测(中/英)插件(以下简称“云知声评测插件”),包括 Android 和 iOS 平台。
云知声评测插件需要与声网视频 SDK v4.x 搭配使用。参考以下文档集成视频 SDK v4.x 并实现基础的视频通话:
在声网控制台购买和激活云知声评测插件,保存好获取到的 appKey
和 appSecret
,后续初始化插件时需要用到。
参考如下步骤在你的项目中集成云知声评测插件:
Android
.aar
文件保存到项目文件夹的 /app/libs
路径。app/build.gradle
文件,在 dependencies
中添加如下行:implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"])
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.alibaba:fastjson:1.1.72.android'
iOS
.framwork
库文件保存到你的项目文件夹下。以如下项目结构为例,你可以把库文件保存到 <ProjectName>
路径下。
.
├── <ProjectName>
├── <ProjectName>.xcodeproj
本节介绍插件相关接口的调用流程。接口的参数解释详见接口说明。
Android
初始化声网 RtcEngine
时,先调用 addExtension
,再调用 enableExtension
开启插件。
RtcEngineConfig config = new RtcEngineConfig();
config.addExtension("AgoraUnisoundExtension");
mRtcEngine = RtcEngine.create(config);
mRtcEngine.enableExtension("Unisound", "ASR_EVAL", enabled);
iOS
初始化声网 AgoraRtcEngine
时,调用 enableExtensionWithVendor
启用插件。
AgoraRtcEngineConfig *config = [AgoraRtcEngineConfig new];
config.eventDelegate = self;
self.agoraKit = [AgoraRtcEngineKit sharedEngineWithConfig:config
delegate:self];
[self.agoraKit enableExtensionWithVendor:@"Unisound"
extension:@"ASR_EVAL"
enabled:self.enable];
调用 setExtensionProperty
(Android)或setExtensionPropertyWithVendor
(iOS),指定 key 为 init_eval
。
Android
// 方便后续多次调用 setExtensionProperty
private void setExtensionProperty(String key, String property) {
mRtcEngine.setExtensionProperty("Unisound", "ASR_EVAL", key, property);
}
// 初始化插件
setExtensionProperty("init_eval", "{}");
iOS
[self.agoraKit
setExtensionPropertyWithVendor:@"Unisound"
extension:@"ASR_EVAL"
key:@"init_eval"
value:@"{}"];
调用 setExtensionProperty
(Android)或setExtensionPropertyWithVendor
(iOS),指定 key 为 start_eval
并在 value 中传入 appkey
等必填字段。
appkey
字段时,你需要拼接在控制台激活插件时获取的 appKey
和 appSecret
,拼接形式为 appKey@appSecret
。Android
try {
JSONObject jsonObject = new JSONObject();
// 传入在声网控制台激活插件后获取的 appKey 和 appSecret,形式为 appKey@appSecret
jsonObject.put("appkey", "<appKey@appSecret>");
jsonObject.put("mode", "word");
jsonObject.put("displayText", "Hello world");
jsonObject.put("audioFormat", "pcm");
jsonObject.put("eof", "end");
setExtensionProperty("start_eval", jsonObject.toString());
} catch (JSONException e) {
e.printStackTrace();
}
iOS
NSError *error;
NSData *data = [NSJSONSerialization dataWithJSONObject:@{
// 传入在声网控制台激活插件后获取的 appKey 和 appSecret,形式为 appKey@appSecret
@"appkey": <appKey@appSecret>,
@"mode": @"word",
@"displayText": @"Hello world",
@"audioFormat": @"pcm",
@"eof": @"end"
}
options:NSJSONWritingPrettyPrinted
error:&error];
[self.agoraKit
setExtensionPropertyWithVendor:@"Unisound"
extension:@"ASR_EVAL"
key:@"start_eval"
value:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]];
成功开始识别后,云知声插件会返回 onEvent(eval_result, "识别结果")
回调。
识别结果的 JSON 示例:
{
"result": {},
"area": "sh",
"time": "1551409712576231666",
"sid": "f4376e83-7ad0-4635-9812-bec949a2fa27",
"errcode": 0,
"errmsg": "ok"
}
各字段的解释详见 onEvent 回调。
需要结束识别时,调用 setExtensionProperty
(Android)或 setExtensionPropertyWithVendor
(iOS)方法并指定 key 为 stop_eval
。
Android
setExtensionProperty("stop_eval", "{}");
iOS
[self.agoraKit setExtensionPropertyWithVendor:@"Unisound"
extension:@"ASR_EVAL"
key:@"stop_eval"
value:@"{}"];
在 GitHub 上查看完整的示例代码和项目结构:
平台 | 语言 | 示例项目 | 示例代码文件 |
---|---|---|---|
Android | Java | Unisound/android | MainActivity.java |
iOS | Objective-C | Unisound/ios | ViewController.m |
Android
克隆仓库:
git clone https://github.com/AgoraIO-Community/AgoraMarketPlace.git
从声网云市场下载页面下载云知声口语评测(中/英)的 Android 插件包。解压后,将所有 .aar
文件保存到 Unisound/android/app/libs
路径。
在 Android Studio 中打开示例项目 Unisound/android
。
将项目与 Gradle 文件同步。
打开 Unisound/android/app/src/main/java/io/agora/rte/extension/unisound/example/Config.java
文件,进行如下修改:
<YOUR_APP_ID>
替换为你的 App ID。获取 App ID 请参考开始使用声网平台。<EVAL_APP_KEY>
中,以 appKey@appSecret
的形式填入你的 appKey
和 appSecret
。获取方式详见购买和激活插件。public interface Config {
// 待替换
String mAppId = "<YOUR_APP_ID>";
String mToken = null;
String mLicenseName = "<YOUR_LICENSE_NAME>";
String mAppKey = "<YOUR_APP_KEY>";
String mAppSecret = "<YOUR_APP_SECRET>";
// 待替换
String mEvalAppKey = "<EVAL_APP_KEY>";
}
连接一台 Android 真机(非模拟器),运行项目。
iOS
克隆仓库:
git clone https://github.com/AgoraIO-Community/AgoraMarketPlace.git
从声网云市场下载页面下载云知声口语评测(中/英)的 iOS 插件包。解压后,将所有 .framwork
库文件保存到 Unisound/ios/ExtensionExample
路径。
在终端中进入 Unisound/ios
目录,运行以下命令使用 CocoaPods 安装依赖:
pod install
在 Xcode 中打开项目 Unisound/ios/ExtensionExample.xcworkspace
。
打开 Config.h
文件,进行如下修改:
<YOUR_APP_ID>
替换为你的 App ID。获取 App ID 请参考开始使用声网平台。<EVAL_APP_KEY>
中,以 appKey@appSecret
的形式填入你的 appKey
和 appSecret
。获取方式详见购买和激活插件。// 待替换
NSString *const appID = @"<YOUR_APP_ID>";
NSString *const token = nil;
NSString *const license_name = @"<YOUR_LICENSE_NAME>";
NSString *const appkey = @"<YOUR_APP_KEY>";
NSString *const secret = @"<YOUR_SECRET>";
// 待替换
NSString *const eval_app_key = @"<EVAL_APP_KEY>";
连接一台 iOS 真机(非模拟器),运行项目。
运行成功后,示例项目会安装到你的 Android 或 iOS 设备上。
disableExtension
、Start ASR
、Start EVAL
按钮。Start EVAL
开始口语评测。此时 Start EVAL
按钮会变成 Stop EVAL
按钮。Stop EVAL
结束口语评测。插件所有相关接口的参数解释详见接口说明。