语音识别(Recognizer)
#类SpeechRecognizer
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.SpeechInterface
#语音识别类
updateLexicon(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
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。 |
#从类继承的方法 com.iflytek.cloud.msc.module.SpeechInterface
setParameter
#从类继承的方法 java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
#方法详细资料
#createRecognizer
public static SpeechRecognizer createRecognizer(android.content.Context context,
InitListener listener)
#创建单例对象
destroy()
销毁已创建的单例对象为止。若在当前应用生命周期内调用 destroy()
前再次调用本函数,则直接返回已创建的单例对象。可通过 getRecognizer()
获取已创建的单例对象。#getRecognizer
public static SpeechRecognizer getRecognizer()
#获取单例对象
createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)
创建单例对象。#buildGrammar
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
参数,使用该语法。#updateLexicon
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
- 词典更新回调接口#startListening
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()
取消当前的会话。#writeAudio
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
。#stopListening
public void stopListening()
#停止录音
cancel()
函数。RecognizerListener.onEndOfSpeech()
。相反的,当SDK回调 RecognizerListener.onEndOfSpeech()
时,应用层可不必再调用本函数通知SDK停止 录音。#isListening
public boolean isListening()
#是否在会话中
stopListening()
停止录音后,如果会话未出现错误或返回最后的结果, 当前状态依然处于会话中,即本函数会返回true。如果调用cancel()
取消了会话, 则当前状态处于不在会话中。#cancel
public void cancel()
#取消会话
#setParameter
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.SpeechInterface
key
- 参数名称value
- 参数值#getParameter
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
对各参数的说明。#destroy
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.SpeechInterface
#类RecognizerDialog
com.iflytek.cloud.ui
java.lang.Object
android.app.Dialog
com.iflytek.cloud.ui.control.MscDialog
com.iflytek.cloud.ui.RecognizerDialog
#识别对话框
SpeechRecognizer
。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
com.iflytek.cloud.ui.control.MscDialog.DismissCallBack
#从接口继承的嵌套类/接口 android.content.DialogInterface
android.content.DialogInterface.OnCancelListener, android.content.DialogInterface.OnClickListener, android.content.DialogInterface.OnDismissListener, android.content.DialogInterface.OnKeyListener, android.content.DialogInterface.OnMultiChoiceClickListener, android.content.DialogInterface.OnShowListener
#字段概要
#从接口继承的字段 android.content.DialogInterface
BUTTON_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) 。 |
#从类继承的方法 com.iflytek.cloud.ui.control.MscDialog
#从类继承的方法 android.app.Dialog
#从类继承的方法 java.lang.Object
#从接口继承的方法 android.view.Window.Callback
#构造器详细资料
#RecognizerDialog
public RecognizerDialog(android.content.Context context,
InitListener listener)
#构造函数
SpeechRecognizer.createRecognizer(android.content.Context, com.iflytek.cloud.InitListener)