Android 文字转语音播放(科大讯飞)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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、离线语音合成是收费的,在线这个是免费的,根据需求制定自己的方案。

猜你喜欢

转载自blog.csdn.net/qq939782569/article/details/79695604