com.iflytek.cloud
java.lang.Object
com.iflytek.cloud.msc.module.SpeechInterface
com.iflytek.cloud.SpeechRecognizer
public final class SpeechRecognizer
extends com.iflytek.cloud.msc.module.SpeechInterfaceupdateLexicon(String, String, LexiconListener)。buildGrammar(String, String, GrammarListener)。 关于语法文件的编写,请参考 语法编写指南 。 关于语法ID设置,请参考setParameter(String, String)和 SpeechConstant.CLOUD_GRAMMAR 、 SpeechConstant.LOCAL_GRAMMAR 。createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)创建 一次对象后,便可一直使用该对象,直到通过调用destroy()进行单例对象销毁。调 用者可通过getRecognizer()获取当前已经创建的单例。在销毁 本类的单例对象后, 需要先通过createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)再次创建单例对象,方可再使用。SpeechUtility.createUtility(android.content.Context, java.lang.String) 进行SDK初始化。com.iflytek.cloud.msc.module.SpeechInterface.ENGINE_MODE| 限定符和类型 | 方法和说明 |
|---|---|
int | buildGrammar(java.lang.String grammarType, java.lang.String grammarContent,GrammarListener grammarListener) 构建语法文件 在使用语法识别时,需要先构建语法。 |
void | cancel() 取消会话 通过此函数取消当前的会话。 |
static SpeechRecognizer | createRecognizer(android.content.Context context, InitListener listener) 创建单例对象 使用此函数创建一个本类单例对象。 |
boolean | destroy() 销毁单例对象 通过本函数,销毁由createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)创建的单例对象。 |
java.lang.String | getParameter(java.lang.String key) 获取参数 获取指定的参数的当前值。 |
static SpeechRecognizer | getRecognizer() 获取单例对象 通过函数获取已创建的单例对象。 |
boolean | isListening() 是否在会话中 通过此函数,获取当前SDK是否正在进行会话。 |
boolean | setParameter(java.lang.String key, java.lang.String value) 参数设置 |
int | startListening(RecognizerListener listener) 开始录音 调用此函数,开始听写或语法识别。 |
void | stopListening() 停止录音 调用本函数告知SDK,当前会话音频已全部录入。 |
int | updateLexicon(java.lang.String lexiconName, java.lang.String lexiconContent, LexiconListener lexiconListener) 更新词典 更新应用个性化的词典,如联系人列表等。 |
int | writeAudio(byte[] buffer, int offset, int length) 写入录音数据 通过调用此函数,把音频数据传给SDK。 |
setParameterequals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitpublic static SpeechRecognizer createRecognizer(android.content.Context context,
InitListener listener)destroy()销毁已创建的单例对象为止。若在当前应用生命周期内调用 destroy()前再次调用本函数,则直接返回已创建的单例对象。可通过 getRecognizer()获取已创建的单例对象。public static SpeechRecognizer getRecognizer()createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)创建单例对象。public int buildGrammar(java.lang.String grammarType,
java.lang.String grammarContent,
GrammarListener grammarListener)grammarType - 语法类型,支持:abnf,bnfgrammarContent - 语法内容grammarListener - 语法构建回调,语法ID将通过 GrammarListener.onBuildFinish(String, SpeechError)回调返回,以用于 识别开始前设置SpeechConstant.CLOUD_GRAMMAR 或 SpeechConstant.LOCAL_GRAMMAR 参数,使用该语法。public int updateLexicon(java.lang.String lexiconName,
java.lang.String lexiconContent,
LexiconListener lexiconListener)lexiconName - 词典名称,{ "userword", "contact" }。lexiconContent - 词典内容,联系人列表:以换行符"\n"分隔的词语字符串,如"张三,李四,王五"; 用户热词:满足一定格式的json字符串,格式如下:{
"userword": [
{
"name": "default",
"words": [
"默认词条1",
"默认词条2"
]
},
{
"name": "词表名称1",
"words": [
"词条1的第一个词",
"词条1的第二个词"
]
},
{
"name": "词表名称2",
"words": [
"词条2的第一个词",
"词条2的第二个词"
]
}
]
}UserWords 类。lexiconListener - 词典更新回调接口public int startListening(RecognizerListener listener)setParameter(String, String)设置相 应的参数。SpeechConstant.AUDIO_SOURCE 值>=0时),或由应用层调用 writeAudio(byte[\], int, int)写入音频流,获取用于识别的音频。在完成音频 录入(包括麦克风或写音频流方式)后,通过调用stopListening()告知SDK已完 成音频录入,或由SDK自带的VAD(Voice Activity Detection,静音抑制)自动结束音频录 入,见RecognizerListener.onEndOfSpeech()。(关于写入音流方式的SDK自动结束 录入应注意的地方,请参考writeAudio(byte[\], int, int);VAD端点长度设置,请 参考setParameter(String, String)cancel()取消当前的会话。public int writeAudio(byte[] buffer,
int offset,
int length)SpeechConstant.AUDIO_SOURCE 值为-1时,需要通过调用本函数,把 音频数据传给SDK。在写入音频数据前,应先通过startListening(RecognizerListener) 开启会话。在结束录音数据写入后,调用stopListening()告知应用层,当前会话 音频数据已全部写入。RecognizerListener.onEndOfSpeech()时,说明SDK已经通过VAD检测 到了静音末端点,应该立即停止写入音频数据。当SDK回调 RecognizerListener.onResult(com.iflytek.cloud.RecognizerResult, boolean)返回完结果,或回调 RecognizerListener.onError(SpeechError)返回错误时,也应该停止当次会话的音频写 入。setParameter(String, String)的参数说明。buffer - 要写入的录音数据缓存offset - 实际音频在传入缓存的起始点length - 音频数据 长度ErrorCode.SUCCESS 表示成功,其他值表示有错误, 具体错误码,请参考ErrorCode 。public void stopListening()cancel()函数。RecognizerListener.onEndOfSpeech()。相反的,当SDK回调 RecognizerListener.onEndOfSpeech()时,应用层可不必再调用本函数通知SDK停止 录音。public boolean isListening()stopListening()停止录音后,如果会话未出现错误或返回最后的结果, 当前状态依然处于会话中,即本函数会返回true。如果调用cancel()取消了会话, 则当前状态处于不在会话中。public void cancel()public boolean setParameter(java.lang.String key,
java.lang.String value)SpeechConstant.NET_TIMEOUT : 网络连接超时时间SpeechConstant.KEY_SPEECH_TIMEOUT :语音输入超时时间SpeechConstant.LANGUAGE :语言SpeechConstant.ACCENT :语言区域SpeechConstant.DOMAIN :应用领域SpeechConstant.LOCAL_GRAMMAR :本地语法IDSpeechConstant.AUDIO_SOURCE :音频源SpeechConstant.BLUETOOTH : 蓝牙录音SpeechConstant.VAD_BOS :前端点超时SpeechConstant.VAD_EOS :后端点超时SpeechConstant.VAD_ENABLE :启用VADSpeechConstant.SAMPLE_RATE :识别采样率SpeechConstant.ASR_NBEST :句子级多候选SpeechConstant.ASR_WBEST :词级多候选SpeechConstant.ASR_PTT :设置是否有标点符号SpeechConstant.RESULT_TYPE :识别结果类型SpeechConstant.ASR_AUDIO_PATH :识别录音保存路径SpeechConstant.ENGINE_TYPE :引擎类型;ResourceUtil.ASR_RES_PATH :离线资源路径;ResourceUtil.ENGINE_START :启动离线引擎;ResourceUtil.GRM_BUILD_PATH :离线语法路径;SpeechConstant.DVC_INFO : 设备信息SpeechConstant.AUDIO_FORMAT_AUE :音频流编解码格式,非音频流操作并不支持此参数设置,如命令词识别setParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterfacekey - 参数名称value - 参数值public java.lang.String getParameter(java.lang.String key)SpeechConstant.SAMPLE_RATE ,在应用层未 调用setParameter(String, String)来设置参数值前,可能获取到的是null值, 但在实际会话会始时,SDK会使用默认值传给服务器。getParameter 在类中 com.iflytek.cloud.msc.module.SpeechInterfacekey - 参数名称,所有支持参数,参考setParameter(String, String)SpeechConstant 对各参数的说明。public boolean destroy()createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)创建的单例对象。isListening()。若销毁失败,请在取消当前会话后,再次调用本函数重试。createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)创建一个新的单例 对象。destroy 在类中 com.iflytek.cloud.msc.module.SpeechInterfacecom.iflytek.cloud.ui
java.lang.Object
android.app.Dialog
com.iflytek.cloud.ui.control.MscDialog
com.iflytek.cloud.ui.RecognizerDialogSpeechRecognizer。show()显示对话框后,自动开始录音(当设置 音频源 为麦克风时), 即相当于调用了SpeechRecognizer.startListening(com.iflytek.cloud.RecognizerListener)。 在录音过程中点击对话框内任意地方停止录音并等待结果返回,即相当于调用了 SpeechRecognizer.stopListening()。点击对话框外的 任意地方取消识别,对话框自动消失,即相当于调用了 SpeechRecognizer.cancel()。 可以调用Dialog.setOnDismissListener(android.content.DialogInterface.OnDismissListener)来设置对话框消失时的监听器。SpeechRecognizer的单例 进行识别会话(在首次通过构造函数创建实例时,自动创建 SpeechRecognizer的单例),所以应用不能在识别对话框还在进 行会话(对话框在显示)时,调用 SpeechRecognizer.startListening(com.iflytek.cloud.RecognizerListener) 开启新的会话。com.iflytek.cloud.ui.control.MscDialog.DismissCallBackandroid.content.DialogInterface.OnCancelListener, android.content.DialogInterface.OnClickListener, android.content.DialogInterface.OnDismissListener, android.content.DialogInterface.OnKeyListener, android.content.DialogInterface.OnMultiChoiceClickListener, android.content.DialogInterface.OnShowListenerBUTTON_NEGATIVE, BUTTON_NEUTRAL, BUTTON_POSITIVE, BUTTON1, BUTTON2, BUTTON3| 构造器和说明 |
|---|
| RecognizerDialog(android.content.Context context, InitListener listener)构造函数 初始化一个识别对话框。 |
| 限定符和类型 | 方法和说明 |
|---|---|
void | dismiss()消失 使弹出框消失,同时取消当前会话,即相当于点击了对话框外的其他地方, 或相当于调用了SpeechRecognizer.cancel()。 |
void | setListener(RecognizerDialogListener listener)设置识别对话框监听器 通过监听器,获取识别状态和结果。 |
void | setParameter(java.lang.String key, java.lang.String value)设置参数 请参考SpeechRecognizer.setParameter(String, String)说明。 |
void | setUILanguage(java.util.Locale lan)设置对话框语言 目前支持以下语言: 简体中文:Locale.CHINA; 繁体中文:Locale.TRADITIONAL_CHINESE; 美式英语:Locale.US; |
void | show()显示 显示对话框,并开始识别,即相当于调用了SpeechRecognizer.startListening(com.iflytek.cloud.RecognizerListener)。 |
public RecognizerDialog(android.content.Context context,
InitListener listener)SpeechRecognizer.createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)public void setListener(RecognizerDialogListener listener)public void setParameter(java.lang.String key,
java.lang.String value)SpeechRecognizer.setParameter(String, String)说明。public void setUILanguage(java.util.Locale lan)public void show()SpeechRecognizer.startListening(com.iflytek.cloud.RecognizerListener)。 若当前[音频源]((https://www.xfyun.cn/doc/mscapi/Android/androidbasic.html#audio-source)为麦克风, 将自动开启录音;若音频源 为 写音频流,则应用可通过调用SpeechRecognizer.writeAudio(byte[\], int, int)写 入音频数据。public void dismiss()SpeechRecognizer.cancel() 。 会话被取消后,未返回的结果将不再返回。com.iflytek.cloud
java.lang.Object
com.iflytek.cloud.RecognizerResultpublic class RecognizerResult
extends java.lang.Object
implements android.os.ParcelableSpeechConstant.CLOUD_GRAMMAR 为null)时,结果文本格式支持:plain、json(默认)。SpeechConstant.CLOUD_GRAMMAR 为非null)时,结果文本格式支持:plain、xml、 json(默认)。 android.os.Parcelable.ClassLoaderCreator<T>, android.os.Parcelable.Creator<T> | 限定符和类型 | 字段和说明 |
|---|---|
static android.os.Parcelable.Creator<RecognizerResult> | CREATOR |
| 构造器和说明 |
|---|
RecognizerResult(android.os.Parcel in)构造函数 应用层只通过RecognizerListener.onResult(com.iflytek.cloud.RecognizerResult, boolean)得到结果,可忽略此类的构造函数。 |
RecognizerResult(java.lang.String result)构造函数 应用层只通过RecognizerListener.onResult(com.iflytek.cloud.RecognizerResult, boolean)得到结果,可忽略此类的构造函数。 |
| 限定符和类型 | 方法和说明 |
|---|---|
int | describeContents() |
java.lang.String | getResultString()获取识别结果 |
void | writeToParcel(android.os.Parcel dest, int flags) |
public static final android.os.Parcelable.Creator<RecognizerResult> CREATORpublic RecognizerResult(android.os.Parcel in)RecognizerListener.onResult(com.iflytek.cloud.RecognizerResult, boolean)得到结果,可忽略此类的构造函数。in - 文本结果public RecognizerResult(java.lang.String result)RecognizerListener.onResult(com.iflytek.cloud.RecognizerResult, boolean)得到结果,可忽略此类的构造函数。result - 文本结果public int describeContents()describeContents` 在接口中 `android.os.Parcelablepublic java.lang.String getResultString()public void writeToParcel(android.os.Parcel dest,
int flags)writeToParcel` 在接口中 `android.os.Parcelablecom.iflytek.cloud
public interface RecognizerListenerRecognizerDialogListener| 限定符和类型 | 方法和说明 |
|---|---|
void | onBeginOfSpeech()开始说话 在录音模式(音频源 参数设为 > -1时 )下, 调用开始录音函数后,会自动开启系统的录音 机,并在录音机开启后,会回调此函数(这中间的过程应该在几毫秒内,可以忽略,除非系 统响应很慢)。 |
void | onEndOfSpeech()结束说话 在SDK检测到音频的静音端点时,回调此函数(在录音模式或写音频模式下都会回调, 应用层主动调用SpeechRecognizer.stopListening()则不会回调此函数, 在识别出错时,可能不会回调此函数)。 |
void | onError(SpeechError error)错误回调 当此函数回调时,说明当次会话出现错误,会话自动结束,录音也会停止。 |
void | onEvent(int eventType, int arg1, int arg2, android.os.Bundle obj)事件 扩展用接口,由具体业务进行约定。 |
void | onResult(RecognizerResult result, boolean islast)返回结果 返回的结果可能为null,请增加判断处理。 |
void | onVolumeChanged(int volume, byte[\] data)音量变化 当开始识别,到停止录音(停止写入音频流)或SDK返回最后一个结果自动结束识别为止, SDK检测到音频数据(正在录音或写入音频流)的音量变化时,会多次通过此函数回调,告 知应用层当前的音量值。 |
void onVolumeChanged(int volume,
byte[] data)volume - 当前音量值,范围[0-30]data - 录音数据,格式请参考SpeechConstant.SAMPLE_RATE , SpeechConstant.AUDIO_FORMAT 。此参数返回的数据,即使 SpeechConstant.NOTIFY_RECORD_DATA 为false,也会返回。void onBeginOfSpeech()音频源 参数设为 > -1时 )下, 调用开始录音函数后,会自动开启系统的录音 机,并在录音机开启后,会回调此函数(这中间的过程应该在几毫秒内,可以忽略,除非系 统响应很慢)。开始录音函数