具体是参见http://blog.csdn.net/zhwycan/article/details/7274863仿写的:
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 MainActivity extends Activity {/*
* 声明控件
* */
private EditText et = null;
private Button bt1 = null;
private Button bt2 =null;
private Button bt3 =null;
String text = "";
private static final String APPID = "appid=4f2d3a06";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*初始化控件*/
et = (EditText) findViewById(R.id.et);
bt1 = (Button)findViewById(R.id.bt_recognize);
bt2 = (Button)findViewById(R.id.bt_speek);
bt3 =(Button)findViewById(R.id.bt_speek_bg);
// 初始化监听器
initListener();
} private void initListener() {
// TODO Auto-generated method stub
bt1.setOnClickListener(myListener);
bt2.setOnClickListener(myListener);
bt3.setOnClickListener(myListener);
} OnClickListener myListener = new OnClickListener() {
@Override
public void onClick(View v) {
// 根据不同View的id调用不同方法
switch (v.getId()) {
case R.id.bt_recognize:
// 这是语言识别部分,最重要的实例化一个
// RecognizerDialog并把你在官方网站申请的appid填入进去,非法id不能进行识别
RecognizerDialog isrDialog = new RecognizerDialog(
MainActivity.this, APPID);
/*
* 设置引擎目前支持五种 ”sms”:普通文本转写 “poi”:地名搜索 ”vsearch”:热词搜索
* ”video”:视频音乐搜索 ”asr”:命令词识别
*/
isrDialog.setEngine("sms", null, null);
isrDialog.setListener(recoListener);
isrDialog.show();
break;
case R.id.bt_speek:
// 这是语言合成部分 同样需要实例化一个SynthesizerDialog ,并输入appid
SynthesizerDialog syn = new SynthesizerDialog(
MainActivity.this, APPID);
syn.setListener(new SynthesizerDialogListener() {
@Override
public void onEnd(SpeechError arg0) {
}
});
// 根据EditText里的内容实现语音合成
syn.setText(et.getText().toString(), null);
syn.show();
break;
case R.id.bt_speek_bg:
// 这是后台朗读,实例化一个SynthesizerPlayer
SynthesizerPlayer player = SynthesizerPlayer
.createSynthesizerPlayer( MainActivity.this, APPID);
// 设置语音朗读者,可以根据需要设置男女朗读,具体请看api文档和官方论坛
player.setVoiceName("vivixiaomei");
player.playText(et.getText().toString(), "ent=vivi21,bft=5",
null);
break;
default:
break;
}
}
};
// 语言识别监听器,有两个方法
RecognizerDialogListener recoListener = new RecognizerDialogListener() {
@Override
public void onResults(ArrayList<RecognizerResult> results,
boolean isLast) {
// 服务器识别完成后会返回集合,我们这里就只得到最匹配的那一项
text += results.get(0).text;
System.out.println(text);
}
@Override
public void onEnd(SpeechError error) {
if (error == null) {
// 完成后就把结果显示在EditText上
et.setText(text);
}
}
};
}
Log信息:
06-10 01:54:49.265: I/dalvikvm(1386): Could not find method com.iflytek.speech.SynthesizerPlayer.createSynthesizerPlayer, referenced from method sina.CreAmazing.voice.MainActivity$1.onClick
06-10 01:54:49.265: W/dalvikvm(1386): VFY: unable to resolve static method 3281: Lcom/iflytek/speech/SynthesizerPlayer;.createSynthesizerPlayer (Landroid/content/Context;Ljava/lang/String;)Lcom/iflytek/speech/SynthesizerPlayer;
06-10 01:54:49.275: D/dalvikvm(1386): VFY: replacing opcode 0x71 at 0x004c
06-10 01:54:49.275: D/dalvikvm(1386): DexOpt: unable to opt direct call 0x0cd4 at 0x0f in Lsina/CreAmazing/voice/MainActivity$1;.onClick
06-10 01:54:49.296: D/dalvikvm(1386): DexOpt: unable to opt direct call 0x0cd8 at 0x28 in Lsina/CreAmazing/voice/MainActivity$1;.onClick
06-10 01:54:49.296: I/dalvikvm(1386): Failed resolving Lsina/CreAmazing/voice/MainActivity$1$1; interface 461 'Lcom/iflytek/ui/SynthesizerDialogListener;'
06-10 01:54:49.296: W/dalvikvm(1386): Link of class 'Lsina/CreAmazing/voice/MainActivity$1$1;' failed
06-10 01:54:49.296: D/dalvikvm(1386): DexOpt: unable to opt direct call 0x0d7f at 0x2d in Lsina/CreAmazing/voice/MainActivity$1;.onClick
06-10 01:54:49.305: D/AndroidRuntime(1386): Shutting down VM
科大讯飞Android
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 MainActivity extends Activity {/*
* 声明控件
* */
private EditText et = null;
private Button bt1 = null;
private Button bt2 =null;
private Button bt3 =null;
String text = "";
private static final String APPID = "appid=4f2d3a06";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*初始化控件*/
et = (EditText) findViewById(R.id.et);
bt1 = (Button)findViewById(R.id.bt_recognize);
bt2 = (Button)findViewById(R.id.bt_speek);
bt3 =(Button)findViewById(R.id.bt_speek_bg);
// 初始化监听器
initListener();
} private void initListener() {
// TODO Auto-generated method stub
bt1.setOnClickListener(myListener);
bt2.setOnClickListener(myListener);
bt3.setOnClickListener(myListener);
} OnClickListener myListener = new OnClickListener() {
@Override
public void onClick(View v) {
// 根据不同View的id调用不同方法
switch (v.getId()) {
case R.id.bt_recognize:
// 这是语言识别部分,最重要的实例化一个
// RecognizerDialog并把你在官方网站申请的appid填入进去,非法id不能进行识别
RecognizerDialog isrDialog = new RecognizerDialog(
MainActivity.this, APPID);
/*
* 设置引擎目前支持五种 ”sms”:普通文本转写 “poi”:地名搜索 ”vsearch”:热词搜索
* ”video”:视频音乐搜索 ”asr”:命令词识别
*/
isrDialog.setEngine("sms", null, null);
isrDialog.setListener(recoListener);
isrDialog.show();
break;
case R.id.bt_speek:
// 这是语言合成部分 同样需要实例化一个SynthesizerDialog ,并输入appid
SynthesizerDialog syn = new SynthesizerDialog(
MainActivity.this, APPID);
syn.setListener(new SynthesizerDialogListener() {
@Override
public void onEnd(SpeechError arg0) {
}
});
// 根据EditText里的内容实现语音合成
syn.setText(et.getText().toString(), null);
syn.show();
break;
case R.id.bt_speek_bg:
// 这是后台朗读,实例化一个SynthesizerPlayer
SynthesizerPlayer player = SynthesizerPlayer
.createSynthesizerPlayer( MainActivity.this, APPID);
// 设置语音朗读者,可以根据需要设置男女朗读,具体请看api文档和官方论坛
player.setVoiceName("vivixiaomei");
player.playText(et.getText().toString(), "ent=vivi21,bft=5",
null);
break;
default:
break;
}
}
};
// 语言识别监听器,有两个方法
RecognizerDialogListener recoListener = new RecognizerDialogListener() {
@Override
public void onResults(ArrayList<RecognizerResult> results,
boolean isLast) {
// 服务器识别完成后会返回集合,我们这里就只得到最匹配的那一项
text += results.get(0).text;
System.out.println(text);
}
@Override
public void onEnd(SpeechError error) {
if (error == null) {
// 完成后就把结果显示在EditText上
et.setText(text);
}
}
};
}
Log信息:
06-10 01:54:49.265: I/dalvikvm(1386): Could not find method com.iflytek.speech.SynthesizerPlayer.createSynthesizerPlayer, referenced from method sina.CreAmazing.voice.MainActivity$1.onClick
06-10 01:54:49.265: W/dalvikvm(1386): VFY: unable to resolve static method 3281: Lcom/iflytek/speech/SynthesizerPlayer;.createSynthesizerPlayer (Landroid/content/Context;Ljava/lang/String;)Lcom/iflytek/speech/SynthesizerPlayer;
06-10 01:54:49.275: D/dalvikvm(1386): VFY: replacing opcode 0x71 at 0x004c
06-10 01:54:49.275: D/dalvikvm(1386): DexOpt: unable to opt direct call 0x0cd4 at 0x0f in Lsina/CreAmazing/voice/MainActivity$1;.onClick
06-10 01:54:49.296: D/dalvikvm(1386): DexOpt: unable to opt direct call 0x0cd8 at 0x28 in Lsina/CreAmazing/voice/MainActivity$1;.onClick
06-10 01:54:49.296: I/dalvikvm(1386): Failed resolving Lsina/CreAmazing/voice/MainActivity$1$1; interface 461 'Lcom/iflytek/ui/SynthesizerDialogListener;'
06-10 01:54:49.296: W/dalvikvm(1386): Link of class 'Lsina/CreAmazing/voice/MainActivity$1$1;' failed
06-10 01:54:49.296: D/dalvikvm(1386): DexOpt: unable to opt direct call 0x0d7f at 0x2d in Lsina/CreAmazing/voice/MainActivity$1;.onClick
06-10 01:54:49.305: D/AndroidRuntime(1386): Shutting down VM
科大讯飞Android
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货