package com.fuyuanshen;

import com.fuyuanshen.equipment.utils.AlibabaTTSUtil;
import com.fuyuanshen.equipment.utils.AudioProcessUtil;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author: 默苍璃
 * @date: 2025-12-1518:51
 */
public class Text {
    public static void main(String[] args) throws IOException {
        String text = "简述人生观的主要内容。\n" +
                "人生观的主要内容包括以下三个方面：\n" +
                "1.人生目的：回答“人为什么活着”的根本问题。它规定了人生的方向，是人生观的核心。\n" +
                "2.人生态度：回答“人应该怎样活着”的问题。它是指人们通过生活实践形成的对人生问题的一种稳定的心理倾向和基本意图。\n" +
                "3.人生价值：回答“什么样的人生才有意义”的问题。它是指人的生命及其实践活动对于社会和个人所具有的作用和意义。\n" +
                "人生目的、人生态度和人生价值相互联系、相辅相成，共同构成一个有机整体。\n" +
                "人生目的是人生观的核心，它决定人生态度和人生价值的方向；人生态度影响人生目的的实现和人生价值的创造；人生价值是衡量人生观正确与否的尺度。";

        AlibabaTTSUtil alibabaTTSUtil = new AlibabaTTSUtil();
        AudioProcessUtil audioProcessUtil = new AudioProcessUtil();

        byte[] rawPcmData = alibabaTTSUtil.generateStandardPcmData(text);

        // 使用AudioProcessUtil转换成带头44字节 PCM
        byte[] pcmData = audioProcessUtil.rawPcmToStandardWav(rawPcmData);

//            String savedPath = audioProcessUtil.saveWavToFile(pcmData, "test_output.wav");
//            if (savedPath != null) {
//                log.info("测试文件已保存: {}", savedPath);
//            }

        // 保存WAV文件到本地
        String savedPath = saveByteArrayToFile(pcmData, "人生观.wav");
        if (savedPath != null) {
            System.out.println("WAV文件已保存: " + savedPath);
        }
    }


    private static String saveByteArrayToFile(byte[] data, String filename) throws IOException {
        // 确定保存路径（可以是临时目录或指定目录）
        String directory = System.getProperty("java.io.tmpdir"); // 使用系统临时目录
        File dir = new File(directory);
        if (!dir.exists()) {
            dir.mkdirs();
        }

        // 创建完整文件路径
        File file = new File(dir, filename);

        // 写入文件
        try (FileOutputStream fos = new FileOutputStream(file)) {
            fos.write(data);
        }

        return file.getAbsolutePath();
    }

}
