第一步准备工作
1.讯飞账户注册(这就不介绍了,看看步骤做就可以了)
2.创建应用获取应用的Appid
(1)创建应用
(2)获取Appid(下面代码会用到)
3.下载讯飞在线语音SDK资源
第二步Android的资源以及权限配置
1.依赖jar包
首先把下载的jar包放到app下的libs下面
之后进行jar依赖
2.so库以及assets资源导入
在app\src\main文件夹下面放入so库以及asstes文件
3.获取相应权限
<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
<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.WRITE_EXTERNAL_STORAGE">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
<uses-permission android:name="android.permission.WRITE_SETTINGS">
<uses-permission android:name="android.permission.CAMERA">
第三步语音合成使用代码
1.进行第三方语音合成的注册 (第二个参数appid就是的第一注册的appid)
public static void intSpeech(Context context,String appid){
SpeechUtility.createUtility(context, SpeechConstant.APPID+"="+appid);
}
2.在进行文件读取位置的语音操作(speechText语音文字,speaker语音发音人可以为null为默认)
public static void speak( Context context,String speechText,String speaker) {
//1.创建SpeechSynthesizer对象, 第二个参数:本地合成时传InitListener
SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(context,newInitListener() {
@Override
public voidonInit(inti) {
Log.e("app","errorInfo"+i);
}
});
Log.e("app","isnull>"+(mTts==null));
//2.合成参数设置,详见《科大讯飞MSC API手册(Android)》SpeechSynthesizer 类
if(speaker==null){
mTts.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");//设置发音人
}else{
mTts.setParameter(SpeechConstant.VOICE_NAME, speaker);//设置发音人
}
mTts.setParameter(SpeechConstant.SPEED,"50");//设置语速
mTts.setParameter(SpeechConstant.VOLUME,"80");//设置音量,范围0~100
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);//设置云端
//设置合成音频保存位置(可自定义保存位置),保存在“./sdcard/iflytek.pcm”
//保存在SD卡需要在AndroidManifest.xml添加写SD卡权限
//如果不需要保存合成音频,注释该行代码
mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH,"./sdcard/iflytek.pcm");
//3.开始合成
mTts.startSpeaking(""+speechText,newcom.iflytek.cloud.SynthesizerListener() {
//开始播放
@Override
public voidonSpeakBegin() {
}
//缓冲进度回调
//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
@Override
public voidonBufferProgress(inti,inti1,inti2, String s) {
}
//暂停播放
@Override
public voidonSpeakPaused() {
}
//恢复播放回调接口
@Override
public voidonSpeakResumed() {
}
//播放进度回调
//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.
@Override
public voidonSpeakProgress(inti,inti1,inti2) {
}
//会话结束回调接口,没有错误时,error为null
@Override
public voidonCompleted(SpeechError speechError) {
}
//会话事件回调接口
@Override
public voidonEvent(inti,inti1,inti2, Bundle bundle) {
}
});
}