本文介绍如何在你的项目中集成和使用云知声实时语音转写(中/英)插件(以下简称“云知声实时转写插件”),包括 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
时,调用 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_asr
并在 value 中传入 appkey
和 secret
。
Android
// 方便后续多次调用 setExtensionProperty
private void setExtensionProperty(String key, String property) {
mRtcEngine.setExtensionProperty("Unisound", "ASR_EVAL", key, property);
}
// 初始化插件
try {
JSONObject jsonObject = new JSONObject();
// 传入在声网控制台激活插件后获取的 appKey
jsonObject.put("appkey", "<Your appKey>");
// 传入在声网控制台激活插件后获取的 appSecret
jsonObject.put("secret", "<Your appSecret>");
setExtensionProperty("init_asr", jsonObject.toString());
} catch (JSONException e) {
Log.e(TAG, e.toString());
}
iOS
NSError *error;
NSData *data = [NSJSONSerialization dataWithJSONObject:@{
// 传入在声网控制台激活插件后获取的 appKey
@"appkey": <Your appKey>,
// 传入在声网控制台激活插件后获取的 appSecret
@"secret": <Your appSecret>
}
options:NSJSONWritingPrettyPrinted
error:&error];
[self.agoraKit
setExtensionPropertyWithVendor:@"Unisound"
extension:@"ASR_EVAL"
key:@"init_asr"
value:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]];
调用 setExtensionProperty
(Android)或 setExtensionPropertyWithVendor
(iOS),指定 key 为 start_asr
。你还可以设置识别的领域、语言、采样率等,详见 key-value 列表。
Android
setExtensionProperty("start_asr", "{}");
iOS
[self.agoraKit setExtensionPropertyWithVendor:@"Unisound"
extension:@"ASR_EVAL"
key:@"start_asr"
value:@"{}"];
成功开始识别后,云知声插件会返回 onEvent(asr_result, "识别结果")
回调。
识别结果的 JSON 示例:
{
"code": 0,
"msg": "success",
"sid": "requestid",
"type": "fixed",
"text": "不断提升自己,在学习的过程中,让他明白生命的本质是过活简单平凡而有意义的日子。另一个分享者是一名27岁的it男,2015年到朋友圈晒的都是打王者的战绩,而2018年却什么也没有发。",
"start_time": 58860,
"end_time": 70500
}
各字段的解释详见 onEvent 回调。
需要结束识别时,调用 setExtensionProperty
(Android)或 setExtensionPropertyWithVendor
(iOS)方法并指定 key 为 stop_asr
。
Android
setExtensionProperty("stop_asr", "{}");
iOS
[self.agoraKit setExtensionPropertyWithVendor:@"Unisound"
extension:@"ASR_EVAL"
key:@"stop_asr"
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 请参考开始使用声网平台。<YOUR_APP_KEY>
和 <YOUR_APP_SECRET>
分别替换为你的 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 请参考开始使用声网平台。<YOUR_APP_KEY>
和 <YOUR_APP_SECRET>
分别替换为你的 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 ASR
开始语音转写。此时 Start ASR
按钮会变成 Stop ASR
按钮。Stop ASR
结束语音转写。插件所有相关接口的参数解释详见接口说明。