Spaces:
Build error
Build error
File size: 3,490 Bytes
8a1a95a 13cef53 8a1a95a 13cef53 8a1a95a 13cef53 8a1a95a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# train.py
import os
import shutil
from espnet2.bin.tts_train import TTSTrainer
from espnet2.tasks.tts import TTSTask
from espnet_model_zoo.downloader import ModelDownloader
from datasets import load_dataset
import yaml
# تحميل بيانات sada2022
dataset = load_dataset("m6011/sada2022")
# تقسيم البيانات إلى تدريب وتحقق
train_data = dataset['train']
valid_data = dataset['test']
# إنشاء ملفات البيانات المطلوبة
os.makedirs('data/train', exist_ok=True)
os.makedirs('data/valid', exist_ok=True)
# حفظ البيانات في ملفات نصية
with open('data/train/wav.scp', 'w', encoding='utf-8') as wav_scp, \
open('data/train/text', 'w', encoding='utf-8') as text_file:
for idx, sample in enumerate(train_data):
wav_path = sample['audio']['path']
transcription = sample['ProcessedText']
utt_id = f'train_{idx}'
wav_scp.write(f'{utt_id} {wav_path}\n')
text_file.write(f'{utt_id} {transcription}\n')
with open('data/valid/wav.scp', 'w', encoding='utf-8') as wav_scp, \
open('data/valid/text', 'w', encoding='utf-8') as text_file:
for idx, sample in enumerate(valid_data):
wav_path = sample['audio']['path']
transcription = sample['ProcessedText']
utt_id = f'valid_{idx}'
wav_scp.write(f'{utt_id} {wav_path}\n')
text_file.write(f'{utt_id} {transcription}\n')
# تحميل إعدادات التدريب الافتراضية من ESPnet
config_path = 'conf/train.yaml'
os.makedirs('conf', exist_ok=True)
# يمكنك تخصيص إعدادات التدريب هنا أو استخدام الإعدادات الافتراضية
config = {
'output_dir': 'exp/tts_fastspeech2',
'token_type': 'char',
'fs': 16000,
'lang': 'ar', # تحديد اللغة العربية
'train_data_path_and_name_and_type': [
('data/train/wav.scp', 'speech', 'sound'),
('data/train/text', 'text', 'text')
],
'valid_data_path_and_name_and_type': [
('data/valid/wav.scp', 'speech', 'sound'),
('data/valid/text', 'text', 'text')
],
'token_list': 'tokens.txt',
'init_param': None,
# يمكنك إضافة المزيد من الإعدادات هنا
}
with open(config_path, 'w', encoding='utf-8') as f:
yaml.dump(config, f, allow_unicode=True)
# توليد قائمة التوكينات (الأحرف) من البيانات
def generate_token_list(text_files, output_file):
tokens = set()
for text_file in text_files:
with open(text_file, 'r', encoding='utf-8') as f:
for line in f:
_, text = line.strip().split(' ', 1)
tokens.update(list(text))
tokens = sorted(tokens)
with open(output_file, 'w', encoding='utf-8') as f:
for token in tokens:
f.write(f'{token}\n')
generate_token_list(['data/train/text', 'data/valid/text'], 'tokens.txt')
# بدء عملية التدريب
train_args = [
'--config', 'conf/train.yaml',
'--use_preprocessor', 'true',
'--token_type', 'char',
'--bpemodel', None,
'--train_data_path_and_name_and_type', 'data/train/wav.scp,speech,sound',
'--train_data_path_and_name_and_type', 'data/train/text,text,text',
'--valid_data_path_and_name_and_type', 'data/valid/wav.scp,speech,sound',
'--valid_data_path_and_name_and_type', 'data/valid/text,text,text',
'--output_dir', 'exp/tts_fastspeech2',
]
TTSTask.main(train_args)
|