public class SpeechEvaluator
extends com.iflytek.cloud.msc.module.SpeechInterface
语音评测是通过智能语音技术自动对发音水平进行评价、发音错误、缺陷定位和问题分
析的软件系统。评音评测提供汉语、英语两种语言的评测,支持单字(汉语专有)、词语
和句子朗读三种题型,请参考SpeechConstant.ISE_CATEGORY
。
本类使用单例,调用者使用本类的对象,只需要通过createEvaluator(Context, com.iflytek.cloud.InitListener)
创建
一次对象后,便可一直使用该对象,直到通过调用destroy()
进行单例对象销毁。调
用者可通过createEvaluator(Context, com.iflytek.cloud.InitListener)
获取当前已经创建的单例。在销毁本类的单例对象后,
需要先通过createEvaluator(Context, com.iflytek.cloud.InitListener)
再次创建单例对象,方可再使用。
在当前应用生命周期第一次使用本类的任何函数前,须先调用
SpeechUtility.createUtility(Context, java.lang.String)
进行SDK初始化。
SpeechUtility.createUtility(Context, java.lang.String)
,
EvaluatorListener
,
EvaluatorResult
限定符和类型 | 方法和说明 |
---|---|
void |
cancel(boolean notifyError)
取消会话
通过此函数取消当前的会话。
|
static SpeechEvaluator |
createEvaluator(Context context,
InitListener listener)
创建单例对象
使用此函数创建一个本类单例对象。
|
boolean |
destroy()
销毁单例对象
通过本函数,销毁由
createEvaluator(Context, com.iflytek.cloud.InitListener) 创建的单例对象。 |
static SpeechEvaluator |
getEvaluator()
获取单例对象
通过函数获取已创建的单例对象。
|
java.lang.String |
getParameter(java.lang.String key)
获取参数
获取指定的参数的当前值。
|
boolean |
isEvaluating()
是否在会话中
通过此函数,获取当前SDK是否正在进行会话。
|
boolean |
setParameter(java.lang.String key,
java.lang.String value)
设置参数
设置评测会话参数。
|
void |
startEvaluating(byte[] text,
java.lang.String textParams,
EvaluatorListener listener)
开始评测
传入byte[]类型的评测文本,开始评测会话。
|
void |
startEvaluating(java.lang.String text,
java.lang.String textParams,
EvaluatorListener listener)
开始评测
调用此函数,开始评测。
|
void |
stopEvaluating()
停止录音
调用本函数告知SDK,当前会话音频已全部录入。
|
boolean |
writeAudio(byte[] buffer,
int offset,
int length)
写入录音数据
通过调用此函数,把音频数据传给SDK。
|
public static SpeechEvaluator createEvaluator(Context context, InitListener listener)
使用此函数创建一个本类单例对象。当成功创建一次单例对象后,可一直使用此对象,
直到调用destroy()
销毁已创建的单例对象为止。若在当前应用生命周期内调用
destroy()
前再次调用本函数,则直接返回已创建的单例对象。可通过
getEvaluator()
获取已创建的单例对象。
destroy()
,
getEvaluator()
public static SpeechEvaluator getEvaluator()
通过函数获取已创建的单例对象。当单例对象未创建时,将返回null,此时应先通过
createEvaluator(Context, com.iflytek.cloud.InitListener)
创建单例对象。
createEvaluator(Context, com.iflytek.cloud.InitListener)
,
destroy()
public void startEvaluating(java.lang.String text, java.lang.String textParams, EvaluatorListener listener)
调用此函数,开始评测。
目前SDK不支持多线程,所以在调用本函数开始一次会话后,直到结束前(结果返回 完毕,或出现错误),不能再调用本函数开始新的会话。一次会话,即从会话开始,到结 束为止。
在调用本函数开始评测前,通过setParameter(java.lang.String, java.lang.String)
设置相
应的参数。
调用本函数开始评测后,通过SDK的录音机录取用户通过麦克风读入的音频(当
SpeechConstant.AUDIO_SOURCE
值>=0时),或由应用层调用
writeAudio(byte[], int, int)
写入音频流,获取用于评测的音频。在完成音频
录入(包括麦克风或写音频流方式)后,通过调用stopEvaluating()
告知SDK已完
成音频录入,或由SDK自带的VAD(Voice Activity Detection,静音抑制)自动结束音频录
入,见EvaluatorListener.onEndOfSpeech()
。(关于写入音流方式的SDK自动结束
录入应注意的地方,请参考writeAudio(byte[], int, int)
;VAD端点长度设置,请
参考setParameter(java.lang.String, java.lang.String)
)。
可通过cancel(boolean)
取消当前的会话。
text
- 评测文本textParams
- 当前会话参数,见setParameter(java.lang.String, java.lang.String)
支持的参数,
仅在当次会话生效,如无特殊要求,传入null即可。listener
- 监听器,获取状态和结果。writeAudio(byte[], int, int)
,
createEvaluator(Context, com.iflytek.cloud.InitListener)
,
getEvaluator()
,
stopEvaluating()
,
setParameter(java.lang.String, java.lang.String)
,
cancel(boolean)
,
startEvaluating(byte[], String, EvaluatorListener)
public void startEvaluating(byte[] text, java.lang.String textParams, EvaluatorListener listener)
传入byte[]类型的评测文本,开始评测会话。其他介绍请参考startEvaluating(java.lang.String, java.lang.String, com.iflytek.cloud.EvaluatorListener)
。
public boolean writeAudio(byte[] buffer, int offset, int length)
通过调用此函数,把音频数据传给SDK。
仅在SpeechConstant.AUDIO_SOURCE
值为-1时,需要通过调用本函数,把
音频数据传给SDK。在写入音频数据前,应先通过startEvaluating(java.lang.String, java.lang.String, com.iflytek.cloud.EvaluatorListener)
开启会话。在结束录音数据写入后,调用stopEvaluating()
告知应用层,当前会话
音频数据已全部写入。
当SDK回调EvaluatorListener.onEndOfSpeech()
时,说明SDK已经通过VAD检测
到了静音末端点,应该立即停止写入音频数据。当SDK回调
EvaluatorListener.onResult(com.iflytek.cloud.EvaluatorResult, boolean)
返回完结果,或回调
EvaluatorListener.onError(com.iflytek.cloud.SpeechError)
返回错误时,也应该停止当次会话的音频写
入。
支持的音频格式,请参考setParameter(String, String)
的参数说明。
buffer
- 要写入的录音数据缓存offset
- 实际音频在传入缓存的起始点length
- 音频数据长度EvaluatorListener.onError(com.iflytek.cloud.SpeechError)
获取错误信息。startEvaluating(java.lang.String, java.lang.String, com.iflytek.cloud.EvaluatorListener)
,
stopEvaluating()
,
EvaluatorListener
public boolean isEvaluating()
通过此函数,获取当前SDK是否正在进行会话。应用层可通过此函数,查询能否 开始一路新的会话等。
调用了stopEvaluating()
停止录音后,如果会话未出现错误或返回最后的结果,
当前状态依然处于会话中,即本函数会返回true。如果调用cancel(boolean)
取消了会话,
则当前状态处于不在会话中。
startEvaluating(java.lang.String, java.lang.String, com.iflytek.cloud.EvaluatorListener)
,
stopEvaluating()
,
cancel(boolean)
public void stopEvaluating()
调用本函数告知SDK,当前会话音频已全部录入。
在调用本函数后,已录入的音频还在继续上传到服务器,结果不会马上就返回,当前会 话还在继续,直到结果返回完毕,或出现错误。
要取消会话,请参考cancel(boolean)
函数。
当应用调用本函数结束停止录音时,SDK不会再回调
EvaluatorListener.onEndOfSpeech()
。相反的,当SDK回调
EvaluatorListener.onEndOfSpeech()
时,应用层可不必再调用本函数通知SDK停止
录音。
public void cancel(boolean notifyError)
通过此函数取消当前的会话。
在会话被取消后,当前会话结束,未返回的结果将不再返回。
public boolean setParameter(java.lang.String key, java.lang.String value)
设置评测会话参数。
可设置参数有:
SpeechConstant.ISE_AUDIO_PATH
音频保存路径
SpeechConstant.ISE_AUTO_TRACKING
朗读跟踪
SpeechConstant.ISE_CATEGORY
题型
SpeechConstant.ISE_ENT
引擎类型
SpeechConstant.ISE_INTERRUPT_ERROR
中断报错
SpeechConstant.ISE_PARSED
是否已标注
SpeechConstant.ISE_SOURCE_PATH
音频源文件路径
SpeechConstant.ISE_TRACK_TYPE
跟踪模式
SpeechConstant.ISE_USER_MODEL_ID
用户模型ID
SpeechConstant.KEY_REQUEST_FOCUS
音频焦点
SpeechConstant.NET_TIMEOUT
网络超时
SpeechConstant.RESULT_LEVEL
结果等级
SpeechConstant.SAMPLE_RATE
音频采样率
SpeechConstant.TEXT_BOM
文本字节顺序
SpeechConstant.TEXT_ENCODING
文本编码格式
SpeechConstant.VAD_ENABLE
启用VAD
SpeechConstant.VAD_BOS
VAD前端点
SpeechConstant.VAD_EOS
VAD后端点
SpeechConstant.ENGINE_TYPE
:引擎类型(目前评测仅支持在线模式);
当前评测支持未压缩的16位,单声道,采样率为16000或8000,字节 顺序为Little-Endian的Windows PCM音频。
setParameter
在类中 com.iflytek.cloud.msc.module.SpeechInterface
key
- 参数名称value
- 参数值public java.lang.String getParameter(java.lang.String key)
获取指定的参数的当前值。
某些有默认的值的参数,如SpeechConstant.SAMPLE_RATE
,在应用层未
调用setParameter(String, String)
来设置参数值前,可能获取到的是null值,
但在实际会话会始时,SDK会使用默认值传给服务器。
getParameter
在类中 com.iflytek.cloud.msc.module.SpeechInterface
key
- 参数名称,所有支持参数,参考setParameter(String, String)
SpeechConstant
对各参数的说明。setParameter(String, String)
public boolean destroy()
通过本函数,销毁由createEvaluator(Context, com.iflytek.cloud.InitListener)
创建的单例对象。
在调用本函数进行销毁前,应先保证当前不在会话中,否则,本函数将尝试取消当前
会话,并返回false,此时销毁失败。关于当前是否在会话中,请参考函数
isEvaluating()
。若销毁失败,请在取消当前会话后,再次调用本函数重试。
当本函数返回true时,销毁成功。此时,之前创建的单例对象已不能再使用,否则,
将会报错。此时需要再使用,应先通过createEvaluator(Context, com.iflytek.cloud.InitListener)
创建一个新的单例
对象。
createEvaluator(Context, com.iflytek.cloud.InitListener)
,
cancel(boolean)