栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java使用jacob.jar实现文字转语音

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java使用jacob.jar实现文字转语音

package com.study.springbootdemo.Controller;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


public class Test {


    public static void main(String[] args) {
        String file = "E:\新建文件夹";

        // String str=“请A001号到3号窗口”;
        // String str=“华为 new bee”;
//    String str = "3号机柜报警,3号机柜报警,3号机柜报警";
        String str = "当月亮和太阳处于地球两侧,并且月亮和太阳的黄经相差180度时,从地球上看,此时的月亮最圆,称之为“满月”,亦称为“望”。农历每月的十四、十五、十六甚至十七,都是满月可能出现的时段。而“超级月亮”指的就是月亮在满月的时候,刚好位于近地点附近。由于靠近地球,所以看上去,此时的月亮比平时更大。“超级月亮”每年都会发生,有时还不止一次。";
        //文字转语音,返回语音保存的地址
        Map map = textToSpeech(str, file);
        //地址不为空时,转换采样率和文件格式
        if (map != null && map.size() > 0) {
            Map map1 = samplingRateTest.testCompressMp3Samll(map.get("filePath").toString(), file, 16000, "mp3");
            System.out.println("filePath==" + map1.get("filePath"));
            System.out.println("fileName==" + map1.get("fileName"));
        }
    }

    public static Map textToSpeech(String text, String files) {

        File file = new File(files);
        //如果文件夹不存在则创建
        if (!file.exists() && !file.isDirectory()) {
            System.out.println("//不存在");
            file.mkdir();
        } else {
            System.out.println("//目录存在");
        }

        ActiveXComponent ax = null;
        try {
            ax = new ActiveXComponent("Sapi.SpVoice");
            //运行时输出语音内容
            Dispatch spVoice = ax.getObject();

            //只朗读不保存
            
            // 音量 0-100
            

            //下面是构建文件流把生成语音文件

            ax = new ActiveXComponent("Sapi.SpFileStream");
            Dispatch spFileStream = ax.getObject();

            ax = new ActiveXComponent("Sapi.SpAudioFormat");
            Dispatch spAudioFormat = ax.getObject();
            //设置音频流格式
            Dispatch.put(spAudioFormat, "Type", new Variant(22));
            //设置文件输出流格式
            Dispatch.putRef(spFileStream, "Format", spAudioFormat);
            //调用输出 文件流打开方法,创建一个.wav文件
            String fileName = new Date().getTime() + ".wav";
            String filePath = files + "\" + fileName;
            Dispatch.call(spFileStream, "Open", new Variant(filePath), new Variant(3), new Variant(true));
            //设置声音对象的音频输出流为输出文件对象
            Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream);
            //设置音量 0到100
            Dispatch.put(spVoice, "Volume", new Variant(100));
            //设置朗读速度
            Dispatch.put(spVoice, "Rate", new Variant(-1));
            //开始朗读
            Dispatch.call(spVoice, "Speak", new Variant(text));

            //关闭输出文件
            Dispatch.call(spFileStream, "Close");
            Dispatch.putRef(spVoice, "AudioOutputStream", null);

            spAudioFormat.safeRelease();
            spFileStream.safeRelease();
            spVoice.safeRelease();
            ax.safeRelease();

            Map map = new HashMap<>();
            map.put("filePath", filePath);
            map.put("fileName", fileName);
            return map;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

注意:此只适用于windows

使用的是微软自带的TTS,若电脑未安装或因安装的系统是精简版被阉割,可使用以下工具修复(注:因情况不同 不保证每个都可被修复)

Win7系统TTS修复-采用原生Win7提取绿色修复_2018-02-06.zip - 蓝奏云

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/889327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号