1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > android语音识别之科大讯飞语音API的使用

android语音识别之科大讯飞语音API的使用

时间:2023-07-16 22:21:11

相关推荐

android语音识别之科大讯飞语音API的使用

Android系统本身其实提供有语音识别模块,在它的APIDemo里也有关于语音识别的sample,不过经过大多开发者的真机测试,发现很多真机并不能使用哪个sample,在网上查找了一下原因,大部分是因为开发者在刷机的时候,大部分的ROM都阉割掉了语音识别和语音合成TTS(Text To Speech)部分,所以运行sample的时候会有异常抛出。

如果不用google提供的语音识别,要怎么实现语音识别喃?科大讯飞的语音API就可以到,这里是关于它的官网介绍:/developer.php?vt=1下面我就用一个简单的实例来介绍一下它基本的使用

首先做一个简单的界面

上面的TextView显示识别的内容,三个Button分别为语音识别,语音合成并朗读和语音后台朗读三个功能

布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><EditTextandroid:id="@+id/et"android:layout_width="fill_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/bt_recognize"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Recognize" /><Buttonandroid:id="@+id/bt_speek"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Speek" /><Buttonandroid:id="@+id/bt_speek_bg"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="Speek-Background" /></LinearLayout>

Activity代码如下:

package sina.CreAmazing.voice;import java.util.ArrayList;import com.iflytek.speech.RecognizerResult;import com.iflytek.speech.SpeechError;import com.iflytek.speech.SynthesizerPlayer;import com.iflytek.ui.RecognizerDialog;import com.iflytek.ui.RecognizerDialogListener;import com.iflytek.ui.SynthesizerDialog;import com.iflytek.ui.SynthesizerDialogListener;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class Voice1Activity extends Activity {/** Called when the activity is first created. */// 声明控件private EditText et;private Button bt1;private Button bt2;private Button bt3;//全局只设一个String,因为String为final类型,这样做节省内存String text = "";private static final String APPID = "appid=4f2d3a06";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);bt1 = (Button) findViewById(R.id.bt_recognize);bt2 = (Button) findViewById(R.id.bt_speek);bt3 = (Button) findViewById(R.id.bt_speek_bg);et = (EditText) findViewById(R.id.et);// 初始化监听器initListener();}private void initListener() {bt1.setOnClickListener(myListener);bt2.setOnClickListener(myListener);bt3.setOnClickListener(myListener);}OnClickListener myListener = new OnClickListener() {@Overridepublic void onClick(View v) {// 根据不同View的id调用不同方法switch (v.getId()) {case R.id.bt_recognize:// 这是语言识别部分,最重要的实例化一个// RecognizerDialog并把你在官方网站申请的appid填入进去,非法id不能进行识别RecognizerDialog isrDialog = new RecognizerDialog(Voice1Activity.this, APPID);/** 设置引擎目前支持五种 ”sms”:普通文本转写 “poi”:地名搜索 ”vsearch”:热词搜索* ”video”:视频音乐搜索 ”asr”:命令词识别*/isrDialog.setEngine("sms", null, null);isrDialog.setListener(recoListener);isrDialog.show();break;case R.id.bt_speek:// 这是语言合成部分 同样需要实例化一个SynthesizerDialog ,并输入appidSynthesizerDialog syn = new SynthesizerDialog(Voice1Activity.this, APPID);syn.setListener(new SynthesizerDialogListener() {@Overridepublic void onEnd(SpeechError arg0) {}});// 根据EditText里的内容实现语音合成syn.setText(et.getText().toString(), null);syn.show();break;case R.id.bt_speek_bg:// 这是后台朗读,实例化一个SynthesizerPlayerSynthesizerPlayer player = SynthesizerPlayer.createSynthesizerPlayer(Voice1Activity.this, APPID);// 设置语音朗读者,可以根据需要设置男女朗读,具体请看api文档和官方论坛player.setVoiceName("vivixiaomei");player.playText(et.getText().toString(), "ent=vivi21,bft=5",null);break;default:break;}}};// 语言识别监听器,有两个方法RecognizerDialogListener recoListener = new RecognizerDialogListener() {@Overridepublic void onResults(ArrayList<RecognizerResult> results,boolean isLast) {// 服务器识别完成后会返回集合,我们这里就只得到最匹配的那一项text += results.get(0).text;System.out.println(text);}@Overridepublic void onEnd(SpeechError error) {if (error == null) {// 完成后就把结果显示在EditText上et.setText(text);}}};}

最后别忘了把科大讯飞的jar包引入工程的buildPath里面。

运行画面:

语音识别:

语音合成:

其实功能还不止这些,还有数据上传,关键字识别,获取上行下行流量,设置采样频率设置发音人,语速,音量等等等,如果感兴趣可以自己深入研究。

下一篇我会尝试着通过语言简单的控制手机,使语音识别功能更加丰富

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。