Android 科大讯飞离线语音识别

最近Boss让我开发一个离线语音听写功能 , 可是我发现科大讯飞的离线版本下架了 , 也看了很多地方如百度语音.......

      都没发现有离线版本 , 然而今天突然发现科大讯飞的离线听写又上架了  这就让我很开心 . 我就立马把它下载了下来,集成到我的项目中去 . 然后经过一个小时的努力 , 我把它简单的封装了一下 , 然后很方便的就可以到处调用了 !

      下面我就把我的那个类发上来你们可以直接拷过去用 . 具体有哪些不懂 , 里面传的东西不清楚可以在下方留言 , 我会给你们讲解.

    emmmm~很久没发博客了 , 现在给大家带来些福利 .

下面就是这个类:

 

public class LatYuYin {private static String TAG = "IatDemo";// 语音听写对象private SpeechRecognizer mIat;// 语音听写UIprivate RecognizerDialog mIatDialog;// 用HashMap存储听写结果private HashMap<String, String> mIatResults = new LinkedHashMap<String, String>();private Toast mToast;private Context mContext;private SharedPreferences mSharedPreferences;private boolean mTranslateEnable = false;private EditText mEditText;public LatYuYin(Context context) {mContext = context;// 初始化识别无UI识别对象// 使用SpeechRecognizer对象,可根据回调消息自定义界面;mIat = SpeechRecognizer.createRecognizer(mContext, mInitListener);// 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer// 使用UI听写功能,请根据sdk文件目录下的notice.txt,放置布局文件和图片资源mIatDialog = new RecognizerDialog(mContext, mInitListener);mToast = Toast.makeText(context, "", Toast.LENGTH_SHORT);mSharedPreferences = mContext.getSharedPreferences(IatSettings.PREFER_NAME, Activity.MODE_PRIVATE);}public void cancelmLat() {mIat.cancel();showTip("取消听写");}public void stopmLat() {mIat.stopListening();showTip("停止听写");}int ret = 0;// 函数调用返回值//开始听写public void startmLat(View view) {mEditText = (EditText) view.findViewById(R.id.activity_chat_et_text);mEditText.setText(null);mIatResults.clear();// 设置参数setParam();boolean isShowDialog = mSharedPreferences.getBoolean(mContext.getString(R.string.pref_key_iat_show), true);if (isShowDialog) {// 显示听写对话框mIatDialog.setListener(mRecognizerDialogListener);mIatDialog.show();showTip(mContext.getString(R.string.text_begin));} else {// 不显示听写对话框ret = mIat.startListening(mRecognizerListener);if (ret != ErrorCode.SUCCESS) {showTip("听写失败,错误码:" + ret);} else {showTip(mContext.getString(R.string.text_begin));}}}private void showTip(final String str) {Toast.makeText(mContext, str, Toast.LENGTH_SHORT).show();}/*** 参数设置** @return*/public void setParam() {// 清空参数mIat.setParameter(SpeechConstant.PARAMS, null);String lag = mSharedPreferences.getString("iat_language_preference", "mandarin");// 设置引擎mIat.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 设置返回结果格式mIat.setParameter(SpeechConstant.RESULT_TYPE, "json");this.mTranslateEnable = mSharedPreferences.getBoolean(mContext.getString(R.string.pref_key_translate), false);if (mTranslateEnable) {Log.i(TAG, "translate enable");mIat.setParameter(SpeechConstant.ASR_SCH, "1");mIat.setParameter(SpeechConstant.ADD_CAP, "translate");mIat.setParameter(SpeechConstant.TRS_SRC, "its");}if (lag.equals("en_us")) {// 设置语言mIat.setParameter(SpeechConstant.LANGUAGE, "en_us");mIat.setParameter(SpeechConstant.ACCENT, null);if (mTranslateEnable) {mIat.setParameter(SpeechConstant.ORI_LANG, "en");mIat.setParameter(SpeechConstant.TRANS_LANG, "cn");}} else {// 设置语言mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");// 设置语言区域mIat.setParameter(SpeechConstant.ACCENT, lag);if (mTranslateEnable) {mIat.setParameter(SpeechConstant.ORI_LANG, "cn");mIat.setParameter(SpeechConstant.TRANS_LANG, "en");}}// 设置语音前端点:静音超时时间,即用户多长时间不说话则当做超时处理mIat.setParameter(SpeechConstant.VAD_BOS, mSharedPreferences.getString("iat_vadbos_preference", "4000"));// 设置语音后端点:后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音mIat.setParameter(SpeechConstant.VAD_EOS, mSharedPreferences.getString("iat_vadeos_preference", "1000"));// 设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点mIat.setParameter(SpeechConstant.ASR_PTT, mSharedPreferences.getString("iat_punc_preference", "1"));// 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限mIat.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/iat.wav");//此处engineType为“local”mIat.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);if (SpeechConstant.TYPE_LOCAL.equals(SpeechConstant.TYPE_LOCAL)) {// 设置本地识别资源mIat.setParameter(ResourceUtil.ASR_RES_PATH, getResourcePath());}}private String getResourcePath() {StringBuffer tempBuffer = new StringBuffer();//识别通用资源tempBuffer.append(ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "iat/common.jet"));tempBuffer.append(";");tempBuffer.append(ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "iat/sms_16k.jet"));//识别8k资源-使用8k的时候请解开注释return tempBuffer.toString();}/*** 初始化监听器。*/private InitListener mInitListener = new InitListener() {@Overridepublic void onInit(int code) {Log.d(TAG, "SpeechRecognizer init() code = " + code);if (code != ErrorCode.SUCCESS) {showTip("初始化失败,错误码:" + code);}}};/*** 听写UI监听器*/private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {public void onResult(RecognizerResult results, boolean isLast) {Log.d(TAG, "recognizer result:" + results.getResultString());if (mTranslateEnable) {printTransResult(results);} else {String text = JsonParser.parseIatResult(results.getResultString());mEditText.append(text);mEditText.setSelection(mEditText.length());}}/*** 识别回调错误.*/public void onError(SpeechError error) {if (mTranslateEnable && error.getErrorCode() == 14002) {showTip(error.getPlainDescription(true) + "\n请确认是否已开通翻译功能");} else {showTip(error.getPlainDescription(true));}}};/*** 听写监听器。*/private RecognizerListener mRecognizerListener = new RecognizerListener() {@Overridepublic void onBeginOfSpeech() {// 此回调表示:sdk内部录音机已经准备好了,用户可以开始语音输入showTip("开始说话");}@Overridepublic void onError(SpeechError error) {// Tips:// 错误码:10118(您没有说话),可能是录音机权限被禁,需要提示用户打开应用的录音权限。if (mTranslateEnable && error.getErrorCode() == 14002) {showTip(error.getPlainDescription(true) + "\n请确认是否已开通翻译功能");} else {showTip(error.getPlainDescription(true));}}@Overridepublic void onEndOfSpeech() {// 此回调表示:检测到了语音的尾端点,已经进入识别过程,不再接受语音输入showTip("结束说话");}@Overridepublic void onResult(RecognizerResult results, boolean isLast) {if (mTranslateEnable) {printTransResult(results);} else {String text = JsonParser.parseIatResult(results.getResultString());}if (isLast) {//TODO 最后的结果}}@Overridepublic void onVolumeChanged(int volume, byte[] data) {showTip("当前正在说话,音量大小:" + volume);Log.d(TAG, "返回音频数据:" + data.length);}@Overridepublic void onEvent(int eventType, int arg1, int arg2, Bundle obj) {// 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因// 若使用本地能力,会话id为null// if (SpeechEvent.EVENT_SESSION_ID == eventType) {//    String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);//    Log.d(TAG, "session id =" + sid);// }}};private void printTransResult(RecognizerResult results) {String trans = JsonParser.parseTransResult(results.getResultString(), "dst");String oris = JsonParser.parseTransResult(results.getResultString(), "src");if (TextUtils.isEmpty(trans) || TextUtils.isEmpty(oris)) {showTip("解析结果失败,请确认是否已开通翻译功能。");}}
}

