通过第三方程序实现语音转文字功能,如讯飞语音等

首先先检测系统中是否存在支持语音识别功能,如果存在直接启动语音识别,若不存在则引导用户通过应用商店下载讯飞语音助手。

代码如下:


/*** 语音助手辅助类*/
public class SpeechHelper {/*** 启动语音识别功能*/public static void startSpeechToText(final Activity activity, int requestCode) {try {Intent recognizeActivity = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);//1:语音识别模式(语言模式、自由模式)recognizeActivity.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);//3:开始语音识别activity.startActivityForResult(recognizeActivity, requestCode);} catch (ActivityNotFoundException e) {// 检测是否安装讯飞语音助手  com.iflytek.vflynoteif(isAvilible(activity,"com.iflytek.vflynote")){// 已安装则提示系统不支持此功能Toast.makeText(activity, "无法使用语音识别功能", Toast.LENGTH_SHORT).show();return;}// 未安装讯飞语音助手则提示安装AlertDialog.Builder builder = new AlertDialog.Builder(activity);AlertDialog dlg = builder.setMessage("使用语音功能需要安装<讯飞语记>是否下载?").setPositiveButton("下载", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {try {// 启动应用市场Intent intent = new Intent(Intent.ACTION_VIEW);Uri uri = Uri.parse("market://details?id=com.iflytek.vflynote" );//app包名intent.setData(uri);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);activity.startActivity(intent);} catch (Exception e) {e.printStackTrace();}dialog.dismiss();}}).setNegativeButton("否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}}).setCancelable(false).create();dlg.setCanceledOnTouchOutside(false);dlg.show();} catch (Exception e) {Toast.makeText(activity,"无法使用语音识别功能", Toast.LENGTH_SHORT).show();}}/*** 处理语音转换结果,默认剔除符号*/public static void handleSpeechToTextResult(Context context, int requestCode, int resultCode, @Nullable Intent data, OnSpeechToTextListener listener) {handleSpeechToTextResult(context,requestCode,resultCode,data,listener,true);}public static void handleSpeechToTextResult(Context context, int requestCode, int resultCode, @Nullable Intent data, OnSpeechToTextListener listener,boolean cullSymbols) {if (resultCode == Activity.RESULT_OK) {ArrayList<String> voicesList = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);StringBuilder stringBuilder = new StringBuilder();if (voicesList != null && voicesList.size() > 0) {// 拼接语音转换结果for (int i = 0; i < voicesList.size(); i++) {stringBuilder.append(voicesList.get(i));}// 剔除标点符号String finalSpeech = cullSymbols?stringBuilder.toString().replaceAll("[\\p{P}\\p{S}\\p{Z}]", ""):stringBuilder.toString().trim();if (finalSpeech==null || "".equals(finalSpeech.trim())) {Toast.makeText(context, "没有识别到语音", Toast.LENGTH_SHORT).show();if (listener != null) listener.onSpeechToTextFiled(requestCode, "");return;}// 成功回调if (listener != null) listener.onSpeechToTextComplete(requestCode, finalSpeech);return;}// 无语音转换结果Toast.makeText(context, "没有识别到语音", Toast.LENGTH_SHORT).show();if (listener != null) listener.onSpeechToTextFiled(requestCode, "");}}/*** 检测是否安装某程序*/public static boolean isAvilible(Context context, String packageName){final PackageManager packageManager = context.getPackageManager();List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);List<String> pName = new ArrayList<String>();if(pinfo != null){for(int i = 0; i < pinfo.size(); i++){String pn = pinfo.get(i).packageName;pName.add(pn);}}return pName.contains(packageName);}/*** 语音转文字回调*/public interface OnSpeechToTextListener {// 转换完毕void onSpeechToTextComplete(int requestCode, String text);// 转换失败void onSpeechToTextFiled(int requestCode, String msg);}
}

通过辅助类使用语音助手


/*** 语音转文字测试类*/
public class STTActivity extends AppCompatActivity implements SpeechHelper.OnSpeechToTextListener{// 常量声明public static final int REQUEST_CODE_STT = 0xf0;                     // 语音识别@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_stt);// 按钮触发语音识别功能findViewById(R.id.btn_stt).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 调用语音助手类识别语音SpeechHelper.startSpeechToText(STTActivity.this, REQUEST_CODE_STT);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {switch (requestCode) {case REQUEST_CODE_STT:       // 接收语音识别结果{// 处理语音转换结果SpeechHelper.handleSpeechToTextResult(this,requestCode,resultCode,data, this);}break;default:break;}super.onActivityResult(requestCode, resultCode, data);}// 语音转换完成@Overridepublic void onSpeechToTextComplete(int requestCode, String text) {((TextView)findViewById(R.id.tv_stt_result)).setText("STT识别结果:"+text);}// 语音转换失败@Overridepublic void onSpeechToTextFiled(int requestCode, String msg) {}
}

Android语音转文字STT(通过第三方程序实现)相关推荐

  1. android语音输入文字,盘点好用的语音输入APP,懒得打字的时候就说话吧!

    原标题:盘点好用的语音输入APP,懒得打字的时候就说话吧! 本文为「智活范」原创作品,欢迎关注我们! 上次推完好用的录音APP后,立刻就有萌友来问了,能不能直接录音转文字呢,这样说话就能生成文字,多省 ...

  2. Android语音转文字一使用AudioRecord录音

    参考:https://www.cnblogs.com/sowhat4999/p/4439837.html 为什么不直接使用谷歌封装好的MediaRecorder,而使用AudioRecord录音呢?因 ...

  3. android 语音转换文字(科大讯飞SDK简易封装)

    简介:本地讲解的是 科大讯飞开发平台的语音转换功能的集成方法和封装 准备工作: 1.首先申请平台账号,创建我的应用,新增语音服务,获取Appid 2.下载创建的应用的对应SDK,这条很重要,每一个应用 ...

  4. Android语音转文字一识别语音

    项目地址:https://github.com/zhanlv/VtDemo 讯飞AndroidSDK文档:https://doc.xfyun.cn/msc_android/%E9%A2%84%E5%A ...

  5. 语音播报 android,Android 语音播报 文字转语音

    最近收到了结合推送 到的内容 语音播报功能实现 就想到sdk内置 android.speech 已经内置了语音播放功能 开始放代码 //创建自带语音对象 private TextToSpeech te ...

  6. 基于Python与百度的AI接口的语音转文字的简单小程序。

    导入 wave #导入wave Python自带来自 pyaudio 导入 PyAudio , paInt16 #导入pyaudio模块内的类和常量安装方法pip install pyaudiofro ...

  7. Android百度语音集成——文字转语音

    项目涉及文字转语音的需求,用Android原生提供的TTS生成的语音太单调,机器声音太明显,故寻求第三方更好的支持,用科大讯飞的语音包收费,百度语音免费而且不限制调用次数,主页鲜明说永久免费的智能语音 ...

  8. android 语音提醒,文字转语音播放

    android本身具有文字转语音播放的TTS,一些第三方的sdk,像百度语音,科大讯飞语音等等都提供了文字转语音播放的功能,但这些第三方sdk大都收费,还挺贵的. 这里推荐两种方法:1.android ...

  9. 「微信同声传译」小程序插件:快速实现语音转文字、文本翻译、语音合成等能力...

    上期,我们在<「医院 LBS 位置服务」插件:输出LBS室内位置能力,为改善就医服务提供解决方案>一文中介绍了「医院 LBS 位置服务」小程序插件的意义.使用场景以及使用方法. 今天我们为 ...

最新文章

  1. ubuntu 禁用透明大页_Linux关于透明大页的使用与禁用介绍
  2. 被小扎誉为整个科技界的愿景,元宇宙到底是什么?
  3. [Java学习]Striing StringBuffer StringBuilder 的比
  4. halcon知识:图像纹理特征提取cooc_feature_matrix
  5. java属性修改前后_java 记录对象前后修改的内容(工具类)
  6. UltraEdit常用配置搭建Java/C开发环境
  7. fotify php审计,代码安全审计(二)Fortify介绍及使用教程
  8. JIRA的text编辑模式
  9. python构建二叉树_python--使用递归的方式建立二叉树
  10. 清空VS2003/VS2005最近打开解决方案记录
  11. Flink学习笔记04:将项目打包提交到Flink集群上运行(Scala版)
  12. 针对卡巴斯基2010的免杀研究
  13. ajax怎么在服务器返回值,node.js+Ajax实现获取HTTP服务器返回数据?
  14. ionic android n权限,ionic权限问题
  15. 用C语言将中文文本和英文文本合并为一段中文一段英文(翻译排版)
  16. qt安装报错:下载“http://download.qt.io/online/xxxxx/_meta.7z“server replied: Bad Gateway出现网络错误
  17. 视频语音转换成文字要怎么操作呢?
  18. 2019年Robomaster江苏省赛总结
  19. iOS 改变图片颜色
  20. 醉眼看花花也醉,冷眼观世世亦冷

热门文章

  1. 人生千姿百味,人人都只能活一回。有坐享其成的福气,就不会体验挑战人生的荣耀,每个人各有各的活法,各有不同的悲喜哀乐。
  2. (C语言)静态栈编写简单计算器(感悟与详细解析)
  3. NLP学习笔记一(语言模型+NLM+Word2Vec)
  4. bzoj3272 Zgg吃东西
  5. 流式计算之kafka Stream
  6. nginx-工作原理及配置文件详解<一>
  7. 微信小程序游戏账号交易买卖平台SSM-JAVA【数据库设计、论文、源码、开题报告】
  8. oracle 监听程序服务无法启动,ORA-12500: TNS: 监听程序无法启动专用服务器进程
  9. linux18.04系统下载,Ubuntu|Ubuntu 18.04.4 官方正式版下载_太平洋下载中心
  10. 拼多多、蚂蚁、字节2022届(大三)后端研发暑期实习