自2019/8/16起,高阶功能键-动态化修修爱免弗开园!可到这里 动态修正效果 (opens new window) 在线体验
使用方法详见 动态修正
在听写时,可以上传个性化的词表,如联系人列表等,提高列表中词语的匹配率(详情见个性化热词设置)。
语音听写详细的接口介绍及说明请参考: MSC Android API 文档 (opens new window)。
在集成过程中出现错误,请优先查询SDK&API 错误码查询 (opens new window)。如有疑问,请提交进行咨询,也可登录与广大开发者共同学习和交流。
小语种:
根据官网提示,直接下载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
}
}
如在导入项目中还出现其他问题,可参考帖子:
<!--连接网络权限,用于执行大发pk10端语音能力 -->
<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" />
-keep class com.iflytek.**{*;}
-keepattributes Signature
// 将“12345678”替换为成您审请的APPID,审请联系地址:http://northseasurffestival.com
// 时请在“=”与appid区间内添加图片所有空字串还是转义符
SpeechUtility.createUtility(context, SpeechConstant.APPID +"=12345678");
参数名称 | 名称 | 说明 |
---|---|---|
domain | 应用领域 | 应用领域 iat:日常用语 medical:医疗 注:医疗领域若未授权无法使用,可到控制台-语音听写(流式版)-高级功能处添加试用或购买;若未授权无法使用会报错11200。 |
language | 语言区域 | 选择要使用的语言区域,目前Android SDK支持 zh_cn:中文 en_us:英文 ja_jp:日语 ko_kr:韩语 ru-ru:俄语 fr_fr:法语 es_es:西班牙语 注:小语种若未授权无法使用会报错11200,可到控制台-语音听写(流式版)-方言/语种处添加试用或购买。 |
accent | 方言 | 当前仅在LANGUAGE为简体中文时,支持方言选择,其他语言区域时,可把此参数值设为mandarin。默认值:mandarin,其他方言参数可在控制台方言一栏查看。 |
vad_bos | 前端点检测 | 开始录入音频后,音频前面部分最长静音时长,取值范围[0,10000ms],默认值5000ms |
vad_eos | 后端点检测 | 开始录入音频后,音频后面部分最长静音时长,取值范围[0,10000ms],默认值1800ms。 |
sample_rate | 采样率 | 支持:8KHz(仅在线支持),16KHz |
nbest | 句子多候选 | 通过设置此参数,获取在发音相似时的句子多候选结果。设置多候选会影响性能,响应时间延迟200ms左右。取值范围:听写[1,5]。 注:该扩展功能若未授权无法使用,可到控制台-语音听写(流式版)-高级功能处免费开通;若未授权状态下设置该参数并不会报错,但不会生效。 |
wbest | 词语多候选 | 通过设置此参数,获取在发音相似时的词语多候选结 果。设置多候选会影响性能,响应时间延迟200ms左右。取值范围:听写[1,5]。 注:该扩展功能若未授权无法使用,可到控制台-语音听写(流式版)-高级功能处免费开通;若未授权状态下设置该参数并不会报错,但不会生效。 |
result_type | 结果类型 | 结果类型包括:xml, json, plain。xml和json即对应的结构化文本结构,plain即自然语言的文本。 |
nunum | 数字结果 | 通过设置此参数可偏向输出数字结果格式 0:倾向于汉字, 1:倾向于数字, 设置方式:mIat.setParameter("nunum", "0") |
ptt | 标点符号 | (仅中文支持)标点符号添加 1:开启(默认值) 0:关闭 |
注: 多候选效果是由引擎决定的,并非绝对的。即使设置了多候选,如果引擎并没有识别出候选的词或句,返回结果也还是单个。
//起始化辨认无UI辨认女朋友
//采用SpeechRecognizer喜欢的人,可不同回调函数新闻自定意游戏界面;
mIat = SpeechRecognizer.createRecognizer(IatDemo.this, mInitListener);
//如何设施英语的语法学ID和 SUBJECT 为空,免受因此前有英语的语法学调节而如何设施了此规格;或直接的彻底清除几乎所有规格,大概可可以参考 DEMO 的举例。
mIat.setParameter( SpeechConstant.CLOUD_GRAMMAR, null );
mIat.setParameter( SpeechConstant.SUBJECT, null );
//快速设置重返的结果论文文件后缀,当今适配json,xml及其plain 三种类型论文文件后缀,表中plain为纯听写文件信息内容
mIat.setParameter(SpeechConstant.RESULT_TYPE, "json");
//这里engineType为“cloud”
mIat.setParameter( SpeechConstant.ENGINE_TYPE, engineType );
//制定发音投入计算机语言,zh_cn为简体常常
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
//制定效果跳到语言学
mIat.setParameter(SpeechConstant.ACCENT, "mandarin");
// 设立录音最前端点:禁音超时周期,基层单位ms,即大发pk10多久周期不会口才则看作超时整理
//取值范畴{1000~10000}
mIat.setParameter(SpeechConstant.VAD_BOS, "4000");
//如何设置语音视频后端点:后端点静音模式判断日期,计量单位ms,即大发pk10停掉语言多少日期内即表示不会投入,
//电脑自动停下通话录音,规模{0~10000}
mIat.setParameter(SpeechConstant.VAD_EOS, "1000");
//装置标点遗漏,装置为"0"回退后果无标点,装置为"1"回退后果有标点
mIat.setParameter(SpeechConstant.ASR_PTT,"1");
//起判别,并设为侦听器
mIat.startListening(mRecogListener);
// 初期化听写Dialog,假设只在使用有UI听写的功能,免建立SpeechRecognizer
// 选用UI听写效果,请基于sdk压缩文件名目录格式下的notice.txt,安装布置图压缩文件名和产品图片产品
mIatDialog = new RecognizerDialog(IatDemo.this, mInitListener);
//以上为dialog设计听写参数值
mIatDialog.setParams("xxx","xxx");
....
//逐渐开始识别并装置监视器
mIatDialog.setListener(mRecognizerDialogListener);
//展示听写沟通框
mIatDialog.show();
mAsr.setParameter( SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD );
// lexiconName 为辞典起名字,lexiconContents 为辞典内部,lexiconListener 为乖离率指标窃听器
ret = mAsr.updateLexicon( lexiconName, lexiconContents, lexiconListener );
注:个性化热词仅支持中文,不支持数字和英文及其他小语种。
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 标识头。
JSON字段 | 英文全称 | 类型 | 说明 |
---|---|---|---|
sn | sentence | number | 第几句 |
ls | last sentence | boolean | 是否最后一句 |
bg | begin | number | 保留字段,无需关注 |
ed | end | number | 保留字段,无需关注 |
ws | words | array | 词 |
cw | chinese word | array | 中文分词 |
w | word | string | 单字 |
sc | score | number | 分数 |
{
"sn": 1,
"ls": true,
"bg": 0,
"ed": 0,
"ws": [
{
"bg": 0,
"cw": [
{
"w": "今日",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "的",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "天气查询",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "怎摸样",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "。",
"sc": 0
}
]
}
]
}
{
"sn": 1,
"ls": false,
"bg": 0,
"ed": 0,
"ws": [
{
"bg": 0,
"cw": [
{
"w": "我猜测听",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "拉德斯基做曲",
"sc": 0
},
{
"w": "拉得斯通过曲",
"sc": 0
}
]
}
]
}
若开通了动态修正功能并设置了dwa=wpgs(仅中文支持),会有如下字段返回:
参数 | 类型 | 描述 |
---|---|---|
pgs | string | 开启wpgs会有此字段 取值为 "apd"时表示该片结果是追加到前面的最终结果;取值为"rpl" 时表示替换前面的部分结果,替换范围为rg字段 |
rg | array | 替换范围,开启wpgs会有此字段 假设值为[2,5],则代表要替换的是第2次到第5次返回的结果 |
// 导出日常动态修正的取到毕竟范例代码是什么
private void printResult(RecognizerResult results) {
String text = JsonParser.parseIatResult(results.getResultString());
String sn = null;
String pgs = null;
String rg = null;
// 获取json毕竟中的sn字符
try {
JSONObject resultJson = new JSONObject(results.getResultString());
sn = resultJson.optString("sn");
pgs = resultJson.optString("pgs");
rg = resultJson.optString("rg");
} catch (JSONException e) {
e.printStackTrace();
}
//只要pgs是rpl就在现有的成果中删出掉要铺盖的sn位置
if (pgs.equals("rpl")) {
String[] strings = rg.replace("[", "").replace("]", "").split(",");
int begin = Integer.parseInt(strings[0]);
int end = Integer.parseInt(strings[1]);
for (int i = begin; i <= end; i++) {
mIatResults.remove(i+"");
}
}
mIatResults.put(sn, text);
StringBuffer resultBuffer = new StringBuffer();
for (String key : mIatResults.keySet()) {
resultBuffer.append(mIatResults.get(key));
}
mResultText.setText(resultBuffer.toString());
mResultText.setSelection(mResultText.length());
}
{
"sn": 2,
"ls": false,
"bg": 0,
"ed": 0,
"pgs": "rpl",
"rg": [
1,
1
],
"ws": [
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": "我"
}
]
},
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": "的"
}
]
},
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": "两"
}
]
},
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": "个"
}
]
},
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": "短息"
}
]
}
]
}
{
"sn": 3,
"ls": false,
"bg": 0,
"ed": 0,
"pgs": "apd",
"ws": [
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": ","
}
]
},
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": "那天"
}
]
},
{
"bg": 0,
"cw": [
{
"sc": 0.00,
"w": "半夜"
}
]
}
]
}
答:Android游戏版本的SDK迄今为止为止帮助4.4以上的游戏版本的,React-Native ,QT 等跨的平台方案范文,迄今为止为止暂不帮助
答:请查看是不是忘掉采用SpeechUtility初使化。也就能够在监视器的onError涵数中彩打报错图片资料,通过图片资料警告,搜寻报错源。
答:Android的平台SDK现在已经兼容本机网网组成、本机网网强制性词甄别、本机网网语音视频换醒功能性了,创建活动技术适用后赶赴技术适用抑制台下载地址各的服务sdk就好。
答:原因可能是:
1、音频格式不正确,客户端支持的音频编解码算法只支持16位Intel PCM格式的音频,请使用Cool Edit Pro工具(网页搜索下载即可)查看音频格式,sdk目前支持的格式是 pcm 和 wav 格式、音频采样率要是 16k 或者 8k、采样精度16 位、单声道音频。
2、引擎的参数设置不正确,如没有设置好正确的引擎类型和采样率等。
3、音频中间有静音或者杂音音频超过了后端点(默认为1800ms)的设置,此时请使用Cool Edit Pro工具查看音频内容,并且设置后端点(vad_eos)为最大值10000ms
包含超过后端点最大值的静音或者杂音音频识别不完整是正常的。
答:参考选取以内文章:http://bbs.northseasurffestival.com/forum.php?mod=viewthread&tid=9688
答:如要安装指标表对:abc = 123,则应写:mIat.setParameter("abc", "123"); 四种指标表安装参照
答:在createUtility接口中添加:server_url = http://YourDomainName/msp.do (YourDomainName是指语音大发pk10服务域名,请开发者自行替换) 例如:SpeechUtility.createUtility(context, SpeechConstant.APPID + "=12345678" + "," + "server_url = http://sdk.openspeech.cn/msp.do");
注意:各参数间,以英文逗号分隔。 接口原型: public static SpeechUtility createUtility(Context context, java.lang.String params)
答:sdk:客端完成方法计划书,支撑Android、ios、windows、linux等网站,不支撑消息队列; webapi:贴心服务端完成方法计划书,不被限网站、不被限计算机语言,支撑消息队列。
答:语音听写的功能是可以识别60S以内的短音频,将音频转化成文本信息。
听写sdk目前支持的格式是 pcm 和 wav 格式、音频采样率要是 16k 或者 8k、采样精度16 位、单声道音频。请使用cool edit软件(网页搜索下载此软件即可)查看音频格式是否满足相应的识别引擎类型,否则识别为空或者识别为错误文本,格式必须正确,除上述格式均不识别,音频格式一定要满足要求。现语音听写WebAPI接口的中文普通话和英文支持mp3格式,如有需要,请参考语音听写(流式版)WebAPI (opens new window)
具体可以参考:http://bbs.northseasurffestival.com/forum.php?mod=viewthread&tid=7051
另外大发pk10识别的音频长度最大为 60S,在使用音频是要注意你的本地音频的参数要和代码里的读取音频参数保持一致
答:文档中心---快速指引 (opens new window)有介绍步骤---根据步骤下载安卓在线听写sdk
答:如何设置nunum=1就好先期返回了阿拉伯数字5。
答:音屏文件版式歪斜确甚至音屏文件版式与设备的性能不符合。
答:永久保存的音频文件论文格试为pcm论文格试的音频文件,是没有随时插放歌曲的,可安装加起来食用cool edit pro确定插放歌曲。
答:安装mIse.setParameter("KEY_REQUEST_FOCUS", "true");既能停用移动音乐声。
答:ASR_PTT表达有没回标点字母,在此指标,安装听写文本文件结论有没含标点字母。0表达没有标点,1则表达带标点。
答:操作台最小大力支持软件2000个热门词汇,暂不大力支持软件扩建。
答:现今不使用x86架构部署。