一个语音识别的例子
一、提要昨天搞定了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
更多推荐
所有评论(0)