首页 > 编程知识 正文

讯飞语音转文字,讯飞录音转文字

时间:2023-05-04 01:31:56 阅读:255121 作者:4905

1.在官网上下载SDK https://www.xfyun.cn/

2.在lisbs

 libs里面的两个在add:

3.jinLibs下面:

4.主页面

public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_click; private EditText mResultText; String[] permissions = new String[]{ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO, Manifest.permission.INTERNET}; List<String> mPermissionList = new ArrayList<>(); private final int mRequestCode = 100;//权限请求码 AlertDialog mPermissionDialog; //自己的包名 String mPackName = "crazystudy.com.crazystudy"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SpeechUtility.createUtility(this, SpeechConstant.APPID +"自己申请的APPID"); btn_click = (Button) findViewById(R.id.btn_click); mResultText = ((EditText) findViewById(R.id.result)); btn_click.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_click: mPermissionList.clear();//清空已经允许的没有通过的权限 //逐个判断是否还有未通过的权限 for (int i = 0;i<permissions.length;i++){ if (ContextCompat.checkSelfPermission(this,permissions[i])!= PackageManager.PERMISSION_GRANTED){ mPermissionList.add(permissions[i]);//添加还未授予的权限到mPermissionList中 } } //申请权限 if (mPermissionList.size()>0){//有权限没有通过,需要申请 ActivityCompat.requestPermissions(this,permissions,mRequestCode); }else { //权限已经都通过了,可以将程序继续打开了 btnVoice(); } break; } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); boolean hasPermissionDismiss = false;//有权限没有通过 if (mRequestCode==requestCode){ for (int i=0;i<grantResults.length;i++){ if (grantResults[i]==-1){ hasPermissionDismiss=true; break; } } } if (hasPermissionDismiss){//如果有没有被允许的权限 showPermissionDialog(); }else { //权限已经都通过了,可以将程序继续打开了 btnVoice(); } } private void showPermissionDialog() { if (mPermissionDialog == null) { mPermissionDialog = new AlertDialog.Builder(this) .setMessage("已禁用权限,请手动授予") .setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { cancelPermissionDialog(); Uri packageURI = Uri.parse("package:" + mPackName); Intent intent = new Intent(Settings. ACTION_APPLICATION_DETAILS_SETTINGS, packageURI); startActivity(intent); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //关闭页面或者做其他操作 cancelPermissionDialog(); MainActivity.this.finish(); } }) .create(); } mPermissionDialog.show(); } private void cancelPermissionDialog() { mPermissionDialog.cancel(); } private void btnVoice() { RecognizerDialog dialog = new RecognizerDialog(this,null); dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); dialog.setParameter(SpeechConstant.ACCENT, "mandarin"); dialog.setListener(new RecognizerDialogListener() { @Override public void onResult(RecognizerResult recognizerResult, boolean b) { printResult(recognizerResult); } @Override public void onError(SpeechError speechError) { } }); dialog.show(); Toast.makeText(this, "请开始说话", Toast.LENGTH_SHORT).show(); } //回调结果: private void printResult(RecognizerResult results) { String text = parseIatResult(results.getResultString()); // 自动填写地址 mResultText.append(text); } 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(); } }

 5.布局

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

6.权限

<!--连接网络权限,用于执行云端语音能力 --> <uses-permission android:name="android.permission.INTERNET"/> <!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 --> <uses-permission android:name="android.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" />

点击开始

效果 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。