VoiceCraft هو نموذج لغة ترميز عصبي يملأ الرمز المميز، ويحقق أداءً متطورًا في كل من تحرير الكلام وتحويل النص إلى كلام بدون لقطة (TTS) على البيانات البرية بما في ذلك الكتب الصوتية ومقاطع الفيديو عبر الإنترنت و البودكاست.
لاستنساخ صوت غير مرئي أو تحريره، يحتاج VoiceCraft إلى بضع ثوانٍ فقط من المرجع.
هناك ثلاث طرق (إلى جانب تشغيل Gradio في Colab):
عندما تكون داخل صورة عامل الإرساء أو قمت بتثبيت كافة التبعيات، قم بالتحقق من inference_tts.ipynb
.
إذا كنت ترغب في تطوير النموذج مثل التدريب/الضبط الدقيق، فإنني أوصي باتباع إعداد البيئة والتدريب عليها.
22/04/2024: نماذج TTS المحسنة 330M/830M موجودة هنا، قم بتحميلها من خلال gradio_app.py
أو inference_tts.ipynb
! تم إصدار النسخة التجريبية، شكرًا جزيلًا لـ @chenxwh!
11/04/2024: VoiceCraft Gradio متاح الآن على HuggingFace Spaces هنا! شكرًا جزيلًا لـ @zuev-stepan وSewlell و@pgsoar @Ph0rk0z.
04/05/2024: قمت بضبط giga330M مع هدف TTS على gigaspeech و1/5 من librilight. الأوزان هنا. تأكد من أن الحد الأقصى لطول المطالبة + التوليد <= 16 ثانية (نظرًا لحساباتنا المحدودة، اضطررنا إلى إسقاط عبارات أطول من 16 ثانية في بيانات التدريب). هناك نماذج أقوى قادمة، ترقبوا ذلك!
28/03/2024: أوزان نماذج giga330M و giga830M معروضة على HuggingFace؟ هنا!
لتجربة تحرير الكلام أو استدلال تحويل النص إلى كلام (TTS) باستخدام VoiceCraft، فإن أبسط طريقة هي استخدام Google Colab. تعليمات التشغيل موجودة على Colab نفسه.
لاستخدامه كبرنامج نصي مستقل، راجع tts_demo.py وSpeech_editing_demo.py. تأكد أولاً من إعداد بيئتك. بدون وسيطات، سيقومون بتشغيل الوسائط التجريبية القياسية المستخدمة كمثال في مكان آخر في هذا المستودع. يمكنك استخدام وسيطات سطر الأوامر لتحديد صوتيات الإدخال الفريدة والنصوص المستهدفة ومعلمات الاستدلال الفائقة. قم بتشغيل أمر المساعدة لمزيد من المعلومات: python3 tts_demo.py -h
لتجربة استنتاج تحويل النص إلى كلام (TTS) باستخدام VoiceCraft، يمكنك أيضًا استخدام عامل الإرساء. شكرًا @ubergarm و@jayc88 على تحقيق ذلك.
تم اختباره على Linux وWindows ويجب أن يعمل مع أي مضيف مثبت عليه عامل الإرساء.
# 1. clone the repo on in a directory on a drive with plenty of free space
git clone [email protected]:jasonppy/VoiceCraft.git
cd VoiceCraft
# 2. assumes you have docker installed with nvidia container container-toolkit (windows has this built into the driver)
# https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/1.13.5/install-guide.html
# sudo apt-get install -y nvidia-container-toolkit-base || yay -Syu nvidia-container-toolkit || echo etc...
# 3. First build the docker image
docker build --tag " voicecraft " .
# 4. Try to start an existing container otherwise create a new one passing in all GPUs
./start-jupyter.sh # linux
start-jupyter.bat # windows
# 5. now open a webpage on the host box to the URL shown at the bottom of:
docker logs jupyter
# 6. optionally look inside from another terminal
docker exec -it jupyter /bin/bash
export USER=(your_linux_username_used_above)
export HOME=/home/ $USER
sudo apt-get update
# 7. confirm video card(s) are visible inside container
nvidia-smi
# 8. Now in browser, open inference_tts.ipynb and work through one cell at a time
echo GOOD LUCK
conda create -n voicecraft python=3.9.16
conda activate voicecraft
pip install -e git+https://github.com/facebookresearch/audiocraft.git@c5157b5bf14bf83449c17ea1eeb66c19fb4bc7f0#egg=audiocraft
pip install xformers==0.0.22
pip install torchaudio==2.0.2 torch==2.0.1 # this assumes your system is compatible with CUDA 11.7, otherwise checkout https://pytorch.org/get-started/previous-versions/#v201
apt-get install ffmpeg # if you don't already have ffmpeg installed
apt-get install espeak-ng # backend for the phonemizer installed below
pip install tensorboard==2.16.2
pip install phonemizer==3.2.1
pip install datasets==2.16.0
pip install torchmetrics==0.11.1
pip install huggingface_hub==0.22.2
# install MFA for getting forced-alignment, this could take a few minutes
conda install -c conda-forge montreal-forced-aligner=2.2.17 openfst=1.8.2 kaldi=5.5.1068
# install MFA english dictionary and model
mfa model download dictionary english_us_arpa
mfa model download acoustic english_us_arpa
# pip install huggingface_hub
# conda install pocl # above gives an warning for installing pocl, not sure if really need this
# to run ipynb
conda install -n voicecraft ipykernel --no-deps --force-reinstall
إذا واجهت مشكلات في الإصدار عند تشغيل الأشياء، فاطلع على Environment.yml للحصول على المطابقة التامة.
قم بالخروج inference_speech_editing.ipynb
و inference_tts.ipynb
بعد إعداد البيئة، قم بتثبيت تبعيات إضافية:
apt-get install -y espeak espeak-data libespeak1 libespeak-dev
apt-get install -y festival *
apt-get install -y build-essential
apt-get install -y flac libasound2-dev libsndfile1-dev vorbis-tools
apt-get install -y libxml2-dev libxslt-dev zlib1g-dev
pip install -r gradio_requirements.txt
قم بتشغيل خادم Gradio من المحطة الطرفية أو gradio_app.ipynb
:
python gradio_app.py
إنه جاهز للاستخدام على عنوان url الافتراضي.
النص الذكي: اكتب فقط ما تريد إنشاءه
وضع تحويل النص إلى كلام: تحويل النص إلى كلام بدون طلقة
وضع التحرير: تحرير الكلام
وضع تحويل النص إلى كلام الطويل: تحويل النص إلى كلام بسهولة على النصوص الطويلة
لتدريب نموذج VoiceCraft، تحتاج إلى إعداد الأجزاء التالية:
تتم معالجة الخطوة 1،2،3 في ./data/phonemize_encodec_encode_hf.py، حيث
مثال على التشغيل:
conda activate voicecraft
export CUDA_VISIBLE_DEVICES=0
cd ./data
python phonemize_encodec_encode_hf.py
--dataset_size xs
--download_to path/to/store_huggingface_downloads
--save_dir path/to/store_extracted_codes_and_phonemes
--encodec_model_path path/to/encodec_model
--mega_batch_size 120
--batch_size 32
--max_len 30000
حيث يتوفر encodec_model_path هنا. تم تدريب هذا النموذج على Gigaspeech XL، ويحتوي على 56 مليون معلمة، و4 كتب رموز، ويحتوي كل كتاب رموز على 2048 رمزًا. التفاصيل موصوفة في ورقتنا. إذا واجهت OOM أثناء الاستخراج، فحاول تقليل حجم الدفعة و/أو الحد الأقصى. سيتم تخزين الرموز والصوتيات وvocab.txt المستخرجة في path/to/store_extracted_codes_and_phonemes/${dataset_size}/{encodec_16khz_4codebooks,phonemes,vocab.txt}
.
أما بالنسبة للبيان، يرجى تنزيل Train.txt و validation.txt من هنا، ووضعهما تحت path/to/store_extracted_codes_and_phonemes/manifest/
. يرجى أيضًا تنزيل vocab.txt من هنا إذا كنت تريد استخدام نموذج VoiceCraft المُدرب مسبقًا (بحيث تكون مطابقة الصوت مع الرمز المميز هي نفسها).
الآن، أنت جيد لبدء التدريب!
conda activate voicecraft
cd ./z_scripts
bash e830M.sh
إنه نفس الإجراء لإعداد مجموعة البيانات المخصصة الخاصة بك. تأكد من أنه إذا
تحتاج أيضًا إلى تنفيذ الخطوات من 1 إلى 4 كتدريب، وأوصي باستخدام AdamW للتحسين إذا قمت بضبط نموذج تم تدريبه مسبقًا لتحقيق استقرار أفضل. البرنامج النصي للخروج ./z_scripts/e830M_ft.sh
.
إذا كانت مجموعة البيانات الخاصة بك تقدم صوتيات جديدة (وهو أمر محتمل جدًا) غير موجودة في نقطة تفتيش جيجا، فتأكد من دمج الصوتيات الأصلية مع الصوت من بياناتك عند إنشاء المفردات. وتحتاج إلى ضبط --text_vocab_size
و- --text_pad_token
بحيث يكون الأول أكبر من أو يساوي حجم vocab الخاص بك، والأخير له نفس قيمة --text_vocab_size
(أي --text_pad_token
هو دائمًا الرمز المميز الأخير). نظرًا لأن حجم تضمين النص أصبح الآن مختلفًا، تأكد من تعديل جزء تحميل الأوزان حتى لا أتعطل (يمكنك تخطي تحميل text_embedding
أو تحميل الجزء الموجود فقط، وتهيئة الجزء الجديد بشكل عشوائي)
قاعدة التعليمات البرمجية موجودة تحت CC BY-NC-SA 4.0 (LICENSE-CODE)، وأوزان النموذج موجودة تحت Coqui Public Model License 1.0.0 (LICENSE-MODEL). لاحظ أننا نستخدم بعض التعليمات البرمجية من مستودع آخر يخضع لتراخيص مختلفة: ./models/codebooks_patterns.py
يخضع لترخيص MIT؛ ./models/modules
، ./steps/optim.py
، data/tokenizer.py
موجودة تحت ترخيص Apache، الإصدار 2.0؛ برنامج phonemizer الذي استخدمناه موجود تحت ترخيص GNU 3.0.
نشكر Feiteng على إعادة إنتاج VALL-E، ونشكر فريق الأعمال الصوتية على التشفير مفتوح المصدر.
@article{peng2024voicecraft,
author = {Peng, Puyuan and Huang, Po-Yao and Mohamed, Abdelrahman and Harwath, David},
title = {VoiceCraft: Zero-Shot Speech Editing and Text-to-Speech in the Wild},
journal = {arXiv},
year = {2024},
}
يُحظر على أي منظمة أو فرد استخدام أي تقنية مذكورة في هذه الورقة لإنشاء أو تحرير خطاب شخص ما دون موافقته، بما في ذلك على سبيل المثال لا الحصر القادة الحكوميين والشخصيات السياسية والمشاهير. إذا لم تلتزم بهذا البند، فقد تنتهك قوانين حقوق الطبع والنشر.