Android 声纹人脸(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)。注册过程和 验证结果说明请参考VerifierListenerVerifierResult

参数:

  • 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",用于描述注册完成。实际完成注册,可通过 对比sucrgn相等即可。

是否一定出现:否

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