Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 85|回复: 0

科大讯飞梳理

[复制链接]

347

主题

501

帖子

3066

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3066
发表于 2025-9-7 10:16:31 | 显示全部楼层 |阅读模式
目标:直接调用iat 的方法,(不是通过activity调用),也就是说,直接调用+初始化配置,看看以下流程可否泛化。

1、它的MainActivity 是调用了一个registerForActivityResult,  传一个参数 Permission,这个是打开新的Activity需要的权限,一般是允许录音。这个是不能或可能泛化的。(这个可否存在主Activity中。)
2、接着传递SpeechApp.initializeMsc, 就是对科大各个模块初始化。这个是可以泛化的。
3、如上,在SpeechApp里面,是调用了一个SpeechUtility, 这个是库函数,需要引进科大库。当引进科大库成功后,这个就可以运行,理论上是可泛化的。
4、这就导致,在它的示例方法里,是直接打开一个Activity。

再看它打开的Activity:
1、按科大的说法,这是一个Activity, 同时实现了OnClickListener。这个是否可泛化来分析一下:
2、首先建立了一堆实例变量。
3、在这个Activity的onCreate里面,设置了本Activity的布局页面(R.layout)
4、初始化了各个Layout组件。(见 **详细介绍)
5、这句很关键,通过SpeechRecognizer.createRecognizer(this,  mInitListenser); 来初始化mIat 句柄实例变量。注意这后一个参数是回调函数。  而这个THIS,这里是否可由IatDemo这个Activity更改成MainActivity的context。这里存疑!  传递父实例(this)mIat是否无法创建!!!这个可以自己试试或问社区。可Try/except 查看结果
6、初始化mIatDialog (这个可能没有必要,详细再看它的源代码)
7、从Preferences 取得"com.iflytek.setting" 的内容,如果没有设置,就将Activity.MODE_PRIVATE的值作为它的内容,也就是0,(数值的名称),Activity.MODE_PRIVATE表示本Activity(IatDemo)是私有的,建立的文件只能被调用者使用。
8、把mResultText和R.id.iat_text对接。

下面看看初始化Layout:
1、先是对接各个按钮的onClick()
2、配置radioGroup。用来配置mEngineType 是 TYPE_CLOUD 还是 TYPE_LOCAL ("cloud" or "local", 值的名称)

下面统一掌管个按钮的onClick():
1、 先赋值ret = 0;  这个是onClick()内部调用函数的返回值(如mIat.startListening(mRecognizerListener))注意这后一个参数是回调函数
2、验证mIat是否为空,如果是,则表示初始化(第一次)失败。注意这个第一次初始化是指MainActivity调用了createUtility进行初始化。
3、如按了识别按钮,运行setParam()进行又一个初始化。
4、如果iat_show,就调用对话听写,否则调用直接听写(mIat.startListening(mRecognizerListener)),调用后看回执(ret),如果不为ErrorCode.SUCCESS  (0),则失败,否则可以开始说话。这里mRecognizerListener是回调函数,负责获取结果。
5、还有一个选项是流处理的听写,这里从略。
6、以及停止,取消,上传用户词表等。

下面,回调函数mInitListenser:1、有一个onInit( int code)回调函数,判断mIat是否成功初始化(这个很重要!要在新程序里实现!

下面是上传回调函数,判断上传是否成功。

下面,mRecognizerListener回调函数,这个关键,直接处理说话语音的:
1、开始说话
2、出问题3、出结果,可使用该结果值。 等等。

下面是对话回调函数,也出结果,可以使用该结果值。

再下面是细节(第二次)初始化函数,这个需要一点点精确的按照它设置的来

下一个是getResourcePath,就是获取本地运行的jet(人工智能)文件,这个如果远程应该没有用到。

下一个在IatDemo 销毁是释放mIat  (onDestroy)

以上就是IatDemo的基本内容。


再看看MainActivity调用的初始化 (initializeMsc):
这里调用了SpeechApp模块。
1、初始化过了,退出。
2、配置 初始化参数
3、SpeechUtility.createUtility(context, param.toString());  建立第一次初始化
4、设置:初始化过了。

以上就是基本的一个流程。在MainActivity中,还有一些内容,再评审,如果需要的,附在下面。

个人感觉,先建立mIat,如果这个实例建立起来,成功运行就完成一半了。也就是说,有必要的。




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-9-18 00:43 , Processed in 0.016556 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表