CHUYEN_MP3 / check_vocab_pretrained.py
mrsu0994
upload f5-tts source
1ddca60
"""
Kiểm tra vocab trước khi pretraining hoặc fine-tuning mô hình lớn (LLM hoặc Speech).
Mục tiêu: Đảm bảo bộ vocab bao phủ đầy đủ token của Tiếng Việt.
"""
import os
# Định nghĩa đường dẫn file vocab
PRETRAINED_VOCAB_PATH = "data/Emilia_ZH_EN_pinyin/vocab.txt"
DATASET_VOCAB_PATH = "data/your_training_dataset/vocab_your_dataset.txt"
OUTPUT_VOCAB_PATH = "data/your_training_dataset/vocab.txt"
def load_vocab(file_path: str) -> list:
"""
Đọc danh sách token từ file vocab.
Args:
file_path (str): Đường dẫn đến file vocab.
Returns:
list: danh sách các token trong file.
"""
if not os.path.exists(file_path):
raise FileNotFoundError(f"File không tồn tại: {file_path}")
with open(file_path, "r", encoding="utf8") as file:
return [line.replace("\n", "") for line in file]
def save_vocab(file_path: str, vocab: list):
"""
Lưu danh sách token vào file vocab.
Args:
file_path (str): Đường dẫn file đầu ra.
vocab (list): Danh sách token cần lưu.
"""
with open(file_path, "w", encoding="utf8") as file:
file.writelines(f"{token}\n" for token in vocab)
def process_vocab():
"""
Kiểm tra và mở rộng vocab nếu cần thiết.
"""
# Load vocab từ file
tokens_pretrained = load_vocab(PRETRAINED_VOCAB_PATH)
tokens_your_dataset = load_vocab(DATASET_VOCAB_PATH)
# Tìm token trong dataset nhưng không có trong pretrained
tokens_missing = []
for token in tokens_your_dataset:
if token not in tokens_pretrained:
tokens_missing.append(token)
print(f"Số token thiếu trong vocab pretrained: {len(tokens_missing)}")
# Tạo vocab mới và lưu lại
new_vocab = tokens_pretrained + list(tokens_missing)
save_vocab(OUTPUT_VOCAB_PATH, new_vocab)
print(f"Vocab mới đã được lưu tại {OUTPUT_VOCAB_PATH}, tổng số token: {len(new_vocab)}")
if __name__ == "__main__":
process_vocab()