public class AILocalSignalAndWakeupConfig
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
boolean |
implVadCk |
Constructor and Description |
---|
AILocalSignalAndWakeupConfig() |
Modifier and Type | Method and Description |
---|---|
void |
enableDulWakeup(java.lang.String[] customNet,
java.lang.String[] enableNet)
设置双唤醒,双唤醒即基于当前唤醒模型,对不同的唤醒词做更好的响应。普通的唤醒词对某些唤醒词响应较好,如对
"你好小驰"响应比较好,则对"小吃小吃"识别不是那么完美,双唤醒主要用于更好的兼容不同的唤醒词
设置的数量必须和唤醒词保持数量一致
AIWakeupIntent.setWakeupWord(String[], float[]) |
void |
enableDulWakeupWithE2E(java.lang.String[] customNet,
java.lang.String[] enableNet,
float[] threshHigh,
float[] threshLow)
E2E提供两个计算网络,使用双计算网络综合计算,综合最后的结果对特定的唤醒词达到提高唤醒率与降低误唤醒率的
作用。
Note:E2E仅支持资源内内置的唤醒词
设置的数量必须和唤醒词数量保持一致
AIWakeupIntent.setWakeupWord(String[], float[])
同时,E2E要求同时设置普通唤醒词和E2E的唤醒词,E2E唤醒词用下划线做拼音之间的连接,如"ni_hao_xiao_chi",
即如果唤醒词为 “你好小驰”,则需要同时配置普通网络模型的唤醒词"ni hao xiao chi",并将其网络模型设置为主网络
即,"0";同时,设置E2E网络模型唤醒词"ni_hao_xiao_chi",网络模型设置为"1",这样才完成了一个基本的E2E
双唤醒设置,可参考如下示例
setWakeupWord(new String[]{"ni hao xiao chi", "ni_hao_xiao_chi"}, new float[]{0.5f, 0.6f});
enableDulWakeupWithE2E(new String[] {"0","1"}, new String[] {"1", "1"}, new float[] {0.9f, 0.8f}, new float[] {0.1f, 0.2f});
|
java.lang.String |
getAecResource() |
java.lang.String |
getBeamformingResource() |
float[] |
getCcThreshold() |
int |
getCloudWakeupCheckTimeout() |
java.lang.String[] |
getCnWakeupWord() |
java.lang.String[] |
getCustomNet() |
int[] |
getDcheck() |
int |
getEchoChannelNum() |
java.lang.String[] |
getEnableNet() |
java.lang.String |
getEnv() |
float[] |
getHighThreshold() |
float[] |
getLowThreshold() |
int[] |
getMajors() |
int |
getMaxMessageQueueSize() |
int |
getMicType() |
NearWakeupConfig |
getNearWakeupConfig() |
int |
getPreUploadRollbackTime() |
int |
getRightMarginFrame() |
int |
getRollBackTime() |
java.lang.String |
getSspeResource() |
int |
getStateFrame() |
int[] |
getSubwordWakeup() |
float[] |
getThreshHigh() |
float[] |
getThreshLow() |
float[] |
getThreshold() |
java.lang.String |
getWakeupResource() |
java.lang.String[] |
getWakeupWord() |
boolean |
isImplAgcCk() |
boolean |
isImplBfCk() |
boolean |
isImplDoaCk() |
boolean |
isImplEchoCk() |
boolean |
isImplEchoVoipCk() |
boolean |
isImplInputCk() |
boolean |
isImplMultiBfCk() |
boolean |
isImplOutputCk() |
boolean |
isImplSevcDoaCk() |
boolean |
isImplSevcNoiseCk() |
boolean |
isImplVadCk() |
boolean |
isImplVprintCutCk() |
boolean |
isImplWakeupCk() |
boolean |
isSspe() |
boolean |
isVad() |
void |
setAecResource(java.lang.String aecResource)
Deprecated.
2.23.0版本之后废弃
|
void |
setBeamformingResource(java.lang.String beamformingResource)
Deprecated.
2.23.0版本之后废弃
|
void |
setCcThreshold(float[] ccThreshold)
设置唤醒词对应阈值,是唤醒二次判决
|
void |
setCloudWakeupCheck(java.lang.String[] cnWakeupWord,
float[] highThreshold,
int cloudWakeupCheckTimeout,
int preUploadRollbackTime)
使用云端ASR进行唤醒校验时需要设置 中文唤醒词和高阈值
|
void |
setDcheck(int[] dcheck)
设置唤醒是否开启校验,"1"表示开启校验,"0"表示不开启校验
|
void |
setEchoChannelNum(int echoChannelNum)
设置参考音路数,默认为0 即不含参考音
|
void |
setEnv(java.lang.String env) |
void |
setImplAgcCk(boolean implAgcCk)
设置是否输出经过前端信号处理放大后的agc音频数据
|
void |
setImplBfCk(boolean implBfCk)
设置是否输出Beamforming音频
|
void |
setImplDoaCk(boolean implDoaCk)
设置是否输出doa
|
void |
setImplEchoCk(boolean implEchoCk)
设置是否输出消除回路之后的音频 数据
|
void |
setImplEchoVoipCk(boolean implEchoVoipCk)
设置是否输出经过回声消除的送给VoIP使用的音频数据
|
void |
setImplInputCk(boolean implInputCk)
设置是否回调输出送入内核的参考音频
|
void |
setImplMultiBfCk(boolean implMultiBfCk)
设置是否回调输出多路beamforming音频
|
void |
setImplOutputCk(boolean implOutputCk)
设置是否回调输出output音频回调,返回内核定制资源输出的音频数据
|
void |
setImplSevcDoaCk(boolean implSevcDoaCk)
设置是否输出信号处理后语音通信的beam index信息
|
void |
setImplSevcNoiseCk(boolean implSevcNoiseCk)
设置是否输出信号处理估计噪声最大的beam index 信息和该方向的音量信息,为 json 字符串
|
void |
setImplVadCk(boolean implVadCk)
设置是否回调输出vad结果
|
void |
setImplVprintCutCk(boolean implVprintCutCk)
设置是否输出用于声纹的音频
|
void |
setImplWakeupCk(boolean implWakeupCk)
设置是否回调输出唤醒回调,如果关掉了则无法唤醒
|
void |
setLowThreshold(float[] lowThreshold)
设置大音量场景下的预唤醒阈值,是否需要设置和唤醒资源有关系
|
void |
setMaxMessageQueueSize(int maxMessageQueueSize)
设置消息队列最大长度
默认-1 使用 DUILiteConfig#getMaxMessageQueueSize() 的配置
0表示不限制长度, 建议大于100
|
void |
setMicType(int type)
设置启用麦克风阵列类型。默认以录音机类型进行加载相应的模块
|
void |
setNearWakeupConfig(NearWakeupConfig nearWakeupConfig)
就近唤醒的配置,包含 net 和 mds 的配置
|
void |
setRightMarginFrame(int rightMarginFrame) |
void |
setRollBackTime(int rollBackTime)
oneshot回退的时间,单位为ms(只有主唤醒词才会回退音频,即major为1)
|
void |
setSspeResource(java.lang.String sspeResource)
sspe 资源, 包含 AEC BSS 等,不同项目含义有所差别
|
void |
setStateFrame(int stateFrame) |
void |
setThreshold(float[] threshold)
设置唤醒词对应阈值,是否需要设置和唤醒资源有关系
|
void |
setUseSspe(boolean sspe)
Deprecated.
|
void |
setVad(boolean vad)
设置前端信号处理内核是否使用vad功能
|
void |
setWakeupResource(java.lang.String wakeupResource)
唤醒资源
|
void |
setWakeupword(java.util.List<WakeupWord> wakeupWords) |
void |
setWakeupWord(java.lang.String[] wakeupWord,
int[] majors)
设置唤醒词以及是否作为主唤醒词,主唤醒词为1,副唤醒词为0
|
void |
setWakeupWord(java.lang.String[] wakeupWord,
int[] majors,
int[] subwordWakeup)
设置唤醒词,以及是否是主副唤醒词,以及是否是半字唤醒
|
void |
setWakeupword(WakeupWord... wakeupWords)
设置唤醒词信息
config.setWakeupword(new WakeupWord("ni hao xiao le", 0.34f, 0.25f, 1, 0)); |
java.lang.String |
toString() |
public int getMicType()
public void setMicType(int type)
type
- 麦克风阵列类型public int getMaxMessageQueueSize()
public void setMaxMessageQueueSize(int maxMessageQueueSize)
动态库方法运行在一个单独的线程里,通过消息队列依次调用。 在设备性能不好的设备上可以设置消息队列最大长度,防止算力不够导致内核无法及时处理完音频数据而导致内存过大的问题
maxMessageQueueSize
- 消息队列最大长度public java.lang.String getSspeResource()
public void setSspeResource(java.lang.String sspeResource)
1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin
2. 如在 assets 里设置为名称
sspe 资源,和 wakeupResource
配合使用。
设置 sspe 资源时,无需设置 aecResource
和 beamformingResource
sspeResource
- sspe 资源public boolean isSspe()
public void setUseSspe(boolean sspe)
sspe
- 是否使用sspe,默认为truepublic int getStateFrame()
public void setStateFrame(int stateFrame)
public int getRightMarginFrame()
public void setRightMarginFrame(int rightMarginFrame)
public void setWakeupWord(java.lang.String[] wakeupWord, int[] majors)
wakeupWord
- 唤醒词,如 ["ni hao xiao chi", "ni hao xiao le","bu ding bu ding"]
还需要设置唤醒词相应的阈值setThreshold(float[])
和 setLowThreshold(float[])
majors
- 是否是主唤醒词,如 [1,0,0]public void setWakeupWord(java.lang.String[] wakeupWord, int[] majors, int[] subwordWakeup)
wakeupWord
- 唤醒词,如 ["ni hao xiao chi", "ni hao xiao le","bu ding bu ding"]
* 还需要设置唤醒词相应的阈值setThreshold(float[])
和 setLowThreshold(float[])
majors
- 是否是主唤醒词,如 [1,0,0]subwordWakeup
- 是否是半字唤醒词,是的话设置为1,不是的话是0, 如[0,0,1]public int[] getSubwordWakeup()
public void setCloudWakeupCheck(java.lang.String[] cnWakeupWord, float[] highThreshold, int cloudWakeupCheckTimeout, int preUploadRollbackTime)
cnWakeupWord
- 中文唤醒词highThreshold
- 高阈值,当本地唤醒的 confidence 高于高阈值时不需要进行云端ASR校验cloudWakeupCheckTimeout
- 唤醒进行云端check时的超时设置,单位 毫秒,默认 600 毫秒preUploadRollbackTime
- 半字唤醒缓存的时间长度, 默认1000mspublic java.lang.String[] getCnWakeupWord()
public float[] getHighThreshold()
public int getCloudWakeupCheckTimeout()
public int getRollBackTime()
public void setRollBackTime(int rollBackTime)
rollBackTime
- 回退的时间,单位为ms.public float[] getThreshold()
public void setThreshold(float[] threshold)
threshold
- 置信度public float[] getCcThreshold()
public void setCcThreshold(float[] ccThreshold)
ccThreshold
- 置信度public float[] getLowThreshold()
public java.lang.String getEnv()
public void setEnv(java.lang.String env)
public void setLowThreshold(float[] lowThreshold)
lowThreshold
- lowThresholdpublic java.lang.String[] getWakeupWord()
public int[] getMajors()
public int[] getDcheck()
public void setDcheck(int[] dcheck)
dcheck
- 是否开启校验,如 [1,0,0]public java.lang.String getWakeupResource()
public void setWakeupResource(java.lang.String wakeupResource)
1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin
2. 如在 assets 里设置为名称
wakeupResource
- 唤醒资源public java.lang.String getBeamformingResource()
@Deprecated public void setBeamformingResource(java.lang.String beamformingResource)
1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin
2. 如在 assets 里设置为名称
beamformingResource
- beamforming 资源public java.lang.String getAecResource()
@Deprecated public void setAecResource(java.lang.String aecResource)
1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin
2. 如在 assets 里设置为名称
aecResource
- aec资源public void setWakeupword(java.util.List<WakeupWord> wakeupWords)
public void setWakeupword(WakeupWord... wakeupWords)
config.setWakeupword(new WakeupWord("ni hao xiao le", 0.34f, 0.25f, 1, 0));
wakeupWords
- 配置的唤醒词public boolean isVad()
public void setVad(boolean vad)
vad
- 内核是否使用vad功能,default is truepublic int getEchoChannelNum()
public void setEchoChannelNum(int echoChannelNum)
echoChannelNum
- 参考音路数setAecResource(String)
public void enableDulWakeup(java.lang.String[] customNet, java.lang.String[] enableNet)
AIWakeupIntent.setWakeupWord(String[], float[])
customNet
- 设置唤醒词对应的网络,分为主网络和自定义网络,主网络是"0",自定义网络设置"1"enableNet
- 设置是否启用当前唤醒词对应的网络,"0"为关闭,"1"为启用public void enableDulWakeupWithE2E(java.lang.String[] customNet, java.lang.String[] enableNet, float[] threshHigh, float[] threshLow)
AIWakeupIntent.setWakeupWord(String[], float[])
同时,E2E要求同时设置普通唤醒词和E2E的唤醒词,E2E唤醒词用下划线做拼音之间的连接,如"ni_hao_xiao_chi",
即如果唤醒词为 “你好小驰”,则需要同时配置普通网络模型的唤醒词"ni hao xiao chi",并将其网络模型设置为主网络
即,"0";同时,设置E2E网络模型唤醒词"ni_hao_xiao_chi",网络模型设置为"1",这样才完成了一个基本的E2E
双唤醒设置,可参考如下示例
setWakeupWord(new String[]{"ni hao xiao chi", "ni_hao_xiao_chi"}, new float[]{0.5f, 0.6f});
enableDulWakeupWithE2E(new String[] {"0","1"}, new String[] {"1", "1"}, new float[] {0.9f, 0.8f}, new float[] {0.1f, 0.2f});
customNet
- 设置唤醒词对应的网络,分为主网络和自定义网络,主网络是"0",E2E网络设置"1"enableNet
- 设置是否启用当前唤醒词对应的网络,"0"为关闭,"1"为启用threshHigh
- 高唤醒阈值,用于E2E的内部计算,设置数据请咨询思必驰研究threshLow
- 低唤醒阈值,用于E2E的内部计算,设置数据请咨询思必驰研究public java.lang.String[] getCustomNet()
public java.lang.String[] getEnableNet()
public float[] getThreshLow()
public float[] getThreshHigh()
public java.lang.String toString()
toString
in class java.lang.Object
public NearWakeupConfig getNearWakeupConfig()
public void setNearWakeupConfig(NearWakeupConfig nearWakeupConfig)
nearWakeupConfig
- 配置public int getPreUploadRollbackTime()
public boolean isImplVadCk()
public void setImplVadCk(boolean implVadCk)
implVadCk
- public boolean isImplMultiBfCk()
public void setImplMultiBfCk(boolean implMultiBfCk)
implMultiBfCk
- true 是 false 否public boolean isImplWakeupCk()
public void setImplWakeupCk(boolean implWakeupCk)
implWakeupCk
- true 是 false 否public boolean isImplOutputCk()
public void setImplOutputCk(boolean implOutputCk)
implOutputCk
- true 是 false 否public boolean isImplInputCk()
public void setImplInputCk(boolean implInputCk)
implInputCk
- true 是 false 否public boolean isImplBfCk()
public void setImplBfCk(boolean implBfCk)
implBfCk
- true 是 false 否public boolean isImplDoaCk()
public void setImplDoaCk(boolean implDoaCk)
implDoaCk
- true 是 false 否public boolean isImplVprintCutCk()
public void setImplVprintCutCk(boolean implVprintCutCk)
implVprintCutCk
- true 是 false 否public boolean isImplEchoCk()
public void setImplEchoCk(boolean implEchoCk)
implEchoCk
- true 是 false 否public boolean isImplEchoVoipCk()
public void setImplEchoVoipCk(boolean implEchoVoipCk)
implEchoVoipCk
- true 是 false 否public boolean isImplSevcDoaCk()
public void setImplSevcDoaCk(boolean implSevcDoaCk)
implSevcDoaCk
- true 是 false 否public boolean isImplSevcNoiseCk()
public void setImplSevcNoiseCk(boolean implSevcNoiseCk)
implSevcNoiseCk
- true 是 false 否public boolean isImplAgcCk()
public void setImplAgcCk(boolean implAgcCk)
implAgcCk
- true 是 false 否