Android SDK
一. 离线ASR概述
DUI Lite SDK离线识别可使在无网的情况下,提供将声音信息转化为文字信息的能力。
二. SDK使用说明
2.1. 在 思必驰开放平台 注册账号成为开发者;
2.2. 接入对应的单项技术;
2.3. 权限声明
如果资源放在sdcard中,需要申请读写权限
|
targetSdkVersion 版本高于
30
,需要增加权限
|
2.4. 混淆
注意:
使用当前功能时,请先授权,否则禁止使用。请参考 授权说明
三. 集成DUI Lite SDK 包括 jar、JavaDoc 、so 动态库以及功能对应的资源。
DUI Lite SDK 支持 Android 4.0及以上系统,so 动态库目前支持 arm64-v8a, armeabi, armeabi-v7a, x86, x86_64,若需支持其它架构,请提工单申请。
3.1.引入对应的jar 包 , DUI-lite-SDK-for-Android-xxx.jar
3.2.引入对应的 libasr.so 库
四. 工作流程
五. 功能使用
5.1初始化参数说明
详细参考AILocalASRConfig
参数名
|
取值
|
说明
|
是否必须
|
默认值
|
---|---|---|---|---|
setAcousticResources(String acousticResources) |
设置声学资源 |
1. 如在 sd 里设置为绝对路径 如/sdcard/speech/ebnfr.aicar.1.3.0.bin |
必须 | 空 |
setAggregateMateBinPath(String aggregateMateBinPath) | 集内匹配资源路径 |
示例:res/itn/res_v1.1.4/command/cmd.bin |
可选 | 空 |
setAggregateMateCommandBinPath(String aggregateMateCommandBinPath) | 集内匹配资源路径 |
集内匹配资源路径,command.bin |
可选 | 空 |
setEnableDoubleVad(boolean enableDoubleVad) | 设置离线识别引擎是否使用双VAD |
使用双VAD 需要 feed 2通道音频,而使用非双VAD 则 feed 1 通道的音频。 true 使用双VAD , false 非双VAD |
可选 | false |
setItnLuaResFolderName(String itnLuaResFolderName) | 设置itn功能的lua目录路径 | 可选 | 空 | |
setItnUpperCase(boolean itnUpperCase) | 设置是否开启英文首字母转换大写 | 可选 | true | |
setLanguages(Languages languages) | 语言 | 可选 | 空 | |
setNetbinResource(String netbinResource) | 设置网络资源 |
1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin |
可选 | 空 |
setNgramSlotRes(String ngramSlotRes) |
设置ngram编译资源 |
设置ngram编译需要的资源名,可设置 assets 下的相对路径 或 / 开头的绝对路径 |
可选 | 空 |
setUseAggregateMate(boolean useAggregateMate) | 是否启用集内匹配 | 可选 | false | |
setVadEnable(boolean vadEnable) | 设置是否启用vad | true:使用Vad;false:禁止Vad | 可选 | true |
setVadResource(String vadResource) | 设置本地vad资源 |
1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin |
可选 | 空 |
5.2开始
详细参数说明AILocalASRIntent
参数名
|
取值
|
说明
|
是否必须
|
默认值
|
---|---|---|---|---|
enableInterimResult(boolean enable) | true 启用,默认为false | 设置是否开启识别中间结果 | 非 | |
setActiveDecoders(List<String> activeDecoderList) | 解码网络名称列表 |
激活解码网络 |
非 | |
setBlackWords(String blackWords) | 热词黑名单 | 热词黑名单 | 非 | |
setBlackWords(String[] blackWords) | 黑名单词表 | 设置热词黑名单 | 非 | |
setCustomThreshold(Map<String, Double> customThreshold) | 自定义词和阈值 |
自定义词和阈值 |
非 | |
setCustomThreshold(String[] words, Double[] threshold) |
words 词表 |
自定义单词置信度阈值 | ||
setDynamicList(List<String> dynamicList) | 热词列表字符串 | 设置识别热词列表字符串,比如:"北京市,YOU ARE RIGHT,BLUCE,tfboys,天安门博物馆" | ||
setDynamicList(String dynamicList) | 识别热词列表字符串,比如:"北京市,YOU ARE RIGHT,BLUCE,tfboys,天安门博物馆" | |||
setEnglishThreshold(double englishThreshold) | 存在英文情况下设置英文置信度(中英文下识别率低,需另外设置置信度) | |||
setEnv(String env) | env json串 | env | ||
setExpandFnPath(String expandFnPath) | 文件的绝对路径 |
ExpandFn 文件路径,用于动态拆分net.bin文件 |
||
setFespxEngine(IFespxEngine fespxEngine) |
fespxEngine 引擎实例 |
设置关联的信号处理引擎AILocalSignalAndWakeupEngine实例,只在使用内部录音机且多麦模式下才需要设置 | ||
setFillerPenaltyScore(float fillerPenaltyScore) | ||||
setIntervalTimeThresh(int intervalTimeThresh) |
设置oneshot功能的唤醒词和命令词之间的时间间隔阈值,单位:毫秒,default is {@value}ms |
|||
setIsIgnoreThreshold(boolean isIgnoreThreshold) | 设置是否忽略阈值,不管kernel返回的结果是大于还是小于阈值,都将结果返回给上层 | |||
setMaxSpeechTimeS(int maxSpeechTimeS) |
设置音频最大录音时长,达到该值将取消语音引擎并抛出异常 |
|||
setMode(ASRMode mode) |
/** |
设置引擎模式 | ASRMode#MODE_ASR | |
setNgramConf(double ngramConf) | 设置置信度 | |||
setNoSpeechTimeOut(int noSpeechTimeOut) | 超时时长,单位毫秒 | 设置无语音超时时长,单位毫秒,默认值为5000ms ;如果达到该设置值时,自动停止录音并放弃请求识别内核 | ||
setPauseTime(int pauseTime) | 单位:ms,默认300 | 设置VAD右边界 | ||
setSaveAudioPath(String saveAudioPath) | 路径 | 设置保存的音频路径,最终的音频路径为path + local_asr_+ recordId + ".pcm" | ||
setThreshold(double threshold) | 设置置信度阈值 | |||
setUseConf(boolean useConf) | true 启用,默认为true | 设置是否开启置信度 | ||
setUseDelimiter(String useDelimiter) | 分割符 |
添加识别结果分割符,如设置 "," 识别结果显示 : "打,开,天,窗" |
||
setUseE2EFusion(boolean useE2EFusion) | 是否开启融合默认是关闭 |
开启融合, |
||
setUseFiller(boolean useFiller) | true 使用Filler,false 不使用(default) |
<p>设置是否开启 Filler,用于减少误识别。</p> |
||
setUseFiller(boolean useFiller, float fillerPenaltyScore) |
useFiller true 使用Filler,false 不使用(default) |
<p>设置是否开启 Filler,用于减少误识别。</p> |
||
setUseHoldConf(boolean useHoldConf) | 设置是否开启ngram置信度 | true | ||
setUseOneShot(boolean useOneShot) |
是否使用oneshot功能,default is false <br> |
|||
setUseOneShot(boolean useOneShot, int intervalTimeThresh) |
useOneShot true 使用 oneshot功能,false 不使用 |
设置是否使用oneshot功能,以及oneshot功能的唤醒词和命令词之间的时间间隔阈值, |
||
setUseOneshotJson(boolean useOneshotJson) | 使用one_shot_json配置 | |||
setUsePinyin(boolean usePinyin) | 设置是否开启拼音输出 | false | ||
setUseRawRec(boolean useRawRec) | ||||
setUseRealBack(boolean useRealBack) | 设置是否开启实时反馈 | false | ||
setUseXbnfRec(boolean useXbnfRec) | 设置是否启用基于语法的语义识别 | false | ||
setVadEnable(Boolean vadEnable) |
设置是否启用本地vad。启用前提是 {@link AILocalASRConfig#isVadEnable()} 为true,否则该参数无效。 |
|||
setWakeupWords(String[] wakeupWords) | 唤醒词列表 | 设置唤醒词列表,用于oneshot过滤唤醒词 | ||
setWords(String words) | 内核词表 | 直接按照内核既定格式设置词表如: \"打开副屏,打开今日头条\" | ||
setWords(String[] words) | 词表 | 设置词表 |
5.3动态设置参数
详细参数说明AILocalASREngine
参数名
|
取值
|
说明
|
是否必须
|
默认值
|
---|---|---|---|---|
setWakeupWords(String[] wakeupWords) | bool |
设置唤醒词列表,用于oneshot过滤唤醒词 |
||
updateDecoder(AIUpdateListener updateListener, Decoder... decoders) |
|
|||
updateNetBinPath(String netBinPath, AIUpdateListener listener) |
listener 更新接口回调 {@link AIUpdateListener} |
更新编译 xbnf 后的 netBin | ||
updateVocab(Vocab vocab, AIUpdateListener updateListener) |
|
|||
updateVocabs(AIUpdateListener updateListener, Vocab... vocabs) |
updateListener 更新结果回调 |
更新单个或者多个词库 |
六. 示例代码
详细代码参考sample
更多的接口内容与描述请参阅 javadoc