语音评测(Speech Evaluator)通过智能语音技术自动对发音水平进行评价、发音错误、缺陷进行定位和问题分析。目前语音评测提供汉语、英语两种语言的评测,支持单字(汉语专有)、词语 和句子朗读三种题型。
语音评测详细的接口介绍及说明请参考:MSC Android API 文档。
在集成过程中出现错误,请优先查询SDK&API 错误码查询。如有疑问,请提交工单进行咨询,也可登录讯飞开放平台论坛与广大开发者共同学习和交流。
根据官网控制台提示,直接下载SDK,SDK中包含简易可运行的Demo。如下图所示:
备注:Android sdk目前支持android4.4及以上系统,同时请使用真机调试。
下载完SDK后,解压至相应的路径。以Android Studio集成开发工具为例,测试时建议直接用真机进行测试
打开Android Studio,在菜单栏File--->new--->import project当前解压sdk路径,使用在线服务能力选择导入SpeechDemo,如下图所示:
导入成功之后sync编译下,编译无误可连接手机,开启手机USB开发调试模式,直接在Android Studio运行导入的Speechdemo,最后生成的apk可直接安装在对应的手机上,如下图所示:
如果编译时出现“ERROR: Plugin with id 'com.android.application' not found.”错误,请在build.gradle文件中添加以下代码。
buildscript {
repositories {
google()
jcenter()
}
dependencies {
//版本号请根据自己的gradle插件版本号自行更改
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
如在导入项目中还出现其他问题,可参考帖子:安卓demo常见错误排查
打开Android Studio,在菜单栏File--->new--->import module当前解压sdk路径,使用在线服务能力选择导入SpeechDemo,导入成功之后sync编译下,编译无误可连接手机,开启手机USB开发调试模式,直接在Android Studio运行导入的Speechdemo,最后生成的apk可直接安装在对应的手机上。
《Android SDK目录结构一览》
将在官网下载的Android SDK 压缩包中libs目录下所有子文件拷贝至Android工程的libs目录下。如下图所示:
注:
在工程 AndroidManifest.xml 文件中添加如下权限
<!--连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!--读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--获取当前wifi状态 -->
<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.READ_CONTACTS"/>
<!--外存储写权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--外存储读权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--配置权限,用来记录应用配置信息 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务-->
<!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--如需使用人脸识别,还要添加:摄相头权限,拍照需要用到 -->
<uses-permission android:name="android.permission.CAMERA" />
注意:如需在打包或者生成APK的时候进行混淆,请在proguard.cfg中添加如下代码:
-keep class com.iflytek.**{*;}
-keepattributes Signature
初始化即创建语音配置对象,只有初始化后才可以使用MSC的各项服务。建议将初始化放在程序入口处(如Application、Activity的onCreate方法),初始化代码如下:
// 将“12345678”替换成您申请的APPID,申请地址:https://www.ai-sip.com
// 请勿在“=”与appid之间添加任何空字符或者转义符
SpeechUtility.createUtility(context, SpeechConstant.APPID +"=12345678");
通过setParameter设置的评测相关参数说明如下:
参数 | 说明 | 是否必需 |
---|---|---|
language | 评测语种,可选值: en_us(英语)、zh_cn(汉语) | 是 |
category | 评测题型,可选值: read_syllable(单字,汉语专有)、read_word(词语)、 read_sentence(句子)、read_chapter(篇章) | 是 |
text_encoding | 上传的试题编码格式,可选值: gb2312、utf-8。 当进行汉语评测时,必须设置成utf-8, 建议所有试题都使用utf-8编码 | 是 |
vad_eos | 后端点超时,默认1800ms | 否 |
speech_timeout | 录音超时,当录音达到时限将自动触发 vad停止录音,默认-1(无超时) | 否 |
result_level | 评测结果等级,可选值: plain、complete,默认为complete | 否 |
plev | 全维度功能,详见下方说明 可选值:0 | 否 |
备注:以上均为SDK常用参数说明,均在setParam()方法里面设置,设置示例:mIse.setParameter(SpeechConstant.LANGUAGE, "zh_cn");更多详细参数请参考:MSC Android API 文档.
在上述参数的基础上添加参数设置:
mIse.setParameter(SpeechConstant.AUDIO_SOURCE,"-1");
以writeaudio的方式写入音频文件进行评测:
int ret = mIse.startEvaluating(evaText, null, mEvaluatorListener);
//在startEvaluating接口调用之后,加入以下方法,即可通过直接
//写入音频的方式进行评测业务
if (ret != ErrorCode.SUCCESS) {
showTip("识别失败,错误码:" + ret);
} else {
showTip(getString(R.string.text_begin_ise));
byte[] audioData = FucUtil.readAudioFile(IseDemo.this,"isetest.wav");
if(audioData != null) {
//防止写入音频过早导致失败
try{
new Thread().sleep(100);
}catch (InterruptedException e) {
Log.d(TAG,"InterruptedException :"+e);
}
mIse.writeAudio(audioData,0,audioData.length);
mIse.stopEvaluating();
}
}
使用方法:mSpeechEvaluator.setParameter('plev', 0);
使用说明:使用全维度权限前后可获得的结果对比如下,红色为使用全维度以后才会返回的评分维度,返回结果各字段的详细说明请点击 语音评测结果说明 查看。
题型 | 中文 默认 | 中文 使用全维度 | 英文 默认 | 英文 使用全维度 |
---|---|---|---|---|
字 | 总分(total_score) | 总分(total_score) 声韵分(phone_score) 调型分(tone_score) | - | - |
词 | 总分(total_score) | 总分(total_score) 声韵分(phone_score) 调型分(tone_score) | 总分(total_score) 音节得分(syll_score) | 总分(total_score) 音节得分(syll_score) 准确度分(accuracy_score) |
句 | 总分(total_score) | 总分(total_score) 完整度分(integrity_score) 流畅度分(fluency_score) 声韵分(phone_score) 调型分(tone_score) | 总分(total_score) 音节得分(syll_score) | 总分(total_score) 音节得分(syll_score) 完整度分(integrity_score) 流畅度分(fluency_score) 准确度分(accuracy_score) |
篇章 | 总分(total_score) | 总分(total_score) 完整度分(integrity_score) 流畅度分(fluency_score) 声韵分(phone_score) 调型分(tone_score) | 总分(total_score) 音节得分(syll_score) | 总分(total_score) 音节得分(syll_score) 完整度分(integrity_score) 流畅度分(fluency_score) 准确度分(accuracy_score) |
注:
中文声韵分:指声母和韵母正确率的得分。
中文调型分:指声调正确率的得分。
在createUtility接口的params参数中添加:
net_type=custom, proxy_ip=<host>, proxy_port=<port>
其中,<host>,<port>替换为实际的代理服务器地址和端口。
例如:SpeechUtility.createUtility(context, SpeechConstant.APPID + “=12345678” + “,” + “net_type=custom, proxy_ip=192.168.1.2, proxy_port=8080”); 注意:各参数间,以英文逗号分隔。
接口原型: public static SpeechUtility createUtility(Context context, java.lang.String params)
注意: 若在设置代理参数后,使用语音服务过程中,报错10204/10205/10212等网络异常错误时,请查阅以下内容,做出相关操作:
- 讯飞语音SDK的通信协议使用的是标准HTTP1.1协议,其代理协议使用的是标准HTTP代理协议。
- 代理服务器需要支持全双工多问多答方式,即 pipeline 模式。
- 代理服务器不能对80端口做限制,不能对如下域名做拦截: hdns.openspeech.cn scs.openspeech.cn open.xf-yun.com dev.voicecloud.cn
- 需要确保代理服务器只负责转发数据包,不能改变数据包的完整性和时序性。
- 代理服务器在转发数据包时,不能在HTTP协议头部添加 IE6 标识头
答:Android版本SDK目前支持4.4以上版本,React-Native ,QT 等跨平台方案,目前暂不支持
答:目前语音评测支持:Android/IOS/Linux/Windows/Web API应用平台。
答:文档中心---快速指引有介绍步骤根据步骤下载安卓在线评测sdk。
答:请检查是否忘记使用SpeechUtility初始化。也可以在监听器的onError函数中打印错误信息,根据信息提示,查找错误源。
答:参考以下帖子:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=9688
答:评测试题需要符合一定的格式,汉语试题和英语试题有所不同,同语种的不同题型也有差异。
英文口语评测:支持单词,句子,篇章等题型评测。
中文口语评测:支持字、词、句,篇章等题型评测。
评测试题和结果格式及字段含义详见 语音评测试题格式及结果说明 文档。
答:对于所有评测题型,都只支持最长 3分钟 的语音输入。
答:支持的音频类型是:单声道 16bit Inter PCM。 支持的音频采样率是:16000HZ。推荐使用Cool edit软件查询音频格式是否符合,音频格式不符合会检测为乱读,分值不能作为参考。
答:在createUtility接口中添加:server_url = http://YourDomainName/msp.do (YourDomainName是指语音云服务域名,请开发者自行替换) 例如:SpeechUtility.createUtility(context, SpeechConstant.APPID + "=12345678" + "," + "server_url = http://sdk.openspeech.cn/msp.do");
注意:各参数间,以英文逗号分隔。 接口原型: public static SpeechUtility createUtility(Context context, java.lang.String params)
评测试题和结果格式及字段含义详见 语音评测试题格式及结果说明 文档。
其它常见问题请参见 科大讯飞语音评测 FAQ 文档。