您现在的位置是:首页 > 文章详情

教你实现语音识别(基于科大讯飞)

日期:2013-11-14点击:593

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; } }

 

原文链接:https://yq.aliyun.com/articles/456100
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章