.
.
首先,需要先去科大讯飞官网申请帐号,以及创建应用,创建应用后可以进入我的应用查看APPID,并开通“讯飞语音合成”服务。然后下载对应的SDK,并进行以下步骤
http://www.xfyun.cn/
Step1:导包
Eclipse
Android Studio
Project视图:
Step2:添加权限
官方给出的权限,根据自己需要添加
<!--连接网络权限,用于执行云端语音能力 -->
<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"/>
<!--人脸识别 -->
<!--摄相头权限,拍照需要用到 -->
<uses-permission android:name="android.permission.CAMERA" />
Step3:初始化
// 将“12345678”替换成您申请的APPID,申请地址:http://open.voicecloud.cn
SpeechUtility.createUtility(context, SpeechConstant.APPID +"=12345678");
Step4:具体代码
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
public class MainActivity extends Activity {
SpeechSynthesizer mTts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=123456");//APPID在科大讯飞官网申请,申请地址:http://open.voicecloud.cn
//注意:此接口在非主进程调用会返回null对象,如需在非主进程使用语音功能,请使用参数:SpeechConstant.APPID +"=12345678," + SpeechConstant.FORCE_LOGIN +"=true"。
mTts = SpeechSynthesizer.createSynthesizer(this, null);
setSpeech(); //设置语音参数
//点击Button阅读EditText里的内容
findViewById(R.id.btnSpeak).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText et = (EditText) findViewById(R.id.et);
mTts.startSpeaking(et.getText().toString(), mSynListener);
}
});
}
/**
* 设置语音阅读参数
*/
private void setSpeech() {
//2.合成参数设置,详见《科大讯飞MSC API手册(Android)》SpeechSynthesizer 类
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置发音人
mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速
mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端
//保存在SD卡需要在AndroidManifest.xml添加写SD卡权限
// mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");
}
/**
* 合成监听器
*/
private SynthesizerListener mSynListener = new SynthesizerListener() {
//会话结束回调接口,没有错误时,error为null
public void onCompleted(SpeechError error) {
}
//缓冲进度回调
//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
}
//开始播放
public void onSpeakBegin() {
}
//暂停播放
public void onSpeakPaused() {
}
//播放进度回调
//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.
public void onSpeakProgress(int percent, int beginPos, int endPos) {
}
//恢复播放回调接口
public void onSpeakResumed() {
}
//会话事件回调接口
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
}
};
}