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

80 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""
使用VoxCPM生成指定文本的音频
文字内容:老牛只有累死的命,那是舐犊跪乳的恩情!
"""
import os
import sys
# 设置路径
WORKSPACE = "/root/tts"
VOXCPM_DIR = os.path.join(WORKSPACE, "VoxCPM")
# 确保输出目录存在
OUTPUT_DIR = os.path.join(WORKSPACE, "audio_files")
os.makedirs(OUTPUT_DIR, exist_ok=True)
# 要生成的文字内容
TEXT_TO_SPEAK = """老牛 只有 累死的命,那是 舐犊跪乳 的 恩情!
替罪 才是 羔羊的运,自有 虎踞龙盘 的 妖精!
亢龙 有悔 悔断了筋,那是 哪吒抽筋 的 极刑!
黑鱼 贪食 吞下了肉,那是 人为刀俎 的 报应!"""
# 使用VoxCPM自带的示例音频
REFERENCE_FILE = os.path.join(VOXCPM_DIR, "examples", "example.wav")
print("=" * 60)
print("VoxCPM 文本转语音生成")
print("=" * 60)
print(f"参考语音文件: {REFERENCE_FILE}")
print(f"生成文字内容:\n{TEXT_TO_SPEAK}")
# 导入VoxCPM
sys.path.insert(0, VOXCPM_DIR)
from app import VoxCPMDemo
try:
# 切换到VoxCPM目录
os.chdir(VOXCPM_DIR)
# 初始化
print("\n正在初始化VoxCPMDemo...")
demo = VoxCPMDemo()
# 加载模型
print("正在加载VoxCPM模型...")
model = demo.get_or_load_voxcpm()
# 生成音频
print("\n正在生成音频...")
sample_rate, wav = demo.generate_tts_audio(
text_input=TEXT_TO_SPEAK,
prompt_wav_path_input=None, # 不使用参考语音,使用默认音色
prompt_text_input=None,
cfg_value_input=2.0,
inference_timesteps_input=20,
do_normalize=False,
denoise=False
)
# 保存音频
output_file = os.path.join(OUTPUT_DIR, "wuzidengke_default_voice.wav")
import soundfile as sf
sf.write(output_file, wav, sample_rate)
print(f"\n✅ 音频生成成功!")
print(f" 采样率: {sample_rate} Hz")
print(f" 音频长度: {len(wav)} samples")
print(f" 时长: {len(wav) / sample_rate:.2f}")
print(f" 保存路径: {output_file}")
except Exception as e:
print(f"\n❌ 错误: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
print("\n" + "=" * 60)
print("生成完成!")
print("=" * 60)