以上就是这个类的代码 , 基本你们拷过去就能用 .  同时你们附加了这两个类你们需要科大讯飞里面的开发包里面拷出来.

然后具体调用很简单如下:

以上就是调用的代码简单吧  然后你们不知道还要考哪些东西就把这几个文件都拷进去 , 或者看官方文档

好了  .........基本就是这些 , 如果还是没成功就在底下留言 , 我看到我会很快的回复你的!

          希望大家工作顺利!!!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49752.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python调用科大讯飞语音合成离线SDK

Python调用科大讯飞语音合成离线SDK 科大讯飞语音合成技术代码展示总结 科大讯飞语音合成技术 科大讯飞语音合成技术在国内是领先的&#xff0c;如果单纯想要Python语言对其进行编写&#xff0c;是不支持的。故我们可以采用对其离线C语言的SDK进行调用&#xff0c;从而达到我们…

科大讯飞SDK下载

科大讯飞SDK下载 科大讯飞作为中国最大的智能语音技术提供商&#xff0c;在智能语音技术领域有着长期的研究积累&#xff0c;并在中文语音合成、语音识别、口语评测等多项技术上拥有国际领先的成果。今天就带领大家初涉科大讯飞&#xff0c;成为科大讯飞语音开发者。 本文只介绍…

