package com.example.speechtotext;
import java.util.ArrayList;
import com.baidu.voicerecognition.android.VoiceRecognitionClient;
import com.baidu.voicerecognition.android.VoiceRecognitionConfig;
import com.baidu.voicerecognition.android.ui.BaiduASRDigitalDialog;
import com.baidu.voicerecognition.android.ui.DialogRecognitionListener;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.speech.RecognizerIntent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
protected static final int RESULT_SPEECH = 1;
private Context context;
private ImageButton btnButton;
private TextView textText;
private BaiduASRDigitalDialog mDialog;
private VoiceRecognitionClient mRecognitionClient;
private DialogRecognitionListener mRecognitionListener;
private Bundle params;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
params=new Bundle();
//设置开放平台 API Key
params.putString(BaiduASRDigitalDialog.PARAM_API_KEY, "skDjrbZx2OWV9oFVgv8rVksc");
//设置开放平台 Secret Key
params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY, "462309f95d496c4db6a4232c346bee85");
//设置识别领域:搜索、输入、地图、音乐……,可选。默认为输入。
params.putInt( BaiduASRDigitalDialog.PARAM_PROP,VoiceRecognitionConfig.PROP_INPUT);
//设置语种类型:中文普通话,中文粤语,英文,可选。默认为中文普通话
params.putString( BaiduASRDigitalDialog.PARAM_LANGUAGE,VoiceRecognitionConfig.LANGUAGE_CHINESE);
//如果需要语义解析,设置下方参数。领域为输入不支持
params.putBoolean(BaiduASRDigitalDialog.PARAM_NLU_ENABLE,true);
// 设置对话框主题,可选。BaiduASRDigitalDialog 提供了蓝、暗、红、绿、橙四中颜色,每种颜
// 色又分亮、暗两种色调。共 8 种主题,开发者可以按需选择,取值参考 BaiduASRDigitalDialog 中
// 前缀为 THEME_的常量。默认为亮蓝色
params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME,BaiduASRDigitalDialog
.THEME_RED_DEEPBG);
// mRecognitionClient=VoiceRecognitionClient.getInstance(context.getApplicationContext());
// mRecognitionClient.setTokenApis("skDjrbZx2OWV9oFVgv8rVksc", "462309f95d496c4db6a4232c346bee85");
// mRecognitionClient.getCurrentDBLevelMeter();
initView();
setListener();
}
public void initView(){
context=this;
mDialog=new BaiduASRDigitalDialog(context, params);
mRecognitionListener=new DialogRecognitionListener() {
@Override
public void onResults(Bundle results) {
// TODO Auto-generated method stub
ArrayList<String> rs=results !=null?results
.getStringArrayList(RESULTS_RECOGNITION):null;
if(rs!=null){
//此处处理识别结果,识别结果可能有多个,按置信度从高到低排列,第一个元素是置信度最高的结果。
textText.setText(rs.get(0));
}
}
};
mDialog.setDialogRecognitionListener(mRecognitionListener);
mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_NLU_ENABLE, false);
btnButton =(ImageButton) findViewById(R.id.btnSpeak);
textText=(TextView) findViewById(R.id.txtText);
}
public void setListener(){
btnButton.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnSpeak:
mDialog.show();
break;
default:
break;
}
}
}
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/textView1"
android:layout_toLeftOf="@+id/textView1"
android:gravity="center"
android:orientation="vertical" >
<ImageButton
android:id="@+id/btnSpeak"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:contentDescription="@string/speak"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/txtText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
语音转换成文字
最新推荐文章于 2024-01-18 02:04:16 发布