我是靠谱客的博主 自由小丸子,最近开发中收集的这篇文章主要介绍JAVA SpringBoot接科大讯飞TTS语音合成保姆式教程附源代码JAVA SpringBoot接科大讯飞TTS语音合成,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JAVA SpringBoot接科大讯飞TTS语音合成

你好! 大家好~最近公司有需求需要实现语音播报的功能
然后抽空研究了下,下述代码对接的科大讯飞API实现了语音播报的效果
废话不多说上代码

package com.stla.callCenter.utility;

import com.iflytek.cloud.speech.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.util.UUID;

//tts文本转音频Pcm格式
public class TtsTool {

    private static Logger LOGGER = LoggerFactory.getLogger(TtsTool.class);

    private Object lock = new Object();

    // 语音合成对象
    private SpeechSynthesizer mTts;

    private String ttsPcmDir;


    public TtsTool(String appId, String ttsPcmDir) {
        LOGGER.info("------Speech Utility init tts------");
         this.ttsPcmDir = ttsPcmDir;
        SpeechUtility.createUtility(SpeechConstant.APPID + "=" + appId);
        // 初始化合成对象
        mTts = SpeechSynthesizer.createSynthesizer();
        if (mTts != null) {
            // 设置发音人
            mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
            mTts.setParameter(SpeechConstant.SPEED, "150");//设置语速
            mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围0~100
        } else {
            LOGGER.error("tts handler init fail");
        }
    }

    public String textToVoice(String text,String fileName) {
        try {
            String pcmPath;
            if (null != fileName){
                pcmPath = ttsPcmDir + File.separator + fileName + ".pcm";
            }else{
                pcmPath = ttsPcmDir + File.separator + UUID.randomUUID() + ".pcm";
            }

            // 设置合成音频保存位置(可自定义保存位置),默认不保存
            mTts.synthesizeToUri(text, pcmPath, mSynListener);
            synchronized (lock) {
                lock.wait();
            }

            return pcmPath;
        } catch (Exception e) {
            LOGGER.error("textToVoice get exception:" + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 合成监听器
     */
    SynthesizeToUriListener mSynListener = new SynthesizeToUriListener() {

        public void onBufferProgress(int progress) {
            LOGGER.info("*************合成进度*************" + progress);

        }

        public void onSynthesizeCompleted(String uri, SpeechError error) {
            if (error == null) {
                LOGGER.info("*************合成成功*************");
                LOGGER.info("合成音频生成路径:" + uri);
            } else {
                LOGGER.info("******合成失败*******" + error.getErrorCode()
                        + "*************");
            }
            synchronized (lock) {
                LOGGER.info("通知合成成功");
                lock.notify();
            }

        }


        @Override
        public void onEvent(int eventType, int arg1, int arg2, int arg3, Object obj1, Object obj2) {}

    };
}

此代码是tts工具类,下面是在接口实现的调用方法

    接口方法体需要实现以下案例
    TtsTool ttsTool = new TtsTool("d5e44f666", "D:\");
    ttsTool.textToVoice("大家好,欢迎大家阅读使用本次TTS工具类,同是搬砖人,从代码相见也是一份缘分");
    

TtsTool方法需要两个参数
第一个是在科大讯飞开发者平台注册成功后生成的APPID
第二个是pcm音频文件生成后的文件目录

最后

以上就是自由小丸子为你收集整理的JAVA SpringBoot接科大讯飞TTS语音合成保姆式教程附源代码JAVA SpringBoot接科大讯飞TTS语音合成的全部内容,希望文章能够帮你解决JAVA SpringBoot接科大讯飞TTS语音合成保姆式教程附源代码JAVA SpringBoot接科大讯飞TTS语音合成所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部