Tortoise هو برنامج لتحويل النص إلى كلام تم تصميمه وفقًا للأولويات التالية:
يحتوي هذا الريبو على كافة التعليمات البرمجية اللازمة لتشغيل Tortoise TTS في وضع الاستدلال.
المخطوطة: https://arxiv.org/abs/2305.07243
تتم استضافة عرض توضيحي مباشر على Hugging Face Spaces. إذا كنت ترغب في تجنب قائمة الانتظار، يرجى تكرار المساحة وإضافة وحدة معالجة الرسومات. يرجى ملاحظة أن المساحات المخصصة لوحدة المعالجة المركزية (CPU) فقط لا تعمل مع هذا العرض التوضيحي.
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
إذا كنت ترغب في تثبيت أحدث إصدار للتطوير، فيمكنك أيضًا تثبيته مباشرةً من مستودع git:
pip install git+https://github.com/neonbjb/tortoise-tts
أقوم بتسمية مستودعاتي المتعلقة بالكلام على اسم نباتات وحيوانات صحراء موهافي. السلحفاة هي لسان قليل في الخد: هذا النموذج بطيء إلى حد الجنون. إنه يستفيد من كل من وحدة فك التشفير الانحداري ووحدة فك التشفير الانتشارية. كلاهما معروف بمعدلات أخذ العينات المنخفضة. في K80، توقع إنشاء جملة متوسطة الحجم كل دقيقتين.
حسنًا..... لم يعد الأمر بطيئًا بعد الآن، يمكننا الحصول على 0.25-0.3 RTF على ذاكرة فيديو سعة 4 جيجابايت ومع البث يمكننا الحصول على زمن انتقال أقل من 500 مللي ثانية !!!
راجع هذه الصفحة للحصول على قائمة كبيرة من أمثلة المخرجات.
تطبيق رائع لـ Tortoise + GPT-3 (غير تابع لهذا المستودع): https://twitter.com/lexman_ai. لسوء الحظ، يبدو أن هذا المشروع لم يعد نشطا.
إذا كنت تريد استخدام هذا على جهاز الكمبيوتر الخاص بك، فيجب أن يكون لديك وحدة معالجة الرسومات NVIDIA.
نصيحة
على نظام التشغيل Windows، أوصي بشدة باستخدام طريقة تثبيت Conda. لقد قيل لي أنك إذا لم تفعل ذلك، فسوف تقضي الكثير من الوقت في مطاردة مشاكل التبعية.
أولاً، قم بتثبيت miniconda: https://docs.conda.io/en/latest/miniconda.html
ثم قم بتشغيل الأوامر التالية، باستخدام موجه anaconda كمحطة (أو أي محطة أخرى تم تكوينها للعمل مع conda)
هذا سوف:
conda create --name tortoise python=3.9 numba inflect
conda activate tortoise
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
conda install transformers=4.29.2
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install
اختياريًا، يمكن تثبيت pytorch في البيئة الأساسية، بحيث يمكن لبيئات conda الأخرى استخدامه أيضًا. للقيام بذلك، ما عليك سوى إرسال سطر conda install pytorch...
قبل تنشيط بيئة السلحفاة.
ملحوظة
عندما تريد استخدام tortoise-tts، سيكون عليك دائمًا التأكد من تنشيط بيئة tortoise
conda.
إذا كنت تستخدم نظام التشغيل Windows، فقد تحتاج أيضًا إلى تثبيت ملف pysoundfile: conda install -c conda-forge pysoundfile
طريقة سهلة للانطلاق على الأرض ونقطة انطلاق جيدة اعتمادًا على حالة الاستخدام الخاصة بك.
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
docker build . -t tts
docker run --gpus all
-e TORTOISE_MODELS_DIR=/models
-v /mnt/user/data/tortoise_tts/models:/models
-v /mnt/user/data/tortoise_tts/results:/results
-v /mnt/user/data/.cache/huggingface:/root/.cache/huggingface
-v /root:/work
-it tts
يمنحك هذا محطة تفاعلية في بيئة جاهزة للقيام ببعض تحويل النص إلى كلام. يمكنك الآن استكشاف الواجهات المختلفة التي تعرضها السلحفاة لتحويل النص إلى كلام.
على سبيل المثال:
cd app
conda activate tortoise
time python tortoise/do_tts.py
--output_path /results
--preset ultra_fast
--voice geralt
--text " Time flies like an arrow; fruit flies like a bananna. "
على نظام التشغيل macOS 13+ مع شرائح M1/M2، تحتاج إلى تثبيت الإصدار القريب من PyTorch، كما هو مذكور في الصفحة الرسمية، يمكنك القيام بما يلي:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
تأكد من القيام بذلك بعد تنشيط البيئة. إذا كنت لا تستخدم conda فستبدو الأوامر كما يلي:
python3.10 -m venv .venv
source .venv/bin/activate
pip install numba inflect psutil
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
pip install transformers
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
pip install .
انتبه إلى أن DeepSpeed معطل على Apple Silicon لأنه لا يعمل. يتم تجاهل العلامة --use_deepspeed
. قد تحتاج إلى إضافة PYTORCH_ENABLE_MPS_FALLBACK=1
للأوامر أدناه لتشغيلها نظرًا لأن MPS لا يدعم جميع العمليات في Pytorch.
يتيح لك هذا البرنامج النصي نطق عبارة واحدة بصوت واحد أو أكثر.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
سوف يستمع في المنفذ 5000
يوفر هذا البرنامج النصي أدوات لقراءة كميات كبيرة من النص.
python tortoise/read_fast.py --textfile < your text to be read > --voice random
يوفر هذا البرنامج النصي أدوات لقراءة كميات كبيرة من النص.
python tortoise/read.py --textfile < your text to be read > --voice random
سيؤدي هذا إلى تقسيم الملف النصي إلى جمل، ثم تحويلها إلى كلام واحدًا تلو الآخر. سيتم إخراج سلسلة من المقاطع المنطوقة عند إنشائها. بمجرد إنشاء جميع المقاطع، سيتم دمجها في ملف واحد وإخراجها أيضًا.
في بعض الأحيان تفسد السلحفاة المخرجات. يمكنك إعادة إنشاء أي مقاطع سيئة عن طريق إعادة تشغيل read.py
باستخدام الوسيطة --regenerate.
يمكن استخدام السلحفاة برمجياً، كما يلي:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
لاستخدام السرعة العميقة:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
لاستخدام ذاكرة التخزين المؤقت كيلو فولت:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( kv_cache = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
لتشغيل النموذج في float16:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
للتشغيل بشكل أسرع، استخدم الثلاثة:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True , kv_cache = True , half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
وقد حصل هذا المشروع على الثناء أكثر مما كنت أتوقع. ومع ذلك، فأنا أقف على أكتاف العمالقة، وأريد أن أشيد بعدد قليل من الأشخاص الرائعين في المجتمع الذين ساعدوا في تحقيق ذلك:
تم إنشاء Tortoise بالكامل بواسطة المؤلف (James Betker) باستخدام أجهزته الخاصة. لم يشارك صاحب العمل في أي جانب من جوانب تطوير السلحفاة.
تم ترخيص Tortoise TTS بموجب ترخيص Apache 2.0.
إذا كنت تستخدم هذا الريبو أو الأفكار الواردة فيه لبحثك، يرجى الاستشهاد به! يمكن العثور على مدخل bibtex في الجزء الأيمن على GitHub.