有两种方式,

1.使用科大讯飞的sdk对接,缺点要收费,优点windos与linux通用

需要到科大讯飞官网https://console.xfyun.cn/services/tts上申请账号实名认证然后开通服务

1.点击玉语音合成,有在线版和离线办,这里使用在线版

java 上传语音 java语音提醒_java

2.新人注册有免费使用权限

java 上传语音 java语音提醒_回调接口_02


3.立即领取

java 上传语音 java语音提醒_ide_03


4.然后这边需要登陆注册

java 上传语音 java语音提醒_java_04


4.然后根据你所适用的场景选择套餐,我的是个人版一年一百万次

java 上传语音 java语音提醒_语音合成_05


5.选择个人免费套餐,点击语音合成免费领取

java 上传语音 java语音提醒_语音合成_06


6.因为之前我已经领取过了所有不能领了,现在这是我领取语音转写的教程和语音合成的流程一样,然后你点击立即领取后会转到这个页面,然后选择应用,这个应用是要自己创建的,开发的时候用的上

java 上传语音 java语音提醒_语音合成_07


java 上传语音 java语音提醒_java_08


7.选择好应用后点击下单,然后设置支付密码付款(免费的不扣钱)

java 上传语音 java语音提醒_语音合成_09


java 上传语音 java语音提醒_java 上传语音_10


8.然后找到控制台,选择需要进入的教程,我这边选择的是在线版的

java 上传语音 java语音提醒_java 上传语音_11


9.然后在右边选择下载SDK

java 上传语音 java语音提醒_ide_12


10.然后将这几个放在项目的与src同级目录下,里面的lib包需要加载到项目里

java 上传语音 java语音提醒_ide_13


11.代码

@ApiOperation(value = "测试语音在线播报功能")
    @PostMapping("/voiceBroadcast")
    public String demo3() {
        screenshotsService.textToVoice();
        return "语音播放测试!";
    }
public void textToVoice() {
        SpeechUtility.createUtility(SpeechConstant.APPID +"=APPID");//设置申请的APPID

        SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer();//创建SpeechSynthesizer对象

        mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan"); //设置发音人
        mTts.setParameter(SpeechConstant.SPEED, "10");//设置语速
        mTts.setParameter(SpeechConstant.VOLUME, "10");//设置音量,范围 0~100


        mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./voiceTrans/iflytek.pcm");

        //开始合成
        mTts.startSpeaking("语音合成测试程序", mSynListener);

        //开始播放
        mSynListener.onSpeakBegin();
    }

    //合成监听器
    public SynthesizerListener mSynListener = new SynthesizerListener() {
        //会话结束回调接口,没有错误时,error为null
        @Override
        public void onCompleted(SpeechError error) {
            System.out.println(error);
        }

        //缓冲进度回调
        //percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
        @Override
        public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
        }

        //开始播放
        @Override
        public void onSpeakBegin() {
        }

        //暂停播放
        @Override
        public void onSpeakPaused() {
        }

        //播放进度回调
        //percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.
        @Override
        public void onSpeakProgress(int percent, int beginPos, int endPos) {
        }

        //恢复播放回调接口
        @Override
        public void onSpeakResumed() {
        }

        @Override
        public void onEvent(int var1, int var2, int var3, int var4, Object var5, Object var6) {
        }
    };

voiceTrans文件:

java 上传语音 java语音提醒_ide_14

然后调用就可以了

2.使用jacob,缺点不适用于Linux,优点不收费

1.参考链接2.代码

/**【语音播报方法】**/
    public static boolean speakingText(String readText){
        boolean isFinish = true;
        ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");
        try {
            sap.setProperty("Volume",new Variant(100));              // 音量 0-100
            sap.setProperty("Rate",new Variant(-3));                 // 语音朗读速度 -10 到 +10
            Dispatch sapo = sap.getObject();                         // 获取执行对象
            Dispatch.call(sapo,"Speak",new Variant(readText));    	// 执行朗读
            sapo.safeRelease();                                     // 关闭执行对象
        }catch (Exception e){
            isFinish = false;
            e.printStackTrace();
        }finally {
            sap.safeRelease();                                      // 关闭执行对象
        }
        return isFinish;
    }

3.这里的文件放在C:\Windows\System32(64)和C:\Windows\SysWOW64(x86)里面

java 上传语音 java语音提醒_java 上传语音_15