package com.yutou.nas.utils;

import com.iflytek.cloud.speech.*;
import com.yutou.nas.interfaces.ObjectInterface;

import java.io.File;

public class AudioTools {
    private static boolean init = false;

    synchronized static void init() {
        if (init) {
            return;
        }
        SpeechUtility.createUtility(SpeechConstant.APPID + "=601f7f7d");
        SpeechUtility.getUtility().setParameter(SpeechConstant.VOLUME,"100");
        SpeechUtility.getUtility().setParameter(SpeechConstant.LIB_NAME_64,"/media/yutou/disk_lvm/public/servier/tools/");
        SpeechUtility.getUtility().setParameter(SpeechConstant.LIB_NAME_32,"/media/yutou/disk_lvm/public/servier/tools/");
        init = true;
        com.yutou.nas.utils.Log.i("讯飞语音已初始化");
    }

    public static void playText(String text) {
        SpeechSynthesizer mss = SpeechSynthesizer.createSynthesizer();

        mss.startSpeaking(text, new SynthesizerListener() {
            @Override
            public void onBufferProgress(int progress, int beginPos, int endPos,
                                         String info) {
                if (progress == 100) {
                    mss.destroy();
                }

            }

            @Override
            public void onSpeakBegin() {

            }

            @Override
            public void onSpeakProgress(int i, int i1, int i2) {

            }

            @Override
            public void onSpeakPaused() {

            }

            @Override
            public void onSpeakResumed() {

            }

            @Override
            public void onCompleted(SpeechError speechError) {
                com.yutou.nas.utils.Log.i(speechError.getErrorDesc() + " code " + speechError.getErrorCode());
            }

            @Override
            public void onEvent(int i, int i1, int i2, int i3, Object o, Object o1) {
            }
        });
    }
    public static void getAudio(String text, ObjectInterface objectInterface){
        SpeechSynthesizer mss = SpeechSynthesizer.createSynthesizer();
        mss.setParameter(SpeechConstant.VOICE_NAME, "xiaoyu");
        // 设置语速，范围0~100
        mss.setParameter(SpeechConstant.SPEED, "50");
        // 设置语调，范围0~100
        //mss.setParameter(SpeechConstant.PITCH, "50");
        // 设置音量，范围0~100
        mss.setParameter(SpeechConstant.VOLUME, "100");

        String fileName="html" + File.separator + "audio" + File.separator + System.currentTimeMillis() + ".wav";
        mss.synthesizeToUri(
                text,
                fileName,
                new SynthesizeToUriListener() {
                    @Override
                    public void onBufferProgress(int progress) {
                        System.out.println("progress = " + progress);
                        if (progress == 100) {
                            objectInterface.out(fileName);
                            mss.destroy();
                        }
                    }

                    @Override
                    public void onSynthesizeCompleted(String s, SpeechError speechError) {
                        System.out.println("s = " + s);
                        System.out.println("speechError = " + speechError.getErrorDesc());
                    }

                    @Override
                    public void onEvent(int i, int i1, int i2, int i3, Object o, Object o1) {
                        System.out.println("i = " + i + ", i1 = " + i1 + ", i2 = " + i2 + ", i3 = " + i3 + ", o = " + o + ", o1 = " + o1);
                    }
                }
        );
    }

    public static void main(String[] args) {
        init();
       getAudio("警告！你已经进入监控范围，请立即离开！", new ObjectInterface() {
           @Override
           public void out(String data) {
               super.out(data);
               System.out.println(data);
               File file=new File(data);
               System.out.println(file.getAbsolutePath());
           }
       });
    }
}
