Files
tts/scripts/setup_characters.py
2026-01-19 10:27:41 +08:00

127 lines
3.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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()