Bg-TTS-Vits-MMS-checkpoint / test-tts-mms-bg.py
batvanio12's picture
Update test-tts-mms-bg.py
da0851b verified
Raw
History Blame Contribute Delete
4.31 kB
import os
import torch
import soundfile as sf
# Уверете се, че имате инсталирано: pip install TTS
from TTS.api import TTS
# --- Конфигурация ---
# Пълният път до папката, която е създадена по време на дообучението от Coqui TTS
# Тази папка трябва да съдържа best_model.pth (или best_model_1071.pth), config.json, speakers.pth
MODEL_CHECKPOINT_DIR = "./TTS/bg/my_fine_tuned_model/bg-June-02-2026_07+17PM-0000000"
# Избери кой файл с тегла да заредиш
# best_model.pth обикновено е най-добрият модел от цялото обучение
# best_model_1071.pth е моделът от конкретна епоха/стъпка (в случая 1071)
MODEL_WEIGHTS_FILE = "best_model.pth"
# Текст за синтез
TEXT_TO_SYNTHESIZE = "Аз съм българче и расна в дни велики, в славно време, син съм на земя прекрасна, син съм на юнашко племе."
# Устройство за изпълнение
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
# --- Проверка на пътищата на файловете ---
model_path = os.path.join(MODEL_CHECKPOINT_DIR, MODEL_WEIGHTS_FILE)
config_path = os.path.join(MODEL_CHECKPOINT_DIR, "config.json")
# speakers_path = os.path.join(MODEL_CHECKPOINT_DIR, "speakers.pth") # speakers.pth е важен за Coqui TTS VITS
if not os.path.exists(model_path):
print(f"Грешка: Файлът с теглата '{model_path}' не е намерен.")
exit()
if not os.path.exists(config_path):
print(f"Грешка: Конфигурационният файл '{config_path}' не е намерен.")
exit()
# if not os.path.exists(speakers_path):
# print(f"Внимание: Файлът '{speakers_path}' (speakers.pth) не е намерен. Моделът може да е едно-говорителски или да има проблеми.")
# --- Зареждане на модела с Coqui TTS API ---
try:
print(f"Зареждане на VITS модел с Coqui TTS...")
print(f" Модел: {model_path}")
print(f" Конфигурация: {config_path}")
# Инициализация на TTS обекта
tts = TTS(
model_path=model_path,
config_path=config_path,
progress_bar=True,
gpu=True if DEVICE == "cuda" else False # Активиране на GPU, ако е налично
)
print("Моделът е зареден успешно с Coqui TTS.")
# --- Синтез на реч ---
speaker_name = None
if tts.speakers: # Ако моделът има налични говорители (т.е. е мулти-говорител)
print(f"Налични говорители: {tts.speakers}")
# Ако твоят модел е мулти-говорителски, трябва да избереш един от тях.
# Например, ако си обучил няколко говорителя, tts.speakers ще е списък от техните ID-та.
# speaker_name = tts.speakers[0] # Можеш да избереш първия говорител, или конкретен
print(f"Използван говорител: {speaker_name if speaker_name else 'По подразбиране / Едно-говорителски'}")
else:
print("Моделът изглежда е едно-говорителски или speakers.pth не е наличен/валиден.")
print(f"Синтезиране на реч за текст: '{TEXT_TO_SYNTHESIZE}'")
wav = tts.tts(text=TEXT_TO_SYNTHESIZE) # , speaker=speaker_name)
# Записване на аудиото във файл
output_audio_path = "Проба-1.wav"
sf.write(output_audio_path, wav, tts.synthesizer.output_sample_rate)
print(f"Речта е синтезирана и записана във: {output_audio_path}")
except Exception as e:
print(f"Възникна грешка при зареждане или синтез с Coqui TTS: {e}")