千家信息网

android语音输入怎么实现

发表于:2024-10-07 作者:千家信息网编辑
千家信息网最后更新 2024年10月07日,本篇内容介绍了"android语音输入怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!语音输入
千家信息网最后更新 2024年10月07日android语音输入怎么实现

本篇内容介绍了"android语音输入怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

语音输入集成的是科大讯飞的SDK,简单的实现了语音转换为文字的过程,当然科大讯飞还提供了很多接口用来实现更加复杂的语音识别系统。

布局文件 :

              

mainActivity 注释很详细,不再赘述,不明白的可以留言一起学习。

 package com.test.demo;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;import com.iflytek.speech.RecognizerResult;import com.iflytek.speech.SpeechConfig.RATE;import com.iflytek.speech.SpeechError;import com.iflytek.ui.RecognizerDialog;import com.iflytek.ui.RecognizerDialogListener; public class HelloDemoActivity extends Activity implements OnClickListener { protected static final String TAG = "ThirdActivity"; private EditText txt_result; private RecognizerDialog rd; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.demo);    findView();  //RecognizerDialog(Context context, String params); "appid=1234567,usr=test,pwd=12345"  usr、pwd不是必选的  //创建语音识别dailog对象,appid到讯飞就注册获取  rd = new RecognizerDialog(this ,"appid=此处填你申请到的ID"); } private void findView() {  txt_result = (EditText) findViewById(R.id.txt_result);  findViewById(R.id.bt_search).setOnClickListener(this); } @Override public void onClick(View v) {  switch (v.getId()) {  case R.id.bt_search:   showReconigizerDialog();   break;  default:   break;  } } private void showReconigizerDialog() {  //setEngine(String engine,String params,String grammar);  /**   * 识别引擎选择,目前支持以下五种   "sms":普通文本转写   "poi":地名搜索   "vsearch":热词搜索   "vsearch":热词搜索   "video":视频音乐搜索   "asr":命令词识别      params 引擎参数配置列表   附加参数列表,每项中间以逗号分隔,如在地图搜索时可指定搜索区域:"area=安徽省合肥市",无附加参数传null   */  rd.setEngine("sms", null, null);    //设置采样频率,默认是16k,android手机一般只支持8k、16k.为了更好的识别,直接弄成16k即可。  rd.setSampleRate(RATE.rate16k);    final StringBuilder sb = new StringBuilder();  Log.i(TAG, "识别准备开始.............");    //设置识别后的回调结果  rd.setListener(new RecognizerDialogListener() {   @Override   public void onResults(ArrayList result, boolean isLast) {    for (RecognizerResult recognizerResult : result) {     sb.append(recognizerResult.text);     Log.i(TAG, "识别一条结果为::"+recognizerResult.text);    }   }   @Override   public void onEnd(SpeechError error) {    Log.i(TAG, "识别完成.............");    txt_result.setText(sb.toString());    Log.i(TAG, "识别完成:"+txt_result.getText().toString());   }  });    txt_result.setText(""); //先设置为空,等识别完成后设置内容  rd.show(); }}

"android语音输入怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0