java对接语音播报

有两种方式,

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

需要到科大讯飞官网https://console.xfyun.cn/services/tts上申请账号实名认证然后开通服务
1.点击玉语音合成,有在线版和离线办,这里使用在线版
在这里插入图片描述

2.新人注册有免费使用权限在这里插入图片描述
3.立即领取在这里插入图片描述
4.然后这边需要登陆注册
在这里插入图片描述
4.然后根据你所适用的场景选择套餐,我的是个人版一年一百万次
在这里插入图片描述
5.选择个人免费套餐,点击语音合成免费领取
在这里插入图片描述
6.因为之前我已经领取过了所有不能领了,现在这是我领取语音转写的教程和语音合成的流程一样,然后你点击立即领取后会转到这个页面,然后选择应用,这个应用是要自己创建的,开发的时候用的上
在这里插入图片描述
在这里插入图片描述
7.选择好应用后点击下单,然后设置支付密码付款(免费的不扣钱)
在这里插入图片描述
在这里插入图片描述
8.然后找到控制台,选择需要进入的教程,我这边选择的是在线版的
在这里插入图片描述
9.然后在右边选择下载SDK
在这里插入图片描述
10.然后将这几个放在项目的与src同级目录下,里面的lib包需要加载到项目里
在这里插入图片描述
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文件:https://download.csdn.net/download/weixin_43285931/15725232
在这里插入图片描述

然后调用就可以了

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

1.参考链接:https://www.cnblogs.com/zktww/p/11083073.html
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)里面在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43285931/article/details/114657253