可以参考科大讯飞官网的文件MSC Develop Manual for Android.pdf,参考其文件中的代码:
第一步:打入sdk,将开发包libs下面的文件夹拷贝到工程的lib下面的目录中
第二布:添加权限
<!-- 连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 获取当前wifi状态 -->
<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" />
<!-- 读取联系人权限,上传联系人需要用到此权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
第三步:初始化,初始化即 创建 语音配置对象 语音配置对象 ,只有初始化 ,只有初始化 ,只有初始化 后才可以使用 后才可以使用 后才可以使用MSC的各项服务建议 将初始化放在 将初始化放在 在 程序入口处比如(Application,Activity的onCreate方法中),初始代码参考如下:
// 初始化语音引擎,将12345678换成您申请的appid,申请地址http://open.voicecloud.cn/
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=12345678");
添加几个布局按键
<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" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="81dp"
android:onClick="listen"
android:text="开始听写" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:onClick="listenUI"
android:text="交互动画" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button2"
android:layout_centerHorizontal="true"
android:layout_marginTop="33dp"
android:onClick="read"
android:text="语音朗诵" />
</RelativeLayout>
逻辑代码:
package com.ldw.VoiceDemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化语音引擎
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=56757@7b");
}
/*
* 开始听写
*/
public void listen(View view) {
// 1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListener
SpeechRecognizer mIat = SpeechRecognizer.createRecognizer(this, null);
// 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类
mIat.setParameter(SpeechConstant.DOMAIN, "iat");
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
mIat.setParameter(SpeechConstant.ACCENT, "mandarin");
// 开始听写
mIat.startListening(mRecoListener);
}
/*
* 交互动画
*
* @param view
*/
public void listenUI(View view) {
RecognizerDialog iatDialog = new RecognizerDialog(this, mInitListener);
// 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类
iatDialog.setParameter(SpeechConstant.DOMAIN, "iat");
iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
iatDialog.setListener(recognizerDialogListener);
iatDialog.show();
}
/*
* 语音朗诵(语音合成)
*/
public void read(View view) {
SpeechSynthesizer mTts = SpeechSynthesizer
.createSynthesizer(this, null);
mTts.setParameter(SpeechConstant.VOICE_NAME, "vixm");//设置发音人
mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速
mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);//设置云端
mTts.startSpeaking("xxxxxxxxxxxxxxxxxxxxxxxxxxxxx?",
mSynthesizerListener);
}
//交互动画的初始化参数
private InitListener mInitListener = new InitListener() {
@Override
public void onInit(int arg0) {
}
};
//语音朗诵的监听
private SynthesizerListener mSynthesizerListener = new SynthesizerListener() {
@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub
}
@Override
public void onSpeakProgress(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub
}
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub
}
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub
}
@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub
}
@Override
public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
// TODO Auto-generated method stub
}
};
//交互动画的监听
private RecognizerDialogListener recognizerDialogListener = new RecognizerDialogListener() {
//交互动画监听的结果,说话的时候返回的结果值, isLast=true表示会话结束
@Override
public void onResult(RecognizerResult results, boolean isLast) {
System.out.println(results.getResultString());
System.out.println("isLast=" + isLast);
}
@Override
public void onError(SpeechError arg0) {
}
};
//听写监听器
private RecognizerListener mRecoListener = new RecognizerListener() {
/*
* 语音识别结果,说话的时候返回的结果值, isLast=true表示会话结束
*/
@Override
public void onResult(RecognizerResult results, boolean isLast) {
System.out.println(results.getResultString());
}
@Override
public void onBeginOfSpeech() {
// TODO Auto-generated method stub
}
@Override
public void onEndOfSpeech() {
// TODO Auto-generated method stub
}
@Override
public void onError(SpeechError arg0) {
// TODO Auto-generated method stub
}
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub
}
@Override
public void onVolumeChanged(int arg0) {
// TODO Auto-generated method stub
}
};
}