|
|
""" |
|
|
Genie TTS 配置管理模块 |
|
|
包含应用程序的所有配置常量和设置 |
|
|
""" |
|
|
|
|
|
import os |
|
|
import tempfile |
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
APP_TITLE = "🎵 Genie TTS - 高质量日语语音合成" |
|
|
APP_DESCRIPTION = """ |
|
|
**Genie TTS** 是基于 GPT-SoVITS V2 架构的轻量级日语语音合成系统。 |
|
|
|
|
|
### ✨ 特性 |
|
|
- 🎯 **零样本语音合成**:无需训练,直接使用预定义角色 |
|
|
- 🚀 **轻量级推理**:基于 ONNX Runtime,CPU 友好 |
|
|
- 🎭 **多角色支持**:预置多个日语语音角色 |
|
|
- 🔄 **实时合成**:快速响应,适合交互应用 |
|
|
""" |
|
|
|
|
|
|
|
|
AVAILABLE_CHARACTERS = ['misono_mika'] |
|
|
|
|
|
|
|
|
DEFAULT_CHARACTER = 'misono_mika' |
|
|
DEFAULT_TEXT = "こんにちは、元気ですか?" |
|
|
|
|
|
|
|
|
CACHE_DIR_NAME = "genie_tts_cache" |
|
|
MAX_TEXT_LENGTH = 500 |
|
|
AUDIO_SAMPLE_RATE = 32000 |
|
|
AUDIO_FORMAT = "WAV" |
|
|
|
|
|
|
|
|
MODEL_FILES = [ |
|
|
'prompt.wav', |
|
|
'prompt_wav.json', |
|
|
't2s_encoder_fp32.onnx', |
|
|
't2s_first_stage_decoder_fp32.onnx', |
|
|
't2s_stage_decoder_fp32.onnx', |
|
|
'vits_fp32.onnx' |
|
|
] |
|
|
|
|
|
|
|
|
MODEL_SIZES = { |
|
|
'misono_mika': 180 |
|
|
} |
|
|
|
|
|
|
|
|
ENV_SETTINGS = { |
|
|
"HF_HUB_ENABLE_PROGRESS_BAR": "1", |
|
|
"TOKENIZERS_PARALLELISM": "false", |
|
|
} |
|
|
|
|
|
|
|
|
EXAMPLE_TEXTS = [ |
|
|
["こんにちは、元気ですか?", "misono_mika"], |
|
|
["今日はいい天気ですね。", "misono_mika"], |
|
|
["ありがとうございます。", "misono_mika"], |
|
|
["おはようございます。", "misono_mika"], |
|
|
["お疲れ様でした。", "misono_mika"] |
|
|
] |
|
|
|
|
|
|
|
|
UI_CONFIG = { |
|
|
"server_name": "0.0.0.0", |
|
|
"server_port": 7860, |
|
|
"show_api": False, |
|
|
"show_error": True, |
|
|
"quiet": False |
|
|
} |
|
|
|
|
|
|
|
|
GRADIO_THEME = "soft" |
|
|
|
|
|
|
|
|
UI_TEXT = { |
|
|
"text_label": "🎯 输入日语文本", |
|
|
"text_placeholder": "在此输入要合成语音的日语文本...", |
|
|
"character_label": "🎭 选择角色", |
|
|
"submit_button": "🎵 生成语音", |
|
|
"clear_button": "🗑️ 清空", |
|
|
"audio_label": "🔊 生成的音频", |
|
|
"status_label": "📊 状态信息", |
|
|
"examples_label": "💡 示例文本", |
|
|
"system_status_label": "🖥️ 系统状态" |
|
|
} |
|
|
|
|
|
def get_cache_dir(): |
|
|
"""获取缓存目录路径""" |
|
|
cache_dir = os.path.join(tempfile.gettempdir(), CACHE_DIR_NAME) |
|
|
os.makedirs(cache_dir, exist_ok=True) |
|
|
return cache_dir |
|
|
|
|
|
def get_character_cache_dir(cache_dir, character_name): |
|
|
"""获取特定角色的缓存目录""" |
|
|
return os.path.join(cache_dir, character_name) |
|
|
|
|
|
def setup_environment(): |
|
|
"""设置环境变量""" |
|
|
for key, value in ENV_SETTINGS.items(): |
|
|
os.environ[key] = value |