详解科大讯飞语音识别

公司的项目要用到一个语音识别所以就弄了一下&#xff0c;国内的科大讯飞的名气比较响一些所以就选用了科大讯飞&#xff0c;废话不多说直接开干 1&#xff0c;下载sdk&#xff0c;注册获取APPid&#xff0c;这都不废话&#xff0c;需要什么就下载什么 2&#xff0c;把下载的…

百度移动端和PC蜘蛛的区别

百度移动端和PC蜘蛛分别是什么&#xff0c;如何让百度做到针对性抓取 众所周知&#xff0c;百度蜘蛛大体上分为百度移动端蜘蛛和百度PC端蜘蛛&#xff0c;百度移动端和百度PC端蜘蛛又可分为百度高权重蜘蛛、百度低权重蜘蛛&#xff08;百度官方并没有承认的&#xff09;以及百…

百度蜘蛛的抓取方式有哪些

做seo的人都知道&#xff0c;百度蜘蛛对网站的抓取是间歇性的&#xff0c;需要根据网站的质量、网站的权重以及网站类型的大小&#xff0c;来决定抓取的频率。百度蜘蛛最喜欢的就是抓取网站文章了&#xff0c;所以网站需要保持每日的文章更新。那么百度蜘蛛的抓取方式有哪些呢&…

360浏览器模拟百度搜索引擎蜘蛛访问

一般用在网站被挂马以后&#xff0c;直接访问没有问题&#xff0c;可以通过模拟百度或其他搜索引擎来访问&#xff0c;即可发现问题。比如下面的例子&#xff0c;直接访问没问题&#xff0c;使用模拟搜索引擎访问即可发现问题。 比如访问一个针对搜索引擎挂马的网页&#xff1…

百度蜘蛛简介

百度蜘蛛简介 工作机制百度蜘蛛的工作要素百度蜘蛛原理的应用Baiduspider对一个网站服务器造成的访问压力如何&#xff1f;Baiduspider多长时间之后会重新抓取我的网页&#xff1f; 工作机制 百度蜘蛛的构建的原理。搜索引擎构建一个调度程序&#xff0c;来调度百度蜘蛛的工作…

百度蜘蛛IP段大全

百度蜘蛛(Baiduspider)爬取 进行网站日志分析的时候&#xff0c;常见到很多不同IP段的百度蜘蛛&#xff0c;为了方便大家更好的进行日志分析&#xff0c;下面列举了百度不同IP段常见蜘蛛的一些详情情况 121.14.89.*&#xff0c;此ip段为新站考察蜘蛛&#xff0c;通常有它光顾的…

元宇宙技术在几年后质变,迎来体验终端世界

京东集团高级副总裁、京东探索研究院院长陶大程京东集团高级副总裁、京东探索研究院院长陶大程是京东“产业元宇宙”的提出者和构建者。他谈到&#xff0c;希望通过构建元宇宙供应链降低实体经济参与数字经济的门槛&#xff0c;帮助实体经济完成数实融合的商业转型&#xff0c;…

元宇宙是怎样让虚拟与现实融合的?

在数字化不断推进的当下&#xff0c;如何将虚拟的数字世界和现实世界更好地融合&#xff0c;成为一个首要的目标。元宇宙正是这样一个利用多种信息技术&#xff0c;打造出了一个虚拟与现实高度融合的数字空间。在元宇宙中&#xff0c;用户不只是对数字内容的浏览、查看&#xf…

元宇宙的本质特征是五大融合

元宇宙的本质特征是五大融合&#xff1a;数字世界与物理世界的融合、数字经济与实体经济的融合、数字生活与社会生活的融合、数字资产与实物资产的融合、数字身份与现实身份的融合。元宇宙并非只是“虚拟空间”&#xff0c;发展元宇宙的关键是“融合”。 1.数字世界与物理世界…

chatgpt赋能python:Python界面表格:实现数据可视化的强大工具

Python界面表格&#xff1a;实现数据可视化的强大工具 在数据分析和可视化方面&#xff0c;表格一直是一个重要的工具。Python作为一种流行的编程语言&#xff0c;有着出色的表格处理和可视化能力。本文将介绍Python界面表格&#xff0c;并探索为什么它是一个强大的工具来实现…

GPT怎样教我用Python进行数据可视化

文章目录 GPT怎样教我用Python进行数据可视化matplotlibpyecharts总结 GPT怎样教我用Python进行数据可视化 &#x1f680;&#x1f680;首先&#xff0c;我们先看一下这段代码&#xff0c;这是我之前写来读取excel文件中xx大学在各个类别中的获奖情况&#xff0c;并保存在一个…

Tomcat-- 掌握汤姆猫,看这一篇文章就够了

文章目录 一、Tomcat是什么二、Tomcat下载安装三、Tomcat目录结构介绍四、启动Tomcat1.启动失败的原因 五、部署静态页面1.静态页面是什么2. 部署单个 HTML3.部署带有 CSS / JavaScript / 图片 的 HTML4.部署 HTML 到单独的目录中 六、感想 一、Tomcat是什么 百度百科是这样说…

android版会说话的汤姆猫游戏源码

这是一款高仿了android版会说话的汤姆猫游戏源码&#xff0c;大家可以看看吧&#xff0c;非常不错的。 游戏介绍&#xff1a; 是一款休闲游戏&#xff0c;汤姆猫回来了,还带来了全新的冒险旅程!汤姆是您的宠物猫,他可以在您触摸时作出反应,并且用滑稽的声音完整地复述您说的话。…

Tomcat运行不出来汤姆猫404异常

一.发现问题 今天真的是傻缺&#xff0c;运行Tomcat&#xff0c;半天汤姆猫的页面出不来&#xff0c;但是自己写的页面却可以加载出来&#xff0c;给我气的。 30minutes passed&#xff0c;无意间打开了ROOT目录&#xff0c;看到下面这个场景&#xff1a; 这拿头加载啊&…

用Html5制作 汤姆猫 小游戏

以下汤姆猫是用html5制作的小游戏&#xff1b; 建议火狐测试&#xff0c;然后把火狐调成 响应式设计模式&#xff08;以便模拟手机屏幕&#xff09;&#xff0c;设置--->开发者--->响应式设计模式&#xff1b; 如下图 以下是html文件&#xff1a; <!DOCTYPE htm…

汤姆猫炫跑鸿蒙,汤姆猫炫跑最新版下载|汤姆猫炫跑新版本下载 安卓版 v1.4.0.470- 游娱下载站...

汤姆猫炫跑最新版是汤姆猫系列的跑酷休闲手游。汤姆猫经典元素&#xff0c;带给你更多快乐&#xff01;精致流畅的画面&#xff0c;让你在跑酷过程中感受丝滑般的流畅。丰富玩法等你来体验&#xff0c;还有更多活动持续更新哦&#xff01;大家快来游娱下载站下载吧&#xff01;…

汤姆猫java下载手机版_汤姆猫编程星球app下载-汤姆猫编程星球下载v1.0.8-西西软件下载...

汤姆猫编程星球是一款少儿编程教育软件&#xff0c;帮助想学习编程少年快速学习&#xff0c;多彩多样的玩法&#xff0c;锻炼孩子的思维性&#xff0c;逻辑性&#xff0c;从小时候就加强大脑的锻炼&#xff0c;喜欢的朋友可以在西西下载使用。 软件介绍 汤姆猫编程星球介绍和汤…

汤姆猫炫跑鸿蒙,汤姆猫炫跑游戏怎么操作-玩法规则一览

汤姆猫炫跑游戏怎么操作&#xff1f;相信很多玩家感兴趣&#xff0c;今天小编为大家带来汤姆猫炫跑玩法规则一览&#xff0c;感兴趣的玩家不要错过。 汤姆猫炫跑游戏基本操作 你以为在汤姆猫炫跑中&#xff0c;跑就完事了?NO&#xff0c;你还要尽量跑得更远!在保证游戏时间更长…