#!/usr/bin/env python3
"""
生成英文TTS（adid=8096）
"""
import sqlite3
import os
import asyncio
from edge_tts import Communicate

db_path = "\\\\ll\\D\\xtrssvjj\\dpd.db"
output_dir = "guns_tts"

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# 配置
voice = "en-US-AriaNeural"  # 明亮中性女声
rate = "-30%"  # 0.7倍速

async def generate_tts(text, output_file):
    """生成单个TTS"""
    try:
        communicate = Communicate(text, voice, rate=rate)
        await communicate.save(output_file)
        return True
    except Exception as e:
        print(f"TTS生成失败: {e}")
        return False

async def main():
    """主函数"""
    try:
        conn = sqlite3.connect(db_path)
        cursor = conn.cursor()
        cursor.execute("SELECT idx, en FROM srts WHERE adid = 8096 ORDER BY idx ASC")
        subtitles = cursor.fetchall()

        print(f"生成 {len(subtitles)} 句TTS...")

        for idx, en_text in subtitles:
            if not en_text:
                print(f"  跳过 {idx}: 英文文本为空")
                continue

            output_file = os.path.join(output_dir, f"tts_{idx:03d}.mp3")
            success = await generate_tts(en_text, output_file)
            if success:
                print(f"  已生成 {idx}/{len(subtitles)}")
            else:
                print(f"  失败 {idx}")

        print(f"完成！所有TTS保存在: {output_dir}")
        conn.close()

    except Exception as e:
        print(f"错误: {e}")

if __name__ == "__main__":
    asyncio.run(main())
