CSDN学习社区 一个语音识别的例子

一个语音识别的例子

一、提要昨天搞定了SDK中的那个例子,接着想按照文档自己来写一个,但是.....直接用文档里的代码能调出来东西的话,简直就是奇迹。所以就花了一些时间,完成了这个语音听写的例子,例子中,点击最下面的button可以开始说话,说完之后,屏幕中的TextView会显示刚才说过的话。说真的,文档写得真的很不好,接口不详...

一、提要

       昨天搞定了SDK中的那个例子,接着想按照文档自己来写一个,但是.....直接用文档里的代码能调出来东西的话,简直就是奇迹。

       所以就花了一些时间,完成了这个语音听写的例子,例子中,点击最下面的button可以开始说话,说完之后,屏幕中的TextView会显示刚才说过的话。



     说真的,文档写得真的很不好,接口不详细,demo也没有说明,注释又少...唉。

   

二、准备工作

     首先当然是新建一个Android项目,然后按照文档说的添加库.

1.在Eclipse中 选 中 工 程 , 通 过 工 具 栏Project->Properties->Java BuildPath->Libraries->Add JARS 或 ADD External JARS 引入 Msc.jar;

2.将 SDK.\lib 目录下 libs 文件夹拷贝到工程根目录,确保.\libs\armeabi\libmsc.so 文件存在。

3.在工程 AndroidManifest.xml 文件中添加如下权限
<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.example.meclisener;  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.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast;  public class MainActivity extends Activity implements RecognizerDialogListener {  	private RecognizerDialog isrDialog; 	private TextView myTextView; 	private String text; 	private Button myButton; 	@Override 	public void onCreate(Bundle savedInstanceState) { 		super.onCreate(savedInstanceState); 		setContentView(R.layout.activity_main); 		myTextView=(TextView)findViewById(R.id.myTextView); 		myButton=(Button)findViewById(R.id.StartButton); 		myButton.setOnClickListener(new ButtonListener()); 	}   	@Override 	protected void onStart() { 		super.onStart(); 		text="";
//appid 需要自己去申请 		isrDialog = new RecognizerDialog(this,"appid=XXXXXXXX"); 		isrDialog.setEngine("sms",null,null); 		isrDialog.setListener(this); 		 	} 	@Override 	public void onResults(ArrayList<RecognizerResult> results,boolean 			isLast){ 		text += results.get(0).text; 		System.out.println("OnResult"); 		Toast.makeText(getApplicationContext(),"You say"+text,Toast.LENGTH_SHORT).show();  	} 	@Override 	public void onEnd(SpeechError error) { 		if(error != null) 			System.out.println("Error"); 		myTextView.setText(text);  	} 	public void showisrDialog() 	{  	} 	@Override 	public boolean onCreateOptionsMenu(Menu menu) { 		getMenuInflater().inflate(R.menu.activity_main, menu); 		return true; 	}  	class ButtonListener implements OnClickListener       {   		@Override 		public void onClick(View v) { 			// TODO Auto-generated method stub 			isrDialog.show(); 		}                  }   } 

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent" > a     <TextView         android:id="@+id/myTextView"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_centerHorizontal="true"         android:layout_marginTop="20dp"         android:text="@string/hello_world"         android:textSize="20dp"         tools:context=".MainActivity" />     <LinearLayout         android:id="@+id/bottom"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_alignParentBottom="true"         android:orientation="horizontal" >          <Button             android:id="@+id/StartButton"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:layout_marginTop="2dip"             android:layout_weight="1"             android:text="Speak"/>     </LinearLayout>  </RelativeLayout>



转载于:https://blog.51cto.com/8672742/1368408

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐

  • 浏览量 453
  • 收藏 0
  • 0

所有评论(0)

查看更多评论 
已为社区贡献1281条内容