版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq939782569/article/details/79695604
1、去科大讯飞官网注册,账号,下载在线语音合成的jar包放在libs文件夹下,然后进行关联
2、SpeechUtility.createUtility(getApplicationContext(), "appid=YOURAPPID");
3、核心类
package lhm.com.cfwheathy.goal;
import android.content.Context;
import android.os.Bundle;
import android.speech.SpeechRecognizer;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SynthesizerListener;
/**
* Created by li on 2018-03-24.
*/
public class AudioUtils {
private static AudioUtils audioUtils;
private SpeechSynthesizer mySynthesizer;
public AudioUtils(){
}
public static AudioUtils getInstance() { if (audioUtils == null) { synchronized (AudioUtils.class) { if (audioUtils == null) { audioUtils = new AudioUtils(); } } } return audioUtils; }
private InitListener myInitListener = new InitListener() { @Override public void onInit(int code) { } };
public void init(Context context) { mySynthesizer = SpeechSynthesizer.createSynthesizer(context, myInitListener); mySynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan"); mySynthesizer.setParameter(SpeechConstant.PITCH, "50"); mySynthesizer.setParameter(SpeechConstant.VOLUME, "50"); }
public void speakText(String content){
int code =mySynthesizer.startSpeaking(content,new SynthesizerListener(){
@Override
public void onSpeakBegin() {
}
@Override
public void onBufferProgress(int i, int i1, int i2, String s) {
}
@Override
public void onSpeakPaused() {
}
@Override
public void onSpeakResumed() {
}
@Override
public void onSpeakProgress(int i, int i1, int i2) {
}
@Override
public void onCompleted(SpeechError speechError) {
}
@Override
public void onEvent(int i, int i1, int i2, Bundle bundle) {
}
});
}
}
4、在你想操作的地方进行调用
String bobao = "您好当前位置为"+tvDw.getText().toString()+"当前气温"+list.getForecast_default().getTemp()+"摄氏度天气"+list.getForecast_default().getWeather()+"";
AudioUtils.getInstance().init(getActivity()); //初始化语音对象
AudioUtils.getInstance().speakText(bobao); //播放语音
5、加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
6、离线语音合成是收费的,在线这个是免费的,根据需求制定自己的方案。