DevStore首页 > DEV资源 > 服务评测下载 > 云知声安卓版V2.0.04服务评测

云知声安卓版V2.0.04服务评测

查看服务>>
DevStore编辑 刘艳丽 | 2015-04-22 14:23    浏览量(7285)    纠错    评论(6)    云知声服务详情>>

服务评测作者

  • 22 能力值
  • 5 源码
  • 6 评测
  • 0 资料

评测目录

集成测试

评测环境

3G网络下:


测试对象

云知声服务

测试版本

usc_android_common_sdk_v2.0.04

测试环境

Win7+Eclipse

测试手机

三星手机

系统版本

Android4.0

手机网络

3G

测试时长

30分钟

测试时间

2015年3月17日18:30-2015年3月17日19:00


wifi网络下:

测试对象

云知声服务

测试版本

usc_android_common_sdk_v2.0.04

测试环境

Win7+Eclipse

测试手机

三星手机

系统版本

Android4.0

手机网络

wifi

测试时长

30分钟

测试时间

2015年3月17日20:00-2015年3月17日20:30



基本参数:

收费

免费

支持平台

Android、ios

支持在线语音识别

支持

离线语音识别

不支持

语义理解

支持

语音内容服务

支持

应用数据统计

支持

语音服务统计管理

支持

自定义知识库

支持

中文(普通话)、英文和粤语

支持

企业定制

支持(需要收取一定费用)

语音文件保存

暂不支持(下一版本更新才支持)

集成过程

客户端集成

1、在云知声官网注册成开发者http://dev.hivoice.cn/index.jsp,云知声有两种注册方式(手机和邮箱)。这里以邮箱注册为例:通过邮箱注册后,会发送一封邮箱验证信息,验证后,即可。

邮箱注册

手机注册

注册成功,登陆后完善下自己的详细资料,然后便可以使创建云知声的应用了 。如下图:

完善信息

2、创建对应的应用,这里以通用解决方案为例,如下图:

创建步骤

输入信息

3、创建好应用后返回我的应用列表,然后打开刚刚创建好的应用,下载对应的Android SDK 。提供了安卓和ios两种方式,这里选用安卓作为测试,申请成功后,创建应用和生成对应的key和appSecret,都是要在代码中使用到的,如下图:

应用详情

4、创建项目dvstore_yzs

创建项目dvstore_yzs

5、导入云知声jar包和armeabi文件

导入云知声jar包和armeabi文件

6、代码调用

设置好清单里对应的权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
      <uses-permission  android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.VIBRATE" />

初始化云知声

private void initUSCS() {
 
// 创建语音理解对象
mUscsr = new USCSpeechUnderstander(CaipuActivity.this, appKey, secret);
ontts = new OnlineTTS(CaipuActivity.this, appKey);
// 设置语音合成回调监听
ontts.setTTSListener(new onttsp());
// 返回结果监听
mUscsr.setListener(new onuscsp());
 
}
 
class onttsp implements TTSPlayerListener {
 
@Override
public void onPlayEnd() {
 
}
 
@Override
public void onPlayBegin() {
 
}
 
@Override
public void onEnd(USCError arg0) {
if (arg0 != null) {
Toast.makeText(YiYaoActivity.this, arg0.toString(),
Toast.LENGTH_LONG).show();
}
}
 
@Override
public void onBuffer() {
 
}
 
}
 
class onuscsp implements USCSpeechUnderstanderListener {
 
@Override
public void onRecognizerResult(String result, boolean isLast) {
 
yuyinresult.append(result);
}
 
@Override
public void onEnd(USCError error) {
 
statue = AsrStatus.idle;
start.setText("点击说话");
if (error != null) {
// 显示错误信息
Toast.makeText(YiYaoActivity.this, error.toString(),
Toast.LENGTH_LONG).show();
} else {
if ("".equals(yuyinresult.getText().toString())) {
yuyinresult.setText("没有听到声音");
} else {
ontts.play(yuyinresult.getText().toString());
}
}
}
 
@Override
public void onVADTimeout() {
// 收到用户停止说话事件,停止录音
stopRecord();
}
 
@Override
public void onUpdateVolume(int volume) {
mpgb.setProgress(volume);
 
}
 
@Override
public void onRecordingStop() {
 
statue = AsrStatus.recognizing;
start.setText("放弃");
}
 
@Override
public void onSpeechStart() {
Log.e("start", "start say");
}
 
@Override
public void onRecordingStart() {
statue = AsrStatus.recording;
start.setText("说话完毕");
Log.e("start", "说话完毕");
}
 
/**
 * 语义解析结果
 */
@Override
public void onUnderstanderResult(USCUnderstanderResult result) {
 
try {

JSONObject jsob = new JSONObject(result.getStringResult());
 
JSONObject yiyujso = new JSONObject(jsob.getString("semantic"));
JSONObject semantic = new JSONObject(
yiyujso.getString("intent"));
caiming_urlString = semantic.getString("url");
if (!"".equals(semantic.getString("keyword"))) {
caiming.setText(semantic.getString("keyword"));
}
 
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("=", "e=" + e.toString());
caiming.setText("未能识别出医药");
caipu_linear.setVisibility(View.VISIBLE);
yuyiresult.setText(result.getStringResult());
}
 
}
//设置采样率和识别领域

// 录音采样率
mUscsr.setBandwidth(USCSpeechUnderstander.RATE_16K);
// 识别领域
mUscsr.setEngine("general");
mUscsr.start();

主要功能

1、主界面如下图

主界面

主界面

2、设置采样率(识别效果推荐使用 RATE_16K, RATE_16K≈2KB/秒,

RATE_8K≈1KB/秒。)如下图:

设置采样率

3、菜谱语音识别,详细可以看app界面中范例提示,正确识别后,显示出菜名,可以点击查看菜谱制作,如果是未能识别出来,则显示出语义解析出来的结果。如下图:

菜谱语音识别

未能识别出来的情况,如下图显示:

未识别

识别出了菜名的情况,点击查看此菜做法的按钮,跳转到菜谱做法的界面,如下图所示:

查看做法

菜谱界面

4、联系人语音识别,详细可以看app界面中范例提示,正确识别后,显示出联系人,可以点击查看联系人列表界面,如果是未能识别出来,则显示出语义解析出来的结果。

联系人语音识别

未能识别出联系电话时候,直接显示出语义解析的结果,如下图:

未识别

识别出了人名,则可以点击打开联系人列表,如下图:

打开联系人

通讯录

5、音乐语音识别,详细可以看app界面中范例提示,正确识别后,显示出音乐名,可以点击打开音乐播放器,如果是未能识别出来,则显示出语义解析出来的结果。

音乐语音识别

未能识别出音乐名称,如下图:

未识别

正确识别出音乐如下图:

正确识别出音乐

播放列表

7、航班语音识别,详细可以看app界面中范例提示,正确识别后,显示出航班行程,可以点击打开订购机票,如果是未能识别出来,则显示出语义解析出来的结果。

航班语音识别

未能识别出航班,如下图:

未识别

正确识别出语音,如下图:

正确识别

航班信息

8、地名:详细可以看app界面中范例提示,正确识别后,显示地名,可以点击搜索,为了搜索出关于解析出来的地名的网站。如下图:

地名

网页搜索

9、影视名:详细可以看app界面中范例提示,正确识别后,显示影视名。如下图:

影视名

10、医药:详细可以看app界面中范例提示,正确识别后,显示药名,可以点击搜索,为了搜索出关于药名的网站。如下图:

医药

医药搜索

功能特色

1、支持统计和分析(查看访问次数,累积用户,新增用户和错误统计),如下图:

统计信息

用户地域分布

统计信息汇总

2、后台我的应用中添加服务功能,手机客户端调用对用的服务。如下图

我的应用

3、添加内容服务对象,如下图

内容服务

公共服务

添加好了如上图的想要使用的服务后。在手机客户端对用的列表中使用

4、后台添加知识库功能,在网站上编辑好对应的问题和答案,手机客户端语音录入识别,在后台设置好自定义的知识库,如下图

知识库

对应答案

手机客户端操作如下图

手机客户端

不是通过后台设置的,语音解析的是默认的知识库的内容

语音解析

如下图是自定义的知识库的内容,如下图

自定义的知识库的内容

DEMO展示

初始化:

private void initUSCS() {
 
// 创建语音理解对象
mUscsr = new USCSpeechUnderstander(CaipuActivity.this, appKey, secret);
ontts = new OnlineTTS(CaipuActivity.this, appKey);
// 设置语音合成回调监听
ontts.setTTSListener(new onttsp());
// 返回结果监听
mUscsr.setListener(new onuscsp());
 
}

语义解析监听:

class onuscsp implements USCSpeechUnderstanderListener {
 
@Override
public void onRecognizerResult(String result, boolean isLast) {
 
yuyinresult.append(result);
}
 
@Override
public void onEnd(USCError error) {
 
statue = AsrStatus.idle;
start.setText("点击说话");
if (error != null) {
// 显示错误信息
Toast.makeText(CaipuActivity.this, error.toString(),
Toast.LENGTH_LONG).show();
} else {
if ("".equals(yuyinresult.getText().toString())) {
yuyinresult.setText("没有听到声音");
} else {
ontts.play(yuyinresult.getText().toString());
}
}
}
 
@Override
public void onVADTimeout() {
// 收到用户停止说话事件,停止录音
stopRecord();
}
 
@Override
public void onUpdateVolume(int volume) {
mpgb.setProgress(volume);
 
}
 
@Override
public void onRecordingStop() {
 
statue = AsrStatus.recognizing;
start.setText("放弃");
}
 
@Override
public void onSpeechStart() {
Log.e("start", "start say");
}
 
@Override
public void onRecordingStart() {
statue = AsrStatus.recording;
start.setText("说话完毕");
Log.e("start", "说话完毕");
}
 
/**
 * 语义解析结果
 */
@Override
public void onUnderstanderResult(USCUnderstanderResult result) {
 
try {
 
JSONObject jsob = new JSONObject(result.getStringResult());
 
JSONObject yiyujso = new JSONObject(jsob.getString("general"));
caiming_urlString = yiyujso.getString("url");
JSONObject jscai = new JSONObject(result.getStringResult());
JSONObject semantic = new JSONObject(
jscai.getString("semantic"));
 
JSONObject intent = new JSONObject(semantic.getString("intent"));
 
if (!"".equals(intent.getString("dish"))) {
caiming.setText(intent.getString("dish"));
}
 
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("=", "e=" + e.toString());
caiming.setText("未能识别出菜名");
caipu_linear.setVisibility(View.VISIBLE);
yuyiresult.setText(result.getStringResult());
}
 
}
 
}

测试日志

测试日志截图:

测试日志截图

遇到问题

1、整体上来说,第一次用云知声语音服务,集成还是很是很顺利,在测试过程中使用了模拟器,结果直接报错了,询问了Q群里的云知声技术客服才知道,云知声只支持真机测试,模拟器测试会直接报错。

2、代码集成中,key和appSecret,一定要写对了,不然也会直接报错。

上手难易

上手难易:一般,仔细的查看云知声提供的开发文档和样例,仔细阅读文档基本可以很快的成功集成,对于内容服务解析返回的json数据,需要对于json有所了解才可以正确解读。

开发文档

云知声集成好了在线展示开发文档http://dev.hivoice.cn/doc/sdk_doc.jsp

在线文档

此服务评测版权归DevStore所有,禁止转载,申请升级为 特约评测员 才可进行测评立即申请

声明:DevStore评测内容都是基于专业评测人员/开发者通过真实的测试之后得出的数据,服务版本实时都在更新,所以评测并不一定是此服务的最新版本,但我们会秉承公正专业精准的态度,对开发者负责,同时欢迎大家监督和建议,如对评测内容有异议,请提交纠错,由专业的评测团队再次评测,我们会尽最大努力为大家提供更贴心的服务。

DevStore_全球首家第三方开发者服务商店,最精准的服务对比、最专业的服务评测、最及时的行业动态,为开发者挑选服务提供最全面的参考和专业分析,加入DevStore,从此告别熬夜加班,你也可以这么帅!搜索微信号:DevStore

评论(6)
亮亮2046

亮亮2046 2016-08-11 23:49:58

国内还有一家叫思必驰
回复(0) 赞(0) 赞(1)
亮亮2046

亮亮2046 2016-08-11 23:43:40

好东西,谢谢楼主分享
回复(0) 赞(0) 赞(1)
亮亮2046

亮亮2046 2016-08-11 23:43:18

好东西,谢谢分享
回复(0) 赞(0) 赞(1)
潭州Tony

潭州Tony 2016-06-17 15:26:57

好东西,谢谢楼主的分享
回复(0) 赞(0) 赞(1)
Faith

Faith 2016-01-09 17:38:58

好东西 谢谢分享
回复(0) 赞(0) 赞(1)