声纹人脸(Verifier)
这里介绍的是Android API关于声纹人脸(Verifier)的相关说明,点击右侧目录可快速找到相应文件。
#类IdentityVerifier
com.iflytek.cloud
java.lang.Object
com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.IdentityVerifier
public final class IdentityVerifier
extends com.iflytek.cloud.msc.module.SpeechInterface
#身份验证类
多生物特征融合验证(Multi-biometric Fusion Verification, MFV)平台是 科大讯飞结 合已有的声纹和人脸识别技术,推出的新一代身份验证平台。该平台不但可以提供单一的声 纹或人脸验证,还可以进行全新的融合(人脸+声纹)验证。目前支持人脸、声纹,将来还会 有指纹、虹膜等。
身份验证,主要包括注册、验证和模型操作,三个过程(SpeechConstant.MFV_SST) ; 其中每个过程又分声纹、人脸和融合(声纹+人脸)业务(SpeechConstant.MFV_SCENES) 。
注册:startWorking(com.iflytek.cloud.IdentityListener)开始会话前,设置程(SpeechConstant.MFV_SST) 值 为"enroll"时,指定当次会话过程为注册。注册,指由应用为用户指定一个唯一的字符串类型的授权ID SpeechConstant.AUTH_ID ,指定业务类型(SpeechConstant.MFV_SCENES) , 并上传相应的用户生理特征数据,为用户在服务器中建立授权ID与特征一一对应的模型,用于用户 身份验证。
验证:startWorking(com.iflytek.cloud.IdentityListener)开始会话前,设置程(SpeechConstant.MFV_SST) 值 为"verify"时,指定当次会话过程为验证。验证,即指定用户注册时的授权ID SpeechConstant.AUTH_ID ,和业务类型(SpeechConstant.MFV_SCENES) , 并上传相应用户生理特征数据,验证是否与服务器的模型生理特征一致。
操作:在execute(java.lang.String, java.lang.String, java.lang.String, com.iflytek.cloud.IdentityListener)前,指定用户注册时的授权IDSpeechConstant.AUTH_ID, 和业务类型(SpeechConstant.MFV_SCENES) ,并在execute(java.lang.String, java.lang.String, java.lang.String, com.iflytek.cloud.IdentityListener)指定操作类型, 可以对已存在的用户模型进行,查询、删除和下载等操作。
声纹密码:当前声纹密码,只支持在线方式,需要网络可用,方可正常使用此功能。 当前声纹密码只支持汉语的随机数字串。
随机数字串声纹密码,注册时,应用层调用execute(java.lang.String, java.lang.String, java.lang.String, com.iflytek.cloud.IdentityListener)获取声纹密码, 将由服务器随机产生2~9组各8位的随机阿拉伯数字串,如 “57280964-96382704-59387624”,通过IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean) 回调给应用层。在获取密码后,应用层调用startWorking(com.iflytek.cloud.IdentityListener)开始注册,通过 writeData(java.lang.String, java.lang.String, byte[], int, int)把用户读 密码的音频依次传给SDK,当一组说完时,SDK将回调IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean) 通知应用层,当组密码识别的状态,应用层可根据此状态,决定继续进行下一组读密码, 或者重新开始,或者结束注册。在验证时,通过 VerifierUtil.generateNumberPassword(int) 生成随机数字串密码后,调用startWorking(com.iflytek.cloud.IdentityListener)开始写入(writeData(java.lang.String, java.lang.String, byte[], int, int))用户 的音频,并通过IdentityListener获取当前验证状态。
当前声纹在随机密码方式下,支持未压缩的16位,单声道,采样率为 16000,字节顺序为Little-Endian的Windows PCM音频。使用默认的参数值,或通过 setParameter(java.lang.String, java.lang.String)函数指定。
人脸:人脸识别通过对比注册和验证时,图片中人脸的生理特征,辨别是否是同一个人。 人脸的注册和验证比声纹的简单,设置业务类型和操作类型后,传入一张图片数据即可。
当前人脸识别支持以下图片格式:PNG,BMP, JPG,GIF。不需要针对不同格式设置格式参数,引擎 根据传入的图片数据自动辨别。
融合:即融合多种生理特征进行注册、验证。
本类使用单例,调用者使用本类的对象,只需要通过createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建一次对 象后,便可一直使用该对象,直到通过调用destroy()进行单例对象销毁。调用者可 通过getVerifier()获取当前已经创建的单例。在销毁本类的单例对象后,需要先通过 createVerifier(android.content.Context, com.iflytek.cloud.InitListener)再次创建单例对象,方可再使用。
在当前应用生命周期第一次使用本类的任何函数前,须先调用 SpeechUtility.createUtility(android.content.Context, java.lang.String) 进行SDK初始化。
#嵌套类概要
从类继承的嵌套类/接口 com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.msc.module.SpeechInterface.ENGINE_MODE
#方法概要
限定符和类型 | 字段和说明 |
---|---|
void |
cancel() 取消会话 取消当前会话。 |
static IdentityVerifier |
createVerifier(android.content.Context context, InitListener listener) 创建单例对象 使用此函数创建一个本类单例对象。 |
boolean |
destroy() 销毁单例对象 通过本函数,销毁由createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建的单例对象。 |
int |
execute(java.lang.String ssub, java.lang.String cmd, java.lang.String params, IdentityListener listener) 模型操作 模型操作,包括查询,删除,下载。 |
java.lang.String |
getParameter(java.lang.String key)获取参数 参考setparameter(java.lang.String, java.lang.String)。 |
static IdentityVerifier |
getVerifier() 获取身份验证对象 通过函数获取已创建的单例对象。 |
boolean |
isWorking() 是否正在会话 获取当前是否正在会话。 |
boolean |
setParameter(java.lang.String key, java.lang.String value) 参数设置 可设置的参数有: SpeechConstant.SUBJECT:业务类型,可选值:mfv,ivp,ifr。 |
int |
startWorking(IdentityListener listener) 开始会话 调用此函数开始注册或验证。 |
void |
stopWrite(java.lang.String ssub) 停止写入数据 调用此函数,告知SDK数据写入已完成。 |
int |
writeData(java.lang.String ssub, java.lang.String params, byte[] buffer, int offset, int length) 写入数据 调用此函数写入数据前,需要先调用startWorking(com.iflytek.cloud.IdentityListener)开始一次会话。 |
从类继承的方法 com.iflytek.cloud.msc.module.SpeechInterface
setParameter
从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#方法详细资料
#createVerifier
public static IdentityVerifier createVerifier(android.content.Context context,
InitListener listener)
创建单例对象
使用此函数创建一个本类单例对象。当成功创建一次单例对象后,可一直使用此对象, 直到调用destroy()销毁已创建的单例对象为止。若在当前应用生命周期内调用 destroy()前再次调用本函数,则直接返回已创建的单例对象。可通过 getVerifier()获取已创建的单例对象。
参数:
- context - Context应用上下文对象
- listener - 构造回调监听器,通过监听器获取构造状态
返回:
身份验证对象 另请参阅:
destroy(), getVerifier()
#getVerifier
public static IdentityVerifier getVerifier()
获取身份验证对象
通过函数获取已创建的单例对象。当单例对象未创建时,将返回null,此时应先通过 createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建单例对象。
返回:
身份验证对象
另请参阅:
createVerifier(android.content.Context, com.iflytek.cloud.InitListener), destroy()
#startWorking
public int startWorking(IdentityListener listener)
开始会话
调用此函数开始注册或验证。在调用本函数开始注册或验证前,通过 setParameter(String, String)设置相应的参数。
身份认证包括注册和验证。验证前需要先注册建立模型。调本此函数前,通过 setParameter(String, String)设置业务类型和过程类型。
其他需要注意的地方,请参考类说明。
参数:
- listener - 会话监听器
返回:
错误码,0表示成功,请参照ErrorCode
另请参阅: getVerifier(), setParameter(java.lang.String, java.lang.String), writeData(java.lang.String, java.lang.String, byte[], int, int), cancel()
#writeData
public int writeData(java.lang.String ssub,
java.lang.String params,
byte[] buffer,
int offset,
int length)
写入数据
调用此函数写入数据前,需要先调用startWorking(com.iflytek.cloud.IdentityListener)开始一次会话。
写入的数据因业务类型而异:在声纹时,写入为音频数据;在人脸时,写入为图片数据。 关于支持的数据格式,请参考本类的介绍。
可以多次调用此函数,分次把数据传给SDK。当IdentityListener.onError(com.iflytek.cloud.SpeechError) 回调错误,或IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean) 返回最后一个结果时,当次会话结束,应该停止调用此函数写入数据。
参数:
- ssub - 子业务类型,可选值:ivp(声纹),ifr(人脸)
- params - 子业务相关参数:
- 声纹业务,包括,总注册次数(rgn,值范围[2, 9]),密码(ptxt, 见类说明),密码 类型(pwdt, 值范围{3});
- 人脸业务,暂无。
- buffer - 数据源
- offset - buffer有效数据开始位置
- length - buffer有效数据长度
返回:
错误码,0表示成功,其他则表示有错误,参考ErrorCode 。
另请参阅:
startWorking(com.iflytek.cloud.IdentityListener), IdentityListener, setParameter(java.lang.String, java.lang.String)
#stopWrite
public void stopWrite(java.lang.String ssub)
停止写入数据
调用此函数,告知SDK数据写入已完成。停止写入数据后,结果不能即时返回,视网络 情况等而异,一般在1秒内可通过IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean)获取到结果。当 IdentityListener.onError(com.iflytek.cloud.SpeechError)回调会话错误时,会话结束,将无结果返回。
在当次会话,已回调IdentityListener.onError(com.iflytek.cloud.SpeechError) 或者IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean)的最后一个结果时,会话自动结束,可不再调用此函数告知 SDK数据写入完成。
参数:
- ssub - 子业务类型,与writeData中的ssub对应,可选值:ivp(声纹),ifr(人脸)
另请参阅:
startWorking(com.iflytek.cloud.IdentityListener), cancel(), writeData(java.lang.String, java.lang.String, byte[], int, int)
#execute
public int execute(java.lang.String ssub,
java.lang.String cmd,
java.lang.String params,
IdentityListener listener)
模型操作
模型操作,包括查询,删除,下载。通过IdentityListener获取操作的状态和结果。
模型操作和开始会话函数startWorking(com.iflytek.cloud.IdentityListener)是两个不同的功能函数,执行此函数前, 不需要调用startWorking(com.iflytek.cloud.IdentityListener)开始会话。
调用此函数后,操作结果不能即时返回,视网络 情况等而异,一般在1秒内可通过IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean)获取到结果。当 IdentityListener.onError(com.iflytek.cloud.SpeechError)回调会话错误时,会话结束,将无结果返回。
参数:
- ssub - 子业务类型,可选值:ivp,ifr,ipt。
- cmd - 操作命令,可选值:query(模型查询),delete(模型删除),download (密码下载,暂时只用于声纹业务),add (添加组)。
- params - cmd参数。
- listener - 结果监听器。
返回:
状态, 当返回ErrorCode.SUCCESS 时,表示正常开始操作;否则,开始操作失败。
另请参阅:
startWorking(com.iflytek.cloud.IdentityListener),IdentityListener
#isWorking
public boolean isWorking()
是否正在会话
获取当前是否正在会话。如果当前调用startWorking(com.iflytek.cloud.IdentityListener)或execute(java.lang.String, java.lang.String, java.lang.String, com.iflytek.cloud.IdentityListener)后, IdentityListener没有通过IdentityListener.onError(com.iflytek.cloud.SpeechError)返回错误,或 IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean)返回最后一个结果时,当前正在会话中。反之,当前不 在会话中。(注意当IdentityListener.onResult(com.iflytek.cloud.IdentityResult, boolean)返回最后一个结果时,会话结束可 能有短暂的延时。)
返回:
false:否;true:是。
另请参阅:
startWorking(com.iflytek.cloud.IdentityListener), execute(java.lang.String, java.lang.String, java.lang.String, com.iflytek.cloud.IdentityListener), cancel()
#cancel
public void cancel()
取消会话
取消当前会话。会话被取消后,未返回的结果将不再返回。
另请参阅:
startWorking(com.iflytek.cloud.IdentityListener), execute(java.lang.String, java.lang.String, java.lang.String, com.iflytek.cloud.IdentityListener), stopWrite(java.lang.String)
#setParameter
public boolean setParameter(java.lang.String key,
java.lang.String value)
参数设置
可设置的参数有:
SpeechConstant.SUBJECT :业务类型,可选值:mfv,ivp,ifr。
SpeechConstant.MFV_SCENES :场景,mfv业务必须传此参数。
SpeechConstant.MFV_SST :会话类型。
SpeechConstant.MFV_VCM :验证模式,仅在融合验证场景下使用
SpeechConstant.MFV_AFC :确认周期(affirmance cycle),仅在灵活融合验证场景下使用。
SpeechConstant.ENGINE_TYPE :引擎类型(目前身份认证仅支持在线模式);
覆盖:
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
参数:
- key - 参数名称。
- value - 参数值。 返回:
true 设置成功,否则设置失败。
另请参阅:
startWorking(com.iflytek.cloud.IdentityListener), getParameter(java.lang.String)
#getParameter
public java.lang.String getParameter(java.lang.String key)
获取参数
参考setParameter(java.lang.String, java.lang.String)。
覆盖:
getParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
参数:
- key - 参数名称。
返回:
参数值。
另请参阅:
setParameter(java.lang.String, java.lang.String)
#destroy
public boolean destroy()
销毁单例对象
通过本函数,销毁由createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建的单例对象。
在调用本函数进行销毁前,应先保证当前不在会话中,否则,本函数将尝试取消当前 会话,并返回false,此时销毁失败。关于当前是否在会话中,请参考函数 isWorking()。若销毁失败,请在取消当前会话后,再次调用本函数重试。
当本函数返回true时,销毁成功。此时,之前创建的单例对象已不能再使用,否则, 将会报错。此时需要再使用,应先通过createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建一个新的单例 对象。
覆盖:
destroy 在类中 com.iflytek.cloud.msc.module.SpeechInterface
返回:
销毁成功:true;销毁失败:false。
另请参阅:
createVerifier(android.content.Context, com.iflytek.cloud.InitListener), cancel()
#类IdentityResult
com.iflytek.cloud
java.lang.Object
com.iflytek.cloud.IdentityResult
所有已实现的接口:
android.os.Parcelable
public class IdentityResult
extends java.lang.Object
implements android.os.Parcelable
#身份验证结果类
关于结果各字段的说明,请参考科大讯飞MSC集成指南 。
#嵌套类概要
从接口继承的嵌套类/接口 android.os.Parcelable
android.os.Parcelable.ClassLoaderCreator<T>, android.os.Parcelable.Creator<T>
#字段概要
限定符和类型 | 字段和说明 |
---|---|
static android.os.Parcelable.Creator<IdentityResult> |
CREATOR |
从接口继承的字段 android.os.Parcelable
CONTENTS_FILE_DESCRIPTOR, PARCELABLE_WRITE_RETURN_VALUE
#构造器概要
构造器和说明 |
---|
IdentityResult(java.lang.String result) 构造函数 应用集成时一般只用到已有的结果对象,不必自己构造新的对象。 |
#方法概要
限定符和类型 | 字段和说明 |
---|---|
int |
describeContents() |
java.lang.String |
getResultString() 获取识别结果 返回String类型的结果字符串,结果中字段说明请参考科大讯飞MSC集成指南 。 |
void |
writeToParcel(android.os.Parcel dest, int flags) |
从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#字段详细资料
#CREATOR
public static final android.os.Parcelable.Creator<IdentityResult> CREATOR
#构造器详细资料
#IdentityResult
public IdentityResult(java.lang.String result)
构造函数
应用集成时一般只用到已有的结果对象,不必自己构造新的对象。
- 参数:
result - json格式的结果
#方法详细资料
#getResultString
public java.lang.String getResultString()
获取识别结果
返回String类型的结果字符串,结果中字段说明请参考科大讯飞MSC集成指南 。
返回:
识别结果,json格式,结果中字段说明请参考科大讯飞MSC集成指南
#describeContents
public int describeContents()
指定者:
describeContents 在接口中 android.os.Parcelable
#writeToParcel
public void writeToParcel(android.os.Parcel dest,
int flags)
指定者:
writeToParcel 在接口中 android.os.Parcelable
#类FaceRequest
com.iflytek.cloud
java.lang.Object
com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.FaceRequest
public class FaceRequest
extends com.iflytek.cloud.msc.module.SpeechInterface
#人脸识别类
人脸识别与声纹密码类似,作为人生理特征身份认证的其中一种, 包括人脸检测、聚焦、注册、验证。在开始会话前,通过设置SpeechConstant.WFR_SST 指定业务类型。人脸识别的结果说明,请参考科大讯飞MSC集成指南 。
当前人脸识别支持以下图片格式:PNG,BMP, JPG,GIF。不需要针对不同格式设置格式参数,引擎 根据传入的图片数据自动辨别。
人脸注册(reg),应用给终端用户指定一个授权ID后,上传 用户的人脸照片,在服务器生成一个人脸模型,用于生理特征身份认证。
人脸验证(verify),应用指定由注册时的终端用户授权ID,上传 用户的人脸照片,通过注册时在服务器已经保存的人脸模型,验证与注册时是否为同一人。
人脸检测(detect),检测出图片中人脸的位置 (支持多张人脸) ,返回位置的坐标。用于 图片编辑、游戏等领域。
人脸聚焦(align),检测出图片中人脸的关键点坐标 (支持多张人脸),返回坐标集。
在当前应用生命周期第一次使用本类的任何函数前,须先调用 SpeechUtility.createUtility(android.content.Context, java.lang.String) 进行SDK初始化。
#嵌套类概要
从类继承的嵌套类/接口 com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.msc.module.SpeechInterface.ENGINE_MODE
#构造器概要
构造器和说明 |
---|
FaceRequest (android.content.Context context) 构造函数 创建实例用于人脸识别。 |
#方法概要
限定符和类型 | 字段和说明 |
---|---|
void |
cancel() 取消人脸识别 取消当前人脸识别会话。 |
boolean |
destroy() |
java.lang.String |
getParameter(java.lang.String key) 获取识别参数 获取指定的参数的当前值。 |
int |
sendRequest(byte[] img, RequestListener listener) 开始人脸识别 开始人脸注册、验证、检测和聚焦等。 |
boolean |
setParameter(java.lang.String key, java.lang.String value) 设置参数 在会话开始前,设置当前会话的业务类型等。 |
从类继承的方法 com.iflytek.cloud.msc.module.SpeechInterface
setParameter
从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#构造器详细资料
#FaceRequest
public FaceRequest(android.content.Context context)
构造函数
创建实例用于人脸识别。
参数:
- context -
#方法详细资料
#sendRequest
public int sendRequest(byte[] img,
RequestListener listener)
开始人脸识别
开始人脸注册、验证、检测和聚焦等。在调用本函数开始开会前,可以通过 setParameter(String, String)来设置参数,指定业务类型等。
参数:
- img - 图片数据
- listener - 识别状态、结果监听器
返回:
错误码,0表示成功,否则出现错误,参考ErrorCode类的错误码定义。
另请参阅:
setParameter(String, String), FaceRequest(Context), RequestListener, cancel()
#cancel
public static FaceDetector getDetector()
取消人脸识别
取消当前人脸识别会话。
另请参阅:
sendRequest(byte[], RequestListener)
#setParameter
public boolean setParameter(java.lang.String key,
java.lang.String value)
设置参数
在会话开始前,设置当前会话的业务类型等。
与人脸相关的参数有:
SpeechConstant.NET_TIMEOUT : 网络连接超时时间 SpeechConstant.WFR_SST : 人脸识别业务类型 SpeechConstant.AUTH_ID : 授权ID
覆盖:
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
参数:
- key - 参数名称
- value - 参数值
返回:
true 设置成功,否则设置失败
另请参阅:
getParameter(String), sendRequest(byte[], RequestListener)(byte[], RequestListener)
#getParameter
public java.lang.String getParameter(java.lang.String key)
获取识别参数
获取指定的参数的当前值。
某些有默认的值的参数,如SpeechConstant.NET_TIMEOUT ,在应用层未 调用setParameter(String, String)来设置参数值前,可能获取到的是null值, 但在实际会话会始时,SDK会使用默认值传给服务器。
覆盖:
getParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
参数:
- key - 参数名称
返回:
参数值
另请参阅:
setParameter(String, String)
#destroy
public boolean destroy()
覆盖:
destroy 在类中 com.iflytek.cloud.msc.module.SpeechInterface
#类SpeakerVerifier
com.iflytek.cloud
java.lang.Object
com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.SpeakerVerifier
public class SpeakerVerifier
extends com.iflytek.cloud.msc.module.SpeechInterface
#声纹密码
声纹识别(Voiceprint Recognize),是一项根据语音波形反映说话人生理和行 为特征的语音参数,自动识别说话人身份的技术。声纹识别所提供的安全性可与其他 生物识别技术(指纹、掌形和虹膜)相媲美,且只需要电话和麦克风即可,数据采集 极为方便,造价低廉,是最为经济、可靠、简便和安全的身份识别方式。
声纹密码接口,包含下载密码文本、注册、验证。当前声纹密码,只支持在线方式, 需要网络可用,方可正常使用此功能。当前声纹密码只支持汉语的随机数字串,见 SpeechConstant.ISV_PWDT 参数。 (文本密码及自由说方式正在研发中。)
随机数字串方式,注册时,应用层调用getPasswordList(com.iflytek.cloud.SpeechListener)获取声纹密码, 将由服务器随机产生2~9组各8位的随机阿拉伯数字串,如 “57280964-96382704-59387624”,通过SpeechListener.onBufferReceived(byte[]) 回调给应用层。在获取密码后,应用层调用startListening(com.iflytek.cloud.VerifierListener)开始注册,通过SDK 内置录音模块(当SpeechConstant.AUDIO_SOURCE >-1时),或 writeAudio(byte[], int, int)(当SpeechConstant.AUDIO_SOURCE=-1时)把用户读 密码的音频依次传给SDK,当一组说完时,SDK将回调VerifierListener.onResult(com.iflytek.cloud.VerifierResult) 通知应用层,当组密码识别的状态,应用层可根据此状态,决定继续进行下一组读密码, 或者重新开始,或者结束注册。在验证时,通过generatePassword(int)生成随机数 字串密码后,调用startListening(com.iflytek.cloud.VerifierListener)开始读取用户的音频,并通过 VerifierListener 获取当前验证状态。
固定文本方式,注册时,应用层调用getPasswordList(com.iflytek.cloud.SpeechListener)获取声纹密码,将由 服务器返回支持的文本密码,当前仅支持文本“芝麻开门”,通过 SpeechListener.onBufferReceived (byte[])回调给应用层。获取密码后,应用层调用 startListening(com.iflytek.cloud.VerifierListener)开始注册,通过SDK内置录音模块(当 SpeechConstant.AUDIO_SOURCE >-1时),或writeAudio(byte[], int, int)(当 SpeechConstant.AUDIO_SOURCE =-1时)把用户的密码音频传给SDK。注册 时需要读取获取到的2~9组密码文本,把音频传给SDK,以获取声纹特征。当每次说完时, SDK将回调VerifierListener.onResult(com.iflytek.cloud.VerifierResult) 通知应用层,当次密码识别的状态,应用 层可根据此状态,决定继续进行下一次读密码,或者重新开始,或者结束注册。在验证时, 同样通过getPasswordList(com.iflytek.cloud.SpeechListener)获取声纹密码,在获取密码后,应用层调用 startListening(com.iflytek.cloud.VerifierListener)开始验证,并通过VerifierListener 获取当前验证状态。
自由说方式,注册时,应用层调用startListening(com.iflytek.cloud.VerifierListener)开始注册,通过SDK内置录 音模块(当SpeechConstant.AUDIO_SOURCE >-1时),或 writeAudio(byte[], int, int)(当SpeechConstant.AUDIO_SOURCE =-1时)把用户的 密码音频传给SDK。注册时只需要一次即可。说完时,SDK将回调 VerifierListener.onResult(com.iflytek.cloud.VerifierResult) 通知应用层,当次密码识别的状态,应用层可根据此 状态,决定已完成注册,或者重新开始,或者结束注册。在验证时,与注册的过程相当。
为了提高安全性,建议应用对用来进行声纹注册的用户ID,与实际用户可见的ID进行映 射,让外部无法通过用户可见ID获取到用户声纹ID。
本类使用单例,调用者使用本类的对象,只需要通过createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建一次对 象后,便可一直使用该对象,直到通过调用destroy()进行单例对象销毁。调用者可 通过getVerifier()获取当前已经创建的单例。在销毁本类的单例对象后,需要先通过 createVerifier(android.content.Context, com.iflytek.cloud.InitListener)再次创建单例对象,方可再使用。
在当前应用生命周期第一次使用本类的任何函数前,须先调用 SpeechUtility.createUtility(android.content.Context, java.lang.String) 进行SDK初始化。
#嵌套类概要
从类继承的嵌套类/接口 com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.msc.module.SpeechInterface.ENGINE_MODE
#方法概要
限定符和类型 | 字段和说明 |
---|---|
void |
cancel() 取消会话 通过此函数取消当前的会话。 |
static SpeakerVerifier |
createVerifier(android.content.Context context, InitListener listener) 创建单例对象 使用此函数创建一个本类单例对象。 |
boolean |
destroy() 销毁单例对象 通过本函数,销毁由createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建的单例对象。 |
java.lang.String |
generatePassword(int length) 生成随机数字密码 当使用数字密码方式验证时,需要先通过本函数,生成一个指定长度的随机数字密码, 用于验证时由用户读这个随机数字密码,服务器通过音频里面随机码及声纹特征是否一致, 验证是否是同一个用户。 |
java.lang.String |
getParameter(java.lang.String key) 获取参数 获取指定的参数的当前值。 |
void |
getPasswordList(SpeechListener listener) 获取声纹密码 在随机密码或固定文本注册或验证时,需要先通过此接口获取声纹密码,再进行注 册或验证。 |
static SpeakerVerifier |
getVerifier() 获取单例对象 通过函数获取已创建的单例对象。 |
boolean |
isListening() 是否在会话中 通过此函数,获取当前SDK是否正在进行声纹会话。 |
int |
sendRequest(java.lang.String cmd, java.lang.String auth_id, SpeechListener listener) 模型操作 通过本函数,对已存在的用户声纹模型进行查询和删除。 |
boolean |
setParameter(java.lang.String key, java.lang.String value) 参数设置 在开始会话前,通过本函数,设置会话的参数。 |
int |
startListening(VerifierListener listener) 开始录音 调用此函数,开始声纹注册和验证。 |
void |
stopListening() 停止录音 调用本函数告知SDK,当前会话音频已全部录入。 |
int |
writeAudio(byte[] buffer, int offset, int length) 写入录音数据 通过调用此函数,把音频数据传给SDK。 |
从类继承的方法 com.iflytek.cloud.msc.module.SpeechInterface
setParameter
从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#方法详细资料
#createVerifier
public static SpeakerVerifier createVerifier(android.content.Context context,
InitListener listener)
创建单例对象
使用此函数创建一个本类单例对象。当成功创建一次单例对象后,可一直使用此对象, 直到调用destroy()销毁已创建的单例对象为止。若在当前应用生命周期内调用 destroy()前再次调用本函数,则直接返回已创建的单例对象。可通过 getVerifier()获取已创建的单例对象。
参数:
- context - 应用上下文
- listener - 对象初始化监听器
返回:
声纹对象
另请参阅:
destroy(), getVerifier()
#getVerifier
public static SpeakerVerifier getVerifier()
获取单例对象
通过函数获取已创建的单例对象。当单例对象未创建时,将返回null,此时应先通过 createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建单例对象。
返回:
声纹对象
另请参阅:
createVerifier(android.content.Context, com.iflytek.cloud.InitListener),destroy()
#getPasswordList
public void getPasswordList(SpeechListener listener)
获取声纹密码
在随机密码或固定文本注册或验证时,需要先通过此接口获取声纹密码,再进行注 册或验证。
在调用本函数前,通过setParameter(String, String)指定参数1为 SpeechConstant.ISV_PWDT ,设置当前要获取的密码类型。获取固定文本密 码时,参数2值为"1";获取随机数字密码时,参数2值为"3"。
文本密码JSON结果示例:{"txt_pwd":["芝麻开门"]}
数字密码JSON结果示例: {"num_pwd":["03285469","09734658","53894276","57392804","68294073"]}
参数:
- listener - 获取数据回调,通过此监听获取当前获取密码的状态和结果。密码 结果说明请参考科大讯飞MSC集成指南MSC集成指南 。
另请参阅:
startListening(com.iflytek.cloud.VerifierListener), setParameter(String, String), SpeechConstant.ISV_PWDT
#generatePassword
public java.lang.String generatePassword(int length)
生成随机数字密码
当使用数字密码方式验证时,需要先通过本函数,生成一个指定长度的随机数字密码, 用于验证时由用户读这个随机数字密码,服务器通过音频里面随机码及声纹特征是否一致, 验证是否是同一个用户。
参数:
- length - 随机字符串长度,当前只支持8位。
返回:
随机字符串
另请参阅:
startListening(VerifierListener), SpeechConstant.ISV_PWDT
#startListening
public int startListening(VerifierListener listener)
开始录音
调用此函数,开始声纹注册和验证。
目前声纹功能不支持多线程,所以在一次会话开始(调用本函数或 sendRequest(String, String, SpeechListener))后,直到结束前(结果返回完 毕,或出现错误),不能再调用本函数开始新的会话。一次会话,即从会话开始,到结 束为止。
声纹功能使用,包括注册和验证、鉴别(见参数SpeechConstant.ISV_SST )。 在验证某个音频是否与用户的ID一致前,要先建立这个用户的声纹特征, 此过程称为注册。如前文所说,声纹的验证方式分为固定文本密码、随机数字密码以及 自由说三种方式。相应的,在注册时,也需要使用与验证一致的方式。同一个用户ID可 以注册多种方式的模型,但同一种方式只能有一个模型。可通过模型操作函数 sendRequest(String, String, SpeechListener)删除不要的模型。
在调用本函数开始注册或验证前,通过setParameter(String, String)设置相 应的参数。
调用本函数开始声纹后,通过SDK的录音机录取用户通过麦克风读入的音频(当 SpeechConstant.AUDIO_SOURCE 值>=0时),或由应用层调用 writeAudio(byte[], int, int)写入音频流,获取用于注册或验证的音频。在完成音频 录入(包括麦克风或写音频流方式)后,通过调用stopListening()告知SDK已完 成音频录入,或由SDK自带的VAD(Voice Activity Detection,静音抑制)自动结束音频录 入,见VerifierListener.onEndOfSpeech() 。(关于写入音流方式的SDK自动结束 录入应注意的地方,请参考writeAudio(byte[], int, int);VAD端点长度设置,请 参考setParameter(String, String))
可通过cancel()取消当前的会话。
声纹模型操作请参考sendRequest(String, String, SpeechListener)。注册过程和 验证结果说明请参考VerifierListener 及VerifierResult 。
参数:
- listener - 声纹监听器,获取当前声纹注册或验证、鉴别的状态和结果。
返回:
是否成功开始录音,ErrorCode.SUCCESS 表示成功,其他值表示有错误, 具体错误码,请参考ErrorCode 。
另请参阅:
createVerifier(android.content.Context, com.iflytek.cloud.InitListener), setParameter(String, String), writeAudio(byte[], int, int), stopListening(), VerifierListener, cancel()
#stopListening
public void stopListening()
停止录音
调用本函数告知SDK,当前会话音频已全部录入。
在调用本函数后,已录入的音频还在继续上传到服务器,结果不会马上就返回,当前会 话还在继续,直到结果返回完毕,或出现错误。
要取消会话,请参考cancel()函数。
当应用调用本函数结束停止录音时,SDK不会再回调 VerifierListener.onEndOfSpeech() 。相反的,当SDK回调 VerifierListener.onEndOfSpeech() 时,应用层可不必再调用本函数通知SDK停止 录音。
另请参阅:
startListening(VerifierListener), writeAudio(byte[], int, int), VerifierListener.onEndOfSpeech(), cancel()
#writeAudio
public int writeAudio(byte[] buffer,
int offset,
int length)
写入录音数据
通过调用此函数,把音频数据传给SDK。
仅在SpeechConstant.AUDIO_SOURCE值为-1时,需要通过调用本函数,把 音频数据传给SDK。在写入音频数据前,应先通过startlistening(VerifierListener) 开启会话。在结束录音数据写入后,调用stopListening()告知应用层,当前会话 音频数据已全部写入。
当SDK回调VerifierListener.onEndOfSpeech() 时,说明SDK已经通过VAD检测 到了静音末端点,应该立即停止写入音频数据。当SDK回调 VerifierListener.onResult(VerifierResult) 返回完结果,或回调 VerifierListener.onError(SpeechError) 返回错误时,也应该停止当次会话的音频写 入。
声纹支持的音频格式,请参考setParameter(String, String)的参数说明。
参数:
- buffer - 要写入的录音数据缓存
- offset - 实际音频在传入缓存的起始点
- length - 音频数据长度
返回:
是否成功写入数据,ErrorCode.SUCCESS表示成功,其他值表示有错误, 具体错误码,请参考ErrorCode 。
另请参阅:
startListening(VerifierListener), stopListening(), VerifierListener
#isListening
public boolean isListening()
是否在会话中
通过此函数,获取当前SDK是否正在进行声纹会话。应用层可通过此函数,查询能否 开始一路新的会话等。
调用了stopListening()停止录音后,如果会话未出现错误或返回最后的结果, 当前状态依然处于会话中,即本函数会返回true。如果调用cancel()取消了会话, 则当前状态处于不在会话中。
返回:
会话状态,true:正在会话中;false:不在会话中。
另请参阅:
startListening(VerifierListener), stopListening(), cancel()
#cancel
public void cancel()
取消会话
通过此函数取消当前的会话。
在会话被取消后,当前会话结束,未返回的结果将不再返回。
另请参阅:
startListening(VerifierListener), stopListening()
#setParameter
public boolean setParameter(java.lang.String key,
java.lang.String value)
参数设置
在开始会话前,通过本函数,设置会话的参数。
每次设置的参数将在当前单例的生命周期内的后续所有会话生效。某些有默认值的参 数,如SpeechConstant.SAMPLE_RATE,没有特别需求时,可以不设置。除特 别说明外,所有参数都为可选设置。所有参数的详细说明,请参考 SpeechConstant。
声纹可设置参数有:
SpeechConstant.NET_TYPE:网络类型
SpeechConstant.NET_TIMEOUT:网络连接超时时间
SpeechConstant.KEY_SPEECH_TIMEOUT:语音输入超时时间
SpeechConstant.AUDIO_SOURCE:音频源
SpeechConstant.VAD_BOS:前端点超时
SpeechConstant.VAD_EOS:后端点超时
SpeechConstant.SAMPLE_RATE:识别采样率
SpeechConstant.ISV_SST:声纹业务类型,必须
SpeechConstant.ISV_VID:声纹模型id
SpeechConstant.ISV_PWDT:声纹密码类型,必须
SpeechConstant.ISV_RGN:训练次数
SpeechConstant.ISV_PWD:注册、验证使用的声纹密码,必须
SpeechConstant.ISV_AUDIO_PATH:声纹录音保存路径
SpeechConstant.ISV_CMD:操作声纹模型的命令,仅在模型操作时使用,必须
SpeechConstant.AUTH_ID:用户唯一标识(即用户ID), 必须
SpeechConstant.ENGINE_TYPE:引擎类型(目前声纹认证仅支持在线模式);
当前声纹在随机密码和固定文本密码方式下,支持未压缩的16位,单声道,采样率为 16000,字节顺序为Little-Endian的Windows PCM音频;在自由说方式下,支持未压 缩的16位,单声道,采样率为8000,字节顺序为Little-Endian的Windows PCM音频。
覆盖:
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
参数:
- key - 参数名称
- value - 参数值
返回:
成功:true;失败:false
另请参阅:
getParameter(String), startListening(VerifierListener)
#getParameter
public java.lang.String getParameter(java.lang.String key)
获取参数
获取指定的参数的当前值。
某些有默认的值的参数,如SpeechConstant.SAMPLE_RATE,在应用层未 调用setParameter(String, String)来设置参数值前,可能获取到的是null值, 但在实际会话会始时,SDK会使用默认值传给服务器。
覆盖:
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
参数:
- key - 参数名称,所有支持参数,参考setParameter(String, String)
返回:
参数值,值意义,参考SpeechConstant对各参数的说明。
另请参阅:
setParameter(String, String)
#destroy
public boolean destroy()
销毁单例对象
通过本函数,销毁由createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建的单例对象。
在调用本函数进行销毁前,应先保证当前不在会话中,否则,本函数将尝试取消当前 会话,并返回false,此时销毁失败。关于当前是否在会话中,请参考函数 isListening()。若销毁失败,请在取消当前会话后,再次调用本函数重试。
当本函数返回true时,销毁成功。此时,之前创建的单例对象已不能再使用,否则, 将会报错。此时需要再使用声纹,应先通过createVerifier(android.content.Context, com.iflytek.cloud.InitListener)创建一个新的单例 对象。
覆盖:
setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterface
返回:
销毁成功:true;销毁失败:false。
另请参阅:
createVerifier(android.content.Context, com.iflytek.cloud.InitListener), cancel()
#sendRequest
public int sendRequest(java.lang.String cmd,
java.lang.String auth_id,
SpeechListener listener)
模型操作
当使用数字密码方式验证时,需要先通过本函数,生成一个指定长度的随机数字密码, 用于验证时由用户读这个随机数字密码,服务器通过音频里面随机码及声纹特征是否一致, 验证是否是同一个用户。通过本函数,对已存在的用户声纹模型进行查询和删除。
调用本函数开始查询或删除操作前,需要通过setParameter(String, String) 设置要操作的模型参数。模型参数包括密码类型(SpeechConstant.ISV_PWDT), 以及所选类型下的相关参数:在固定文本密码方式下的,密码文本值 (SpeechConstant.ISV_PWD);自由说方式下的采样率 (SpeechConstant.SAMPLE_RATE);随机密码方式下则不用设置额外的参数。
结果说明
操作结果将通过SpeechListener.onBufferReceived(byte[]),结果为ASCII编 码的JSON格式的文本。包含两个参数:"cmd"、"ret"。"cmd"取值与请求时对应,"ret"的 值为ErrorCode.SUCCESS时,表示操作成功;其他值则是操作失败,如 ErrorCode.MSP_ERROR_FAIL表示模型不存在等,具体错误码,参考 ErrorCode 。
若出现其他如网络或参数错误,则通过SpeechListener.onCompleted(SpeechError) 返回对应的错误码,具体错误码,参考ErrorCode 。
参数:
- cmd - 操作命令,查询:que;删除:del。
- auth_id - 授权ID(即用户ID),参考SpeechConstant.AUTH_ID参数 的说明。
- listener - 操作状态监听器,通过监听器获取操作的状态和结果。
返回:
是否成功开始操作,若返回ErrorCode.SUCCESS,则表示成功;否则为失败。
另请参阅:
setParameter(String, String), startListening(VerifierListener), SpeechListener
#类VerifierResult
com.iflytek.cloud
java.lang.Object
com.iflytek.cloud.VerifierResult
public class VerifierResult
extends java.lang.Object
#声纹结果
本类通过构造函数VerifierResult(String),解析返回的结果信息到类的成员变量中, 应用可通过source获取返回的结果信息源文本,或通过ret等直接获取对应的 参数值。
从以下版本开始:
version:1073
另请参阅:
SpeakerVerifier, VerifierListener.onResult(com.iflytek.cloud.VerifierResult)
#字段概要
限定符和类型 | 字段和说明 |
---|---|
java.lang.String | dcs 描述信息 描述信息为描述当前返回结果的可选字段,如不需要,可直接忽略。 |
int | err 注册返回的错误码 在注册时,返回值ret为ErrorCode.SUCCESS时,还要参考此值, 查看当前注册过程是否成功,若此值与ErrorCode.SUCCESS不一致,则应根 据suc获取已完成注册的次数,根据错误码,修正并重试应该注册的那次(即 重试第suc+1那次)。 |
static int | MSS_ERROR_IVP_EXTRA_RGN_SOPPORT rgn超过最大支持次数 |
static int | MSS_ERROR_IVP_GENERAL 内核异常 |
static int | MSS_ERROR_IVP_MUCH_NOISE 太多噪音 |
static int | MSS_ERROR_IVP_NO_ENOUGH_AUDIO 音频长达不到自由说的要求 |
static int | MSS_ERROR_IVP_TEXT_NOT_MATCH 音频内容与给定文本不一致 |
static int | MSS_ERROR_IVP_TOO_LOW 声音太小 |
static int | MSS_ERROR_IVP_TRUNCATED 音频波形幅度太大,超出系统范围,发生截幅 |
static int | MSS_ERROR_IVP_UTTER_TOO_SHORT 音频太短 |
static int | MSS_ERROR_IVP_ZERO_AUDIO 没检测到音频 |
int | ret 返回值 类似于错误码,与VerifierListener.onError(SpeechError)中的 错误信息包含的错误码类似。 |
int | rgn 需要注册次数 除了自由说方式外,随机密码和固定文本方式,均需要多次注册,以获取用户的声纹 特征。 |
java.lang.Double | score 得分 得分为验证通过的参考,得分越高,验证的一致性越吻合。 |
java.lang.Double | score_raw 原始得分 应用一般用不到此参数,可直接忽略。 |
java.lang.String | source 服务端返回的原始结果文本 原始文本用于调试时查看返回结果文本是否正确,应用层可忽略此成员。 |
java.lang.String | sst 业务类型 业务类型,包括注册("train"),验证("verify")。 |
int | suc注册成功次数 当前注册的成功次数,当注册成功次数与需要注册次数 一致时,注册完成。 |
static java.lang.String | TAG |
java.lang.String | trs注册完成描述信息 当注册完成时,返回此字段,值为"ok",用于描述注册完成。 |
java.lang.String | vid 声纹ID 声纹ID在注册成功时由引擎生成,并返回给应用。 |
#构造器概要
构造器和说明 |
---|
VerifierResult(java.lang.String text) |
#方法概要
从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#字段详细资料
#TAG
public static final java.lang.String TAG
另请参阅:
常量字段值
#MSS_ERROR_IVP_GENERAL
public static final int MSS_ERROR_IVP_GENERAL
内核异常
另请参阅:
常量字段值
#MSS_ERROR_IVP_EXTRA_RGN_SOPPORT
public static final int MSS_ERROR_IVP_EXTRA_RGN_SOPPORT
rgn超过最大支持次数
另请参阅:
常量字段值
#MSS_ERROR_IVP_TRUNCATED
public static final int MSS_ERROR_IVP_TRUNCATED
音频波形幅度太大,超出系统范围,发生截幅
另请参阅:
常量字段值
#MSS_ERROR_IVP_MUCH_NOISE
public static final int MSS_ERROR_IVP_MUCH_NOISE
太多噪音
另请参阅:
常量字段值
#MSS_ERROR_IVP_TOO_LOW
public static final int MSS_ERROR_IVP_TOO_LOW
声音太小
另请参阅:
常量字段值
#MSS_ERROR_IVP_ZERO_AUDIO
public static final int MSS_ERROR_IVP_ZERO_AUDIO
没检测到音频
另请参阅:
常量字段值
#MSS_ERROR_IVP_UTTER_TOO_SHORT
public static final int MSS_ERROR_IVP_UTTER_TOO_SHORT
音频太短
另请参阅:
常量字段值
#MSS_ERROR_IVP_TEXT_NOT_MATCH
public static final int MSS_ERROR_IVP_TEXT_NOT_MATCH
音频内容与给定文本不一致
另请参阅:
常量字段值
#MSS_ERROR_IVP_NO_ENOUGH_AUDIO
public static final int MSS_ERROR_IVP_NO_ENOUGH_AUDIO
音频长达不到自由说的要求
另请参阅:
常量字段值
#sst
public java.lang.String sst
业务类型
业务类型,包括注册("train"),验证("verify")。与业务请求时一致。
是否一定出现:是
#ret
public int ret
返回值
类似于错误码,与VerifierListener.onError(SpeechError)中的 错误信息包含的错误码类似。返回值为成功 (ErrorCode.SUCCESS)时,如果是验证业务,则表示验证成功, 如果是注册还要参考err的值,如果err存在,且不为0,则 表示有错误,需要根据错误码进行相应的处理。
是否一定出现:是
另请参阅:
err
#dcs
public java.lang.String dcs
描述信息
描述信息为描述当前返回结果的可选字段,如不需要,可直接忽略。
是否一定出现:否
#score
public java.lang.Double score
得分
得分为验证通过的参考,得分越高,验证的一致性越吻合。应用层根据 ret值即可判断是否通过,得分值仅用于参考。
是否一定出现:在验证时是,注册时不出现。
#score_raw
public java.lang.Double score_raw
原始得分
应用一般用不到此参数,可直接忽略。
是否一定出现:在验证时是,注册时不出现。
#vid
public java.lang.String vid
声纹ID
声纹ID在注册成功时由引擎生成,并返回给应用。声纹ID在应用使用 声纹时暂时不需要传入。
是否一定出现:注册成功和验证时,一定出现
#suc
public int suc
注册成功次数
当前注册的成功次数,当注册成功次数与需要注册次数 一致时,注册完成。
是否一定出现:注册时一定出现,验证时不出现
另请参阅:
rgn
#rgn
public int rgn
需要注册次数
除了自由说方式外,随机密码和固定文本方式,均需要多次注册,以获取用户的声纹 特征。关于使用什么方式,请参考密码类型参数SpeechConstant.ISV_PWDT, 关于注册次数设置,请参考注册次数参数SpeechConstant.ISV_RGN。
是否一定出现:注册时一定出现,验证时不出现
另请参阅:
suc
#trs
public java.lang.String trs
注册完成描述信息
当注册完成时,返回此字段,值为"ok",用于描述注册完成。实际完成注册,可通过 对比suc与rgn相等即可。
是否一定出现:否
#err
public int err
注册返回的错误码
在注册时,返回值ret为ErrorCode.SUCCESS时,还要参考此值, 查看当前注册过程是否成功,若此值与ErrorCode.SUCCESS不一致,则应根 据suc获取已完成注册的次数,根据错误码,修正并重试应该注册的那次(即 重试第suc+1那次)。
是否一定出现:否
#source
public java.lang.String source
服务端返回的原始结果文本
原始文本用于调试时查看返回结果文本是否正确,应用层可忽略此成员。
是否一定出现:是
#构造器详细资料
#VerifierResult
public VerifierResult(java.lang.String text)
#接口IdentityListener
com.iflytek.cloud
public interface IdentityListener
#身份验证回调接口
通过实现此接口,获取当前身份验证的状态和结果
从以下版本开始:
version:1073 另请参阅:
IdentityResult, IdentityVerifier.startWorking(com.iflytek.cloud.IdentityListener)
#方法概要
限定符和类型 | 字段和说明 |
---|---|
void | onError(SpeechError error) 错误回调 当此函数回调时,说明当次会话出现错误,会话自动结束,再次调用 IdentityVerifier.startWorking(com.iflytek.cloud.IdentityListener)开启新的会话前,停止调用 IdentityVerifier.writeData(java.lang.String, java.lang.String, byte[], int, int)写入数据。 |
void | onEvent(int eventType, int arg1, int arg2, android.os.Bundle obj) 事件回调 扩展用接口,由具体业务进行约定。 |
void | onResult(IdentityResult result, boolean islast) 结果回调 一次会话的结果可能会多次返回(即多次回调此函数),通过参数2,判断是否是最后 一个结果,true时为最后一个结果,否则不是。 |
#方法详细资料
#onResult
void onResult(IdentityResult result,
boolean islast)
结果回调
一次会话的结果可能会多次返回(即多次回调此函数),通过参数2,判断是否是最后 一个结果,true时为最后一个结果,否则不是。当最后一个结果返回时,本次会话结束, 录音也会停止,在重新调用 IdentityVerifier.startWorking(com.iflytek.cloud.IdentityListener)开启新的会话前, 停止调用IdentityVerifier.writeData(java.lang.String, java.lang.String, byte[], int, int)写入数据, 当出现错误,或应用层调用IdentityVerifier.cancel()取消当次识别时,在当次识 别会话过程可能不会回调此函数。
参数:
- result - 验证结果,默认是未解析的Json结果,请参考IdentityResult
- islast - 是否最后一次的结果
另请参阅:
IdentityResult
#onError
void onError(SpeechError error)
错误回调
参数:
- error - 错误类型,获取错误码信息请查看SpeechError 详细错误码请看ErrorCode.
#onEvent
void onEvent(int eventType,
int arg1,
int arg2,
android.os.Bundle obj)
事件回调
扩展用接口,由具体业务进行约定。
参数:
- eventType - 消息类型。
- arg1 - 参数1,eventType为SpeechEvent.EVENT_VOLUME时,为音量值。
- arg2 - 参数2。
- obj - 扩展参数。
#接口VerifierListener
com.iflytek.cloud
public interface VerifierListener
#声纹监听器
通过实现此接口,获取当前声纹的状态和结果
识别监听器,请参考RecognizerListener
合成监听器,请参考SynthesizerListener
语音语义监听器,请参考SpeechUnderstanderListener
文本语义监听器,请参考TextUnderstanderListener
从以下版本开始:
version:1073
另请参阅:
SpeakerVerifier.startListening(VerifierListener)
#方法概要
限定符和类型 | 字段和说明 |
---|---|
void | onBeginOfSpeech() 开始说话 在录音模式(音频源参数设为 > -1时 )下, 调用开始录音函数后,会自动开启系统的录音 机,并在录音机开启后,会回调此函数(这中间的过程应该在几毫秒内,可以忽略,除非系 统响应很慢)。 |
void | onEndOfSpeech() 结束说话 在SDK检测到音频的静音端点时,回调此函数(在录音模式或写音频模式下都会回调, 应用层主动调用SpeakerVerifier.stopListening()则不会回调此函数, 在识别出错时,可能不会回调此函数)。 |
void | onError(SpeechError error) 错误回调 当此函数回调时,说明当次会话出现错误,会话自动结束,录音也会停止。 |
void | onEvent(int eventType, int arg1, int arg2, android.os.Bundle obj) 事件 扩展用接口,由具体业务进行约定。 |
void | onResult(VerifierResult result) 返回结果 返回的结果可能为null,请增加判断处理。 |
void | onVolumeChanged(int volume, byte[] data) 音量变化 当开始识别,到停止录音(停止写入音频流)或SDK返回最后一个结果自动结束识别为止, SDK检测到音频数据(正在录音或写入音频流)的音量变化时,多次通过此函数回调,告知应 用层当前的音量值。 |
#方法详细资料
#onVolumeChanged
void onVolumeChanged(int volume,
byte[] data)
音量变化
当开始识别,到停止录音(停止写入音频流)或SDK返回最后一个结果自动结束识别为止, SDK检测到音频数据(正在录音或写入音频流)的音量变化时,多次通过此函数回调,告知应 用层当前的音量值。应用层可通过此函数传入的值变化,改变自定义UI的画面等。
参数:
- volume - 当前音量值,范围[0-30]
另请参阅:
SpeakerVerifier.startListening(com.iflytek.cloud.VerifierListener), onBeginOfSpeech(), onEndOfSpeech(), SpeakerVerifier.stopListening()
#onBeginOfSpeech
void onBeginOfSpeech()
开始说话
在录音模式(音频源参数设为 > -1时 )下, 调用开始录音函数后,会自动开启系统的录音 机,并在录音机开启后,会回调此函数(这中间的过程应该在几毫秒内,可以忽略,除非系 统响应很慢)。
应用层可通过此函数回调,告知用户,当前可开始说话。若应用层使用的是声音提示, 则应该在调用开始录音函数前,提放提示音, 并在提示音非静音数据播放结束时,调用 开始录音函数,开始录音。若太早调用,则 可能会把提示音录进要识别的音频中,若太晚,则可能会漏掉部分用户说话的音频。
另请参阅:
SpeakerVerifier.startListening(com.iflytek.cloud.VerifierListener), onEndOfSpeech()
#onEndOfSpeech
void onEndOfSpeech()
结束说话
在SDK检测到音频的静音端点时,回调此函数(在录音模式或写音频模式下都会回调, 应用层主动调用SpeakerVerifier.stopListening()则不会回调此函数, 在识别出错时,可能不会回调此函数)。在此函数回调后,当前识别会话可能并没有结束, 识别结果可能还要等待一定的时间才会返回。
此函数回调后,应用层应立即停止调用SpeakerVerifier.writeAudio(byte[], int, int)写入音 频数据,(当音频源设置为音频流时(SpeechConstant.AUDIO_SOURCE为-1时) 否则,再通过SpeakerVerifier.writeAudio(byte[], int, int)写入的音频也会被忽略。
应用层可以通过此函数回调,告知用户,当次说话已结束,正在等待识别结果(若结果 未返回)等。
另请参阅:
onBeginOfSpeech(), onResult(com.iflytek.cloud.VerifierResult), onError(com.iflytek.cloud.SpeechError), SpeakerVerifier.writeAudio(byte[], int, int), SpeakerVerifier.stopListening()
#onResult
void onResult(VerifierResult result)
返回结果
返回的结果可能为null,请增加判断处理。
声纹注册: 在声纹注册过程,此函数可能会回调多次: 1,自由说模式下,如果不出现错误,则回调一次,返回注册成功的结果;如果出现错误 而引起重试,则根据重试次数,返回多次。 2,随机密码和固定文本模式下,根据注册次数,回调多次,如果有出现错误而引起重试, 回调次数则相应增加。
在注册过程中,说完当次的密码后,等待此函数回调当次注册是否正确,才能继续说下 一个密码,此时,会话还在继续,且录音机依然打开,所以应该在一个相对安静的环境下 进行注册,以减少环境的噪音对结果的影响。在注册过程,如果VerifierResult.ret 返回成功,而VerifierResult.err有错误,则当前会话可以继续,重试当次注册就可 以。参考VerifierResult对注册结果的说明。
声纹验证: 在声纹验证过程,一次会话回调一次,告知应用验证结果,验证通过或失败。
当最后一个结果返回时,本次会话结束,录音也会停止,在重新调用 SpeakerVerifier.startListening(com.iflytek.cloud.VerifierListener) 开启新的识别会话前, 停止调用SpeakerVerifier.writeAudio (byte[], int, int)写入音频(当音频源设置为音频流时 (SpeechConstant.AUDIO_SOURCE为-1时)。 当出现错误,或应用层调用SpeakerVerifier.cancel() 取消当次识别时,在当次识 别会话过程可能不会回调此函数。
参数:
- result - 结果数据
另请参阅:
onError(com.iflytek.cloud.SpeechError), SpeakerVerifier.cancel() , VerifierResult
#onError
void onError(SpeechError error)
错误回调
当此函数回调时,说明当次会话出现错误,会话自动结束,录音也会停止。应在再次调 用SpeakerVerifier.startListening(com.iflytek.cloud.VerifierListener) 开启新的识别会话前, 停止调用SpeakerVerifier.writeAudio (byte[], int, int)写入音频(当音频源设置为音频流时 (SpeechConstant.AUDIO_SOURCE为-1时)。
参数:
- error - 错误类型
另请参阅:
SpeechError,onResult(com.iflytek.cloud.VerifierResult), SpeakerVerifier.startListening(com.iflytek.cloud.VerifierListener)
#onEvent
void onEvent(int eventType,
int arg1,
int arg2,
android.os.Bundle obj)
事件
扩展用接口,由具体业务进行约定。例如eventType为0显示网络状态,agr1为网络连接值。
参数:
- eventType - 消息类型
- arg1 - 参数1
- arg2 - 参数2
- obj - 消息内容result - 结果数据
另请参阅:
SpeechEvent