一.进入讯飞 官网 下载 相对应 文件
二 .导入 相应的文件
(iflytek 这个包名下的文件是讯飞自带的Dialog,效果还是不错的)
三.声明 APPID (建议 ;最好在MyApp中声明)
SpeechUtility.createUtility(applicationContext, SpeechConstant.APPID + "=******")
四.代码 及注解
//初始化监听器。
private val mInitListener = InitListener { code ->
if (code != ErrorCode.SUCCESS) {
Toast.makeText(this, "初始化失败,错误码:$code", Toast.LENGTH_SHORT).show()
}
}
/**
* 语音对象封装
*/
inner class Voice {
var ws: java.util.ArrayList<WSBean>? = null
inner class WSBean {
var cw: java.util.ArrayList<CWBean>? = null
}
inner class CWBean {
var w: String? = null
}
}
/**
* 解析语音json 要用到 gson
implementation 'com.google.code.gson:gson:2.8.2
*/
fun parseVoice(resultString: String): String {// 创建gson对象
val gson = Gson()
val voiceBean = gson.fromJson<Voice>(resultString, Voice::class.java!!)
val sb = StringBuffer()
val ws = voiceBean.ws
for (wsBean in ws!!) { val word = wsBean.cw?.get(0)?.w sb.append(word) }
return sb.toString()
}
//1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListener
var iatDialog = RecognizerDialog(this, mInitListener)
//2.设置听写参数
iatDialog.setParameter(SpeechConstant.DOMAIN, "iat")
iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn")
iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin ")
//3.设置回调接口
iatDialog.setListener(object : RecognizerDialogListener {
override fun onResult(recognizerResult: RecognizerResult, b: Boolean) {
if (!b) {
val result = parseVoice(recognizerResult.resultString)
textView.setText(textview.getText()+result)
}
}
override fun onError(speechError: SpeechError) {
logger(speechError.toString())
}
})
//4.开始听写
iatDialog.show()
// showTip(getString(R.string.text_begin))
//获取字体所在的控件,设置为"",隐藏字体,
val txt = iatDialog.window.decorView.findViewWithTag("textlink") as TextView
txt.text = ""
语言 kotlin