#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 播客角色管理系统 为播客中的各个角色进行初始化和管理 """ import json import os from datetime import datetime class CharacterManager: def __init__(self): self.characters = {} self.output_dir = "output/podcast/characters" os.makedirs(self.output_dir, exist_ok=True) def add_character(self, name, role, accent, voice_model, description): """添加角色""" self.characters[name] = { "name": name, "role": role, "accent": accent, "voice_model": voice_model, "description": description, "initialized": True, "timestamp": datetime.now().isoformat() } print(f"✓ 角色 {name} 已添加并初始化") def list_characters(self): """列出所有角色""" print("\n=== 当前播客角色清单 ===") for name, info in self.characters.items(): print(f"\n{name} ({info['role']}):") print(f" 描述: {info['description']}") print(f" 风格: {info['accent']}") print(f" 推荐语音: {info['voice_model']}") print(f" 状态: {'已初始化' if info['initialized'] else '未初始化'}") def save_config(self): """保存角色配置到JSON文件""" config_path = os.path.join(self.output_dir, "character_config.json") with open(config_path, 'w', encoding='utf-8') as f: json.dump(self.characters, f, ensure_ascii=False, indent=2) print(f"\n✓ 角色配置已保存到 {config_path}") def get_voice_for_character(self, name): """获取指定角色的语音模型""" if name in self.characters: return self.characters[name]["voice_model"] return None def setup_characters(): """设置所有播客角色""" manager = CharacterManager() print("=== 开始播客角色初始化 ===") # 添加Sonia (Host) - 主持人 manager.add_character( name="Sonia", role="Host (主持人)", accent="冷静、客观、甚至带点冷幽默", voice_model="en-GB-RyanNeural", description="主持人,负责引导对话,不使用Judy" ) # 添加Graham (硅谷) manager.add_character( name="Graham", role="硅谷", accent="典型的 American Tech Bro,语速快,自信", voice_model="en-US-GuyNeural", description="硅谷科技人士视角" ) # 添加Dmitri (俄罗斯) manager.add_character( name="Dmitri", role="俄罗斯", accent="深沉,重音在后", voice_model="en-IE-ConnorNeural", description="俄罗斯视角" ) # 添加Amita (印度) manager.add_character( name="Amita", role="印度", accent="语速快,清晰的印度口音", voice_model="en-IN-NeerjaNeural", description="印度视角" ) # 添加穆罕默德 (中东) manager.add_character( name="穆罕默德", role="中东", accent="沧桑,缓慢", voice_model="en-EG-SalmaNeural", description="中东视角" ) # 添加Author (作者) manager.add_character( name="Author", role="作者", accent="分析性,权威性", voice_model="en-US-GuyNeural", description="本书作者,提供深入分析" ) # 显示所有角色 manager.list_characters() # 保存配置 manager.save_config() print(f"\n=== 角色初始化完成 ===") print(f"共初始化 {len(manager.characters)} 个角色") print("配置文件已保存,随时可用于音频生成") return manager if __name__ == "__main__": setup_characters()