| مهمة | دفتر |
|---|---|
| Whisper_vits_japanese (مجموعة بيانات ايلا مدمجة) |
يستخدم هذا المشروع مشروع Whisper من Google كمعالج بيانات Vits. من خلال تعديل Transcribe.py من مشروع Whisper ، فإنه يقوم بإنشاء ملف SRT المقابل للصوت (يتم استخدام PR المحذوف هنا ، ولم يعد يتم العثور على العلاقات العامة ، لذلك لا يمكن الرجوع إليه إلى المؤلف الأصلي). في الوقت نفسه ، يمكن أن يتم استرخاء الحد الأقصى للهمس فقط على بعض الملفات الصوتية إلى النقطة التي يمكن أن يعبر فيها جميع ملفات الصوت في المجلد. يمكن لـ Whisper إخراج SRT لجعل إدخال الصوت الطويل ممكنًا ، ولم يعد المستخدمون بحاجة إلى خفض الصوت إلى قطع ، أو حتى ترجمة نص الصوت الطويل. نعتمد بشكل مباشر على الهمس للتعرف على الكلام وإعداد البيانات ، ونقسم تلقائيًا إلى صوت قصير ، وننشئ ملفات النص تلقائيًا ، ثم إرسالها إلى عملية التدريب على Vits. بالنظر إلى أن الصوت الجاف على المدى الطويل من السهل الحصول عليه ، يتم تقليل حواجز الدخول إلى حد كبير مرة أخرى.
تكون عملية المعالجة تقريبًا على النحو التالي: سيتم معالجة ملف SRT المعترف به من قبل Whisper بواسطة Auto.py. تشير عملية المعالجة إلى tobiasrordorf/srt-to-csv و udio-split: تقسيم ملفات الصوت الطويلة استنادًا إلى الترجمة الفرعية في ملف SRT (النص المحفوظ في CSV) (github.com). يتم تحويل ملف الصوت أولاً إلى 22050 هرتز و 16 بت ، ثم يتم تحويل الطابع الزمني لملف SRT بنفس الاسم ويتم تحويل نسخة التعرف على الكلام إلى ملف CSV. يحتوي ملف CSV على وقت البدء ووقت الانتهاء من كل جزء من الصوت ، وكذلك مسارات الملفات والملفات الصوتية المقابلة. بعد ذلك ، يتم استخدام حزمة Audiosegress لتقسيم الصوت الطويل وفقًا لوقت البدء ووقت النهاية ، ويتم إنشاء ملفات الصوت ذات اللواحق بترتيب الشرائح ، مثل A_0.WAV و A_1.WAV ، إلخ. سيتم تخزين جميع الصوت المطلوبة في المجلد Slice_audio ، ثم ملف txt مع "المسار | يمكن توصيل تدفق البيانات اللاحق مباشرة بجزء Vits.
إن منظفًا ورمزًا أستخدمه الآن هو cjangcjengh/vits: Vits تنفيذ اليابانية والصينية والكورية والسنسكريتية (github.com) كنسخة أولية من فترة الإله الخلق. الآن قام مستودعه بتحديث المزيد من المنظفات والرموز ، لكنني شخص حنين للغاية ، وأنا أفتقد الوقت الذي جاء فيه الجميع في البداية ، لذلك ما زلت أستخدم الإصدار الأصلي. يحتوي Vits على اثنين من المعالجة المسبقة ، أحدهما هو محاذاة رتابة والآخر مسبقًا. لقد وضعت جميع العمليات في Whisper-its-japanese.ipynb ، وأحتاج فقط إلى النقر فوقها خطوة بخطوة لتشغيلها. الشيء الوحيد الذي يحتاج المستخدم إلى تغييره هو استبدال مسار الرمز البريدي الصوتي بسحاب الصوت الخاص بك ، ولا تحتاج بقية الأجزاء إلى تعديلها. أخيرًا ، أضفت الإرشادات لحفظ النموذج والملفات المعالجة إلى قرص الشبكة ، واستعادة آخر نقطة تفتيش من قرص الشبكة أثناء التدريب التالي.
ما عليك سوى تسمية تنسيق ملف الصوت SPEALKERID_XXXX.WAV وقم بتحميله إلى مجلد الصوت. ثم اتبع الخطوات العامة لتشغيلها. عند الانتهاء من معالجة الصوت ، قم بتشغيل ملف Auto_ms.py ، وسيتم إنشاء ملف TXT تلقائيًا ، مع TOMPAT PATH | SPEANERID | TEXT.
ملاحظة: إذا كنت تستخدم Auto_ms.py لإنشاء TXT ، فيجب عليك تعديله إلى الرمز في خطوة التحديد وتحويل النص: (لأن text_index ليس 1 ولكن 2 عند التدريب لعدة أشخاص)
python preprocess.py --text_index 2 --text_cleaners japanese_cleaners --filelists /content/whisper-vits-japanese/filelists/train_filelist.txt /content/whisper-vits-japanese/filelists/val_filelist.txt
python train_ms.py -c configs/ms.json -m ms
hps = utils.get_hparams_from_file("./configs/ms.json")
net_g = SynthesizerTrn(
len(symbols),
hps.data.filter_length // 2 + 1,
hps.train.segment_size // hps.data.hop_length,
n_speakers=hps.data.n_speakers,
**hps.model).cuda()
_ = net_g.eval()
_ = utils.load_checkpoint("/root/autodl-tmp/logs/ms/G_29000.pth", net_g, None)
stn_tst = get_text("ごめんね優衣", hps)
with torch.no_grad():
x_tst = stn_tst.cuda().unsqueeze(0)
x_tst_lengths = torch.LongTensor([stn_tst.size(0)]).cuda()
sid = torch.LongTensor([11]).cuda() //11指speakerId为11,如果有12个n_speaker,编号就从0-11
audio = net_g.infer(x_tst, x_tst_lengths, sid=sid, noise_scale=.667, noise_scale_w=0.8, length_scale=1)[0][0,0].data.cpu().float().numpy()
ipd.display(ipd.Audio(audio, rate=hps.data.sampling_rate, normalize=False))