package cn.iocoder.byzs.module.ai.util.tts;

import cn.iocoder.byzs.module.ai.dal.dataobject.tts.AiTtsDO;
import cn.iocoder.byzs.module.ai.service.tts.DouBaoTtsService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.function.Consumer;

/**
 * 豆包TTS流式处理服务
 * 将同步的豆包TTS转换为模拟流式处理
 */
@Service
@Slf4j
public class StreamingDouBaoTtsService {

    @Resource
    private DouBaoTtsService douBaoTtsService;

    /**
     * 开始TTS语音合成
     */
    public void startTts(AiTtsDO aiTtsDO) {
        log.info("豆包TTS服务已准备就绪");
    }

    /**
     * 发送文本到TTS服务进行语音合成（流式处理）
     */
    public void sendText(AiTtsDO aiTtsDO, String text, Consumer<byte[]> audioDataCallback) {
        if (text == null || text.trim().isEmpty()) {
            return;
        }

        try {
            // 使用豆包TTS服务进行流式合成
            douBaoTtsService.streamTextToSpeech(aiTtsDO, text, null, audioDataCallback);
        } catch (Exception e) {
            log.error("豆包TTS合成失败", e);
            throw new RuntimeException("豆包TTS合成失败", e);
        }
    }

    /**
     * 结束TTS语音合成
     */
    public void stopTts() {
        log.info("豆包TTS服务已停止");
    }
}