| 
  
 
 [AAuto] 纯文本查看 复制代码 # -*- coding: utf-8 -*-
"""
TTS 生成器 —— 读取 A.txt 内容生成 MP3
✅ 从 A.txt 读取正文
✅ 从 config.txt 读取配置(可选)
✅ 免注册、免Key、使用 edge-tts
✅ 自动生成 output 文件夹
✅ 错误处理 + 进度提示
"""
import asyncio
import edge_tts
import os
import sys
from pathlib import Path
# ========== 默认配置 ==========
DEFAULT_VOICE = "zh-CN-YunxiNeural"
DEFAULT_RATE = "-10%"
DEFAULT_PITCH = "+5Hz"
DEFAULT_VOLUME = "+0%"
DEFAULT_OUTPUT_FILE = "output.mp3"
OUTPUT_DIR = "output"
TEXT_FILE = "需要生成的文本.txt"
# ========== 读取 A.txt ==========
def read_text_file(filepath=TEXT_FILE):
    """读取 A.txt 中的文本内容"""
    if not os.path.exists(filepath):
        print(f"❌ 文本文件 {filepath} 不存在!")
        return None
    try:
        with open(filepath, "r", encoding="utf-8") as f:
            content = f.read().strip()
        if not content:
            print(f"❌ {filepath} 内容为空!")
            return None
        return content
    except Exception as e:
        print(f"❌ 读取 {filepath} 失败:{e}")
        return None
# ========== 读取 config.txt ==========
def read_config_file(config_path="config.txt"):
    """读取配置文件,返回参数字典"""
    config = {
        "output_file": DEFAULT_OUTPUT_FILE,
        "voice": DEFAULT_VOICE,
        "rate": DEFAULT_RATE,
        "pitch": DEFAULT_PITCH,
        "volume": DEFAULT_VOLUME,
    }
    if not os.path.exists(config_path):
        print(f"⚠️  配置文件 {config_path} 不存在,使用默认参数")
        return config
    try:
        with open(config_path, "r", encoding="utf-8") as f:
            lines = f.readlines()
        for line in lines:
            line = line.strip()
            if not line or line.startswith("#"):
                continue
            if "=" in line:
                key, value = line.split("=", 1)
                key = key.strip()
                value = value.strip()
                if key in config:
                    config[key] = value
        print("✅ 已加载配置文件")
        return config
    except Exception as e:
        print(f"⚠️  读取配置文件失败,使用默认参数:{e}")
        return config
# ========== 语音合成函数 ==========
async def generate_audio(text, config):
    """根据文本和配置生成语音文件"""
    output_file = config["output_file"]
    voice = config["voice"]
    rate = config["rate"]
    pitch = config["pitch"]
    volume = config["volume"]
    # 确保输出目录存在
    os.makedirs(OUTPUT_DIR, exist_ok=True)
    full_path = os.path.join(OUTPUT_DIR, output_file)
    print(f"\n
 
 
 
 |