教你实现语音识别(基于科大讯飞)
识别 实现 基于 语音 科大
2023-09-14 08:59:01 时间
1),首先在官网下载相关jar包
2)自定义界面设计:
R.layout.activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="请先到餐厅预定选择店铺" android:textAppearance="?android:attr/textAppearanceMedium" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageButton android:id="@+searchdialog/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@color/transparent" android:padding="10dp" android:src="@android:drawable/ic_btn_speak_now" /> <EditText android:id="@+searchdialog/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:padding="10dp" > <requestFocus /> </EditText> </LinearLayout> </LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/content" /> </LinearLayout>
2) 逻辑实现
首先添加相关jar包以及so文件,如下
权限添加:
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <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" />
代码实现:
package com.wangfubin.xunfenyuyin; import java.util.ArrayList; import com.iflytek.speech.RecognizerResult; import com.iflytek.speech.SpeechError; import com.iflytek.ui.RecognizerDialog; import com.iflytek.ui.RecognizerDialogListener; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends Activity { private EditText setedit; private ImageButton yuyinButton; private Button button1; private String textString = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LinearLayout LinearLayout1 = (LinearLayout) getLayoutInflater() .inflate(R.layout.activity_main, null); setedit = (EditText) LinearLayout1.findViewById(R.searchdialog.editText1); yuyinButton = (ImageButton) LinearLayout1.findViewById(R.searchdialog.imageButton1); new AlertDialog.Builder(MainActivity.this) .setTitle("请输入查询关键字") .setIcon(android.R.drawable.ic_dialog_info) .setView(LinearLayout1) .setPositiveButton("取消", null) .setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { /*// 数据获取 searchtext(setedit.getText().toString());*/ Toast.makeText(MainActivity.this, setedit.getText().toString(), Toast.LENGTH_LONG).show(); } }).show(); yuyinButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(1); } }); } }); } /** * 语音查询 */ @Override protected Dialog onCreateDialog(int id) { RecognizerDialog recognizerDialog = new RecognizerDialog( MainActivity.this, "appid=5132fe14");// 这里应该写从科大讯飞申请到的appid recognizerDialog.setEngine("sms", null, null); recognizerDialog.setListener(new RecognizerDialogListener() { @Override public void onResults(ArrayList<RecognizerResult> results, boolean arg1) { for (int i = 0; i < results.size(); i++) { textString += results.get(i).text; } } @Override public void onEnd(SpeechError arg0) { // Toast.makeText(MainActivity.this, textString, 1).show(); setedit.setText(textString.substring(0, textString.length() - 1));
textString =""; } }); return recognizerDialog; } }
相关文章
- python实现百度OCR图片识别
- 仿百度壁纸客户端(五)——实现搜索动画GestureDetector手势识别,动态更新搜索关键字
- 教你实现语音识别(基于科大讯飞)
- CV之FR:基于face和cv2库调用摄像头(或视频)实现人脸识别并标注姓名标签包装为GUI界面产品(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
- DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别并预测(超过99%)
- DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—训练过程
- DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测
- android app用百度ocr识别sdk实现手写扫描功能(二)
- 基于APSA 和 LMS 的系统识别的比较(matlab代码实现)
- 基于人工神经网络(ANN)的高斯白噪声的系统识别(Matlab代码实现)
- 【深度学习】基于知识库的手写体数字识别(Matlab代码实现)
- 使用 KTH 数据集进行人类行为识别(Matlab代码实现)
- PyTorch 实现孪生网络识别面部相似度
- m分别通过matlab和FPGA实现基于高阶循环谱的信号载波调制识别(四阶循环累量)仿真
- m使用FPGA实现基于BP神经网络的英文字母识别,开发平台为vivado2019.2,verilog编程,附带matlab辅助验证
- 【项目实战】Python基于BP神经网络算法实现家用热水器用户行为分析与事件识别
- 人生苦短,我用python实现人脸(口罩)识别(几十行代码搞定)
- 基于语音信号识别性别(Matlab代码实现)
- 使用 OpenCV 和 Python 识别数字