Android studio调用科大讯飞的语音转文字功能

  • 一、在科大讯飞的官网上注册并下载SDK
  • 二、配置安卓项目
  • 三、运行效果展示

一、在科大讯飞的官网上注册并下载SDK

1.首先去讯飞开放平台申请一个账号(https://www.xfyun.cn/),然后点击“控制台”进入新的页面,创建一个应用,找到“语音听写”,下载相应的SDK。

文件解压后内容如下:

二、配置安卓项目

1.在android studio中新建一个空项目,将libs文件夹中的内容复制到安卓项目的libs文件夹下,其中msc.jar要右键添加Add As Library:

2.将assets文件夹拷贝到项目的main目录下,并在main目录下新建一个名为jniLibs的文件夹,将下载的libs文件夹中的两个子文件夹复制到jniLibs中:

3.在AndriodManifest.xml中添加以下权限:

    <!--连接网络权限,用于执行云端语音能力 --><uses-permission android:name="android.permission.INTERNET"/><!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 --><uses-permission android:name="android.permission.RECORD_AUDIO"/><uses-permission android:name="Manifest.permission.RECORD_AUDIO" /><!--读取网络信息状态 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><!--获取当前wifi状态 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><!--允许程序改变网络连接状态 --><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/><!--读取手机信息权限 --><uses-permission android:name="android.permission.READ_PHONE_STATE"/><!--读取联系人权限,上传联系人需要用到此权限 --><uses-permission android:name="android.permission.READ_CONTACTS"/><!--外存储写权限,构建语法需要用到此权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--外存储读权限,构建语法需要用到此权限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><!--配置权限,用来记录应用配置信息 --><uses-permission android:name="android.permission.WRITE_SETTINGS"tools:ignore="ProtectedPermissions" /><!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务--><!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><!--如需使用人脸识别,还要添加:摄像头权限,拍照需要用到 --><uses-permission android:name="android.permission.CAMERA" />


4.在app目录下的build.gradle中添加以下代码:

sourceSets {main {jniLibs.srcDirs = ['libs']}}


5.修改布局文件activity_main.xml中的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/container"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_click"android:text="点击打开讯飞语音识别"android:layout_width="wrap_content"android:layout_height="wrap_content"/><EditTextandroid:id="@+id/result"android:layout_below="@id/btn_click"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="此处显示你所录下的内容"/>
</LinearLayout>

6.新建一个名为XunFeiCallbackListener的接口:

package com.example.myapplication;
import com.iflytek.cloud.RecognizerResult;public interface XunFeiCallbackListener {void onFinish(RecognizerResult results);
}

7.新建一个名为XunFeiUtil的类:

package com.example.myapplication;
import android.content.Context;import android.widget.Toast;import com.iflytek.cloud.RecognizerResult;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechUtility;import com.iflytek.cloud.ui.RecognizerDialog;import com.iflytek.cloud.ui.RecognizerDialogListener;import org.json.JSONArray;import org.json.JSONObject;import org.json.JSONTokener;public class XunFeiUtil {public static String appid = "自己的appid";public static void initXunFei(Context context){SpeechUtility.createUtility(context, SpeechConstant.APPID +"="+appid);}public static void startVoice(Context context, final XunFeiCallbackListener callbackListener) {RecognizerDialog dialog = new RecognizerDialog(context,null);dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");dialog.setParameter(SpeechConstant.ACCENT, "mandarin");dialog.setParameter(SpeechConstant.ASR_PTT, "0");dialog.setListener(new RecognizerDialogListener() {@Overridepublic void onResult(RecognizerResult recognizerResult, boolean b) {callbackListener.onFinish(recognizerResult);}@Overridepublic void onError(SpeechError speechError) {}});dialog.show();//Toast.makeText(this, "请开始说话", Toast.LENGTH_SHORT).show();}public static String parseIatResult(String json) {StringBuffer ret = new StringBuffer();try {JSONTokener tokener = new JSONTokener(json);JSONObject joResult = new JSONObject(tokener);JSONArray words = joResult.getJSONArray("ws");for (int i = 0; i < words.length(); i++) {// 转写结果词,默认使用第一个结果JSONArray items = words.getJSONObject(i).getJSONArray("cw");JSONObject obj = items.getJSONObject(0);ret.append(obj.getString("w"));}} catch (Exception e) {e.printStackTrace();}return ret.toString();}
}

8.修改MainActivity:

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.iflytek.cloud.RecognizerResult;
import static com.example.myapplication.XunFeiUtil.parseIatResult;
import static com.example.myapplication.XunFeiUtil.*;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Button btn_click;private EditText mResultText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initXunFei(this);btn_click = (Button) findViewById(R.id.btn_click);mResultText = ((EditText) findViewById(R.id.result));btn_click.setOnClickListener(this);}@Overridepublic void onClick(View v) {startVoice(this, new XunFeiCallbackListener() {@Overridepublic void onFinish(RecognizerResult results) {String text = parseIatResult(results.getResultString());// 自动填写地址mResultText.append(text);}});}}

三、运行效果展示

按照以上操作进行修改,完成后运行项目,会出现语音开启失败,错误码为20006的错误,出错原因是android系统在非动态申请权限的情况下,默认是把麦克风权限是关闭了的,因此需要打开权限,可以在手机的权限中自己修改权限设置,成功后的界面如下:

Android studio调用科大讯飞的语音转文字功能相关推荐

  1. Android Studio调用科大讯飞关键词提取接口

    1.在讯飞开放平台创建应用 2.下载关键词提取Java代码 2.1 代码解压,将下图3个java文件复制到Android项目的与MainActivity.java同一个目录下 2.2 我把ltp中的m ...

  2. Android Studio调用百度API(图片文字识别)

    1.登录百度AI平台(https://ai.baidu.com/),下载license文件 包名填写内容: 下载好的文件夹内包含四个文件 (OCR-Android-SDK.md文件里有使用说明) (1 ...

  3. Flutter学习第十三天,2021最新版超详细Flutter2.0实现百度语音转文字功能,Android和Flutter混合开发?

    Flutter实现百度语音转文字功能 1.新建一个flutter项目,来实现View端. 2.新建android端的module 1.打开flutter里面的Android文件 1.新建一个modul ...

  4. Android Studio调用百度地图(二):实现地图显示后台定位和步行导航

    先看一下运行效果: 实现功能:后台定位+步行导航(可通过长按屏幕自定义终点,起点为定位点) 后台定位即当程序在后台时依旧执行定位功能,步行导航支持30米-50千米范围内的导航 一 导入SDK并配置相关 ...

  5. android studio调用python_Android Studio调用python运行thensorflow模型--CLE方案实现

    Android Studio调用python运行thensorflow模型--CLE方案实现 Android Studio调用python运行thensorflow模型--CLE方案实现 我使用的是虚 ...

  6. Android Studio调用python读取图片(使用服务器paddlehub处理图片)

    Android Studio调用python读取图片 一.主要任务 二.环境配置 1.创建一个android studio项目 2.配置项目gradle 3.配置app下的gradle 三.demo测 ...

  7. 三大运营商回复 4G 降速;微信上线语音转文字功能;IntelliJ IDEA 2019.2.1 发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  8. 华为语音解锁设置_华为手机免费语音转文字功能如何开启?手把手教你如何设置,超赞...

    原标题:华为手机免费语音转文字功能如何开启?手把手教你如何设置,超赞 关于华为手机免费语音转文字功能,相信你也有所了解,但还有很大部份华为手机用户表示:我的手机为什么没有语音转文字的功能. 如果你是华 ...

  9. 知意字稿的语音转文字功能真的好用吗?

    知意字稿是知意配音的姐妹产品,我是刚好买了知意配音的永久会员送了一些时长,刚开始觉得没啥用,我一个做短视频的,很少会用到.直到最近开始写论文,让别人帮我录制了老师的指导内容,大概有半个小时,自己听觉得 ...

最新文章

  1. plot画图等高线contour 与 contourf 及API
  2. 关键路径法及C语言实现
  3. sqlplus / as sysdba报错ORA-01031: insufficient privileges
  4. 算法与数据结构(排序算法概述)
  5. Vue2.0环境安装
  6. SQL Server中如何取得刚插入的标识值
  7. 好久没有用c++,转一个c++注意点
  8. linux登录界面主题,Ubuntu 12.10登录界面主题:Butterfly
  9. 微信小程序和传统网页开发的区别
  10. 【Spark】一条 SQL 在 Apache Spark 之旅(上)
  11. Spring Boot AOP 实现日志持久化
  12. Linux(Ubuntu)使用日记------自定义命令的使用
  13. Window 浏览器窗口对象
  14. RFID定位技术下的智能养老系统具有哪些优势呢?--新导智能
  15. msvcr71.dll丢失的解决方法
  16. 在PPT中批量导入图片
  17. 几行代码让qq机器人关键词检测,让机器人也可以又哭又笑,戳一戳你
  18. Android谷歌地图地理编码,谷歌地图API地理编码多个地点
  19. 《Hadoop 权威指南》读书笔记之七 — chapter7
  20. 单日涨粉10w+,他做了什么让流量和口碑都火爆?

热门文章

  1. 分享联发科MT8665 datasheet,MT8665数据手册,MT8665规格书资料
  2. [网站美工必读]网页设计理念
  3. 一个基于Directshow实现的音频播放器,支持歌词显示
  4. 计算机命令符号,给几个电脑常用的命令提示符
  5. 三星android截屏快捷键是什么,三星手机怎么快速截屏快捷键(必知这3种截屏方法)...
  6. java字符串从后截取_java 字符串截取的几种方式(转)
  7. HandlerThread详解
  8. linux-mint 搜狗输入法,linuxmint 搜狗输入法安装
  9. 风电机组的预测性维护应该如何进行?
  10. 关于linux设备树的简单理解(基于linux-5.13.5)