一个语音识别的例子

一、提要

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

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



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

二、准备工作

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

1.在Eclipse中 选 中 工 程 , 通 过 工 具 栏Project->Properties->JavaBuildPath->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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值