#!/usr/bin/env python3
"""
生成"登月_引力弹弓与角反射器"全部TTS（127句，0.7倍速，女声）
"""
import sqlite3
import edge_tts
import asyncio
import os

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

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

conn = sqlite3.connect(db_path)
cursor = conn.cursor()

adid = 8384
cursor.execute("SELECT idx, en FROM srts WHERE adid = ? ORDER BY idx", (adid,))
subtitles = cursor.fetchall()

def clean_punctuation(text):
    """去掉末尾的逗号或句号"""
    if text and text[-1] in ['，', '。', ',', '.']:
        return text[:-1]
    return text

async def generate_tts(text, output_path, voice="en-US-AriaNeural", rate="-30%"):
    communicate = edge_tts.Communicate(text, voice=voice, rate=rate)
    await communicate.save(output_path)

async def main():
    print(f"开始生成 {len(subtitles)} 句TTS...")
    for idx, en in subtitles:
        en_clean = clean_punctuation(en)
        output_path = os.path.join(output_dir, f"tts_{idx:03d}.mp3")
        await generate_tts(en_clean, output_path)
        if idx % 50 == 0:
            print(f"  已生成 {idx}/{len(subtitles)}")
    print(f"\n完成！")

asyncio.run(main())
conn.close()
