import sqlite3
import edge_tts
import asyncio
import os

# 连接到主数据库
db_path = '\\\\ll\\d\\xtrssvjj\\dpd.db'
conn = sqlite3.connect(db_path)
cur = conn.cursor()

# 获取adid=8476的所有记录
cur.execute('SELECT idx, en FROM srts WHERE adid=8476 ORDER BY idx')
rows = cur.fetchall()

conn.close()

print(f'找到 {len(rows)} 条记录')

# 创建输出目录
output_dir = '8476_洪老师聊聊_099期_tts'
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

async def generate_tts(idx, text, output_path):
    """生成TTS音频文件"""
    try:
        # 英文TTS，语速-30%
        communicate = edge_tts.Communicate(text, "en-US-AriaNeural", rate="-30%")
        await communicate.save(output_path)
        print(f'✓ 生成 TTS: {output_path}')
    except Exception as e:
        print(f'✗ 生成 TTS 失败: {output_path}, 错误: {e}')

async def main():
    """主函数"""
    tasks = []
    for idx, en_text in rows:
        # 跳过空文本
        if not en_text or en_text.strip() == '':
            print(f'跳过空文本: idx={idx}')
            continue
        
        # 生成输出文件名
        output_file = os.path.join(output_dir, f'tts_{idx:03d}.mp3')
        
        # 创建任务
        task = generate_tts(idx, en_text, output_file)
        tasks.append(task)
    
    # 执行所有任务
    await asyncio.gather(*tasks)

if __name__ == "__main__":
    asyncio.run(main())
    print('\nTTS生成完成！')