يحتوي هذا المستودع على عمال توليف النص إلى الكلام العصبي متعدد النطاقات في الإستوني الذين يعالجون طلبات من RabbitMQ.
تم تطوير المشروع من قبل مجموعة الأبحاث NLP في جامعة تارتو. يمكن أيضًا اختبار تخليق الكلام في العرض التجريبي الخاص بنا.
يحتوي قسم الإصدارات على ملفات النموذج أو تعليمات التنزيل الخاصة بهم. إذا لم يحدد الإصدار معلومات النموذج ، فيمكن استخدام النموذج من الإصدار السابق. ننصح دائمًا باستخدام أحدث إصدار متاح لضمان أفضل جودة النموذج وتوافق الرمز.
تتوافق ملفات تكوين النموذج في config/config.yaml مع بنية models/ الدليل التالية:
models
├── hifigan
│ ├── ljspeech
│ │ ├── config.json
│ │ └── model.pt
│ ├── vctk
│ │ ├── config.json
│ │ └── model.pt
└── tts
└── multispeaker
├── config.yaml
└── model_weights.hdf5
يمكن نشر عامل TTS باستخدام صورة Docker المنشورة جنبًا إلى جنب مع المستودع. يرتبط كل إصدار صورة بإصدار معين. يتم استبعاد ملف (ملفات) النموذج المطلوبة من الصورة لتقليل حجم الصورة ويجب تنزيلها من قسم الإصدارات ويجب إرفاق دليلها إلى مستوى الصوت /app/models .
يتم تحميل تكوين التسجيل من /app/config/logging.prod.ini logging.prod.ini وتكوين الخدمة من ملف /app/config/config.yaml . تم التعليق على التكوين المضمّن لتوضيح كيفية إضافة تكوينات النموذج الجديدة.
يجب تكوين متغيرات البيئة التالية عند تشغيل الحاوية:
MQ_USERNAME - اسم المستخدم RABBITMQMQ_PASSWORD - كلمة مرور مستخدم RABBITMQMQ_HOST - مضيف RABBITMQMQ_PORT (اختياري) - منفذ RABBITMQ ( 5672 بشكل افتراضي)MQ_EXCHANGE (اختياري)-اسم تبادل RabbitMQ ( text-to-speech افتراضيًا)MQ_HEARTBEAT (اختياري) - فاصل نبضات القلب ( 60 ثانية بشكل افتراضي)MQ_CONNECTION_NAME (اختياري) - اسم اتصال ودود ( TTS worker افتراضيًا)MKL_NUM_THREADS (اختياري) - عدد مؤشرات الترابط المستخدمة للتوازي داخل OP بواسطة Pytorch (المستخدم في نموذج Vocoder). 16 بشكل افتراضي. إذا تم ضبطها على قيمة فارغة ، فإنها تتخلف عن عدد نوى وحدة المعالجة المركزية التي قد تسبب النفقات العامة الحسابية عند نشرها على عقد أكبر. بدلاً من ذلك ، يمكن استخدام docker run Flag --cpuset-cpus للتحكم في ذلك. لمزيد من التفاصيل ، راجع قسم متطلبات الأداء والأجهزة أدناه. بشكل افتراضي ، تكون نقطة إدخال الحاوية main.py بدون وسيطات إضافية ، ولكن يجب تعريف الوسائط باستخدام خيار COMMAND . العلامة المطلوبة الوحيدة هي --model-name لتحديد النموذج الذي يتم تحميله بواسطة العامل. يمكن رؤية القائمة الكاملة للأعلام المدعومة عن طريق تشغيل python main.py -h :
usage: main.py [-h] [--model-config MODEL_CONFIG] [--model-name MODEL_NAME] [--log-config LOG_CONFIG]
A text-to-speech worker that processes incoming TTS requests via RabbitMQ.
optional arguments:
-h, --help show this help message and exit
--model-config MODEL_CONFIG
The model config YAML file to load.
--model-name MODEL_NAME
The model to load. Refers to the model name in the config file.
--log-config LOG_CONFIG
Path to log config file.
يمكن اختبار الإعداد باستخدام تكوين العينة التالي docker-compose.yml :
version : ' 3 '
services :
rabbitmq :
image : ' rabbitmq '
environment :
- RABBITMQ_DEFAULT_USER=${RABBITMQ_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASS}
tts_api :
image : ghcr.io/tartunlp/text-to-speech-api:latest
environment :
- MQ_HOST=rabbitmq
- MQ_PORT=5672
- MQ_USERNAME=${RABBITMQ_USER}
- MQ_PASSWORD=${RABBITMQ_PASS}
ports :
- ' 8000:8000 '
depends_on :
- rabbitmq
tts_worker :
image : ghcr.io/tartunlp/text-to-speech-worker:latest
environment :
- MQ_HOST=rabbitmq
- MQ_PORT=5672
- MQ_USERNAME=${RABBITMQ_USER}
- MQ_PASSWORD=${RABBITMQ_PASS}
command : [ "--model-name", "multispeaker" ]
volumes :
- ./models:/app/models
depends_on :
- rabbitmqتم اختبار الخطوات التالية على Ubuntu وهي متوافقة مع وحدة المعالجة المركزية و GPU (CUDA المطلوبة).
استنساخ هذا المستودع مع العارض الفرعي
تثبيت المتطلبات الأساسية:
مجموعة Gnu Compiler ( sudo apt install build-essential )
لتثبيت وحدة المعالجة المركزية ، نوصي باستخدام ملف requirements.txt في بيئة نظيفة (تم اختباره باستخدام Python 3.9)
pip install -r requirements.txt
لتثبيت GPU ، استخدم ملف environment.yml .
تأكد من تثبيت المتطلبات الأساسية التالية:
ثم قم بإنشاء وتنشيط بيئة كوندا مع جميع التبعيات:
conda env create -f environment.yml -n tts
conda activate tts
قم بتنزيل النماذج من قسم الإصدارات والمكان داخل models/ الدليل.
تحقق من ملفات التكوين وتغيير أي افتراضات حسب الحاجة. تأكد من أن معلمة model_path في config/config.yaml تشير إلى النموذج الذي قمت بتنزيله للتو.
حدد معلمات اتصال RabbitMQ مع متغيرات البيئة أو في ملف config/.env كما هو موضح في config/sample.env .
قم بتشغيل العامل مع حيث يتطابق MODEL_NAME مع اسم النموذج في ملف التكوين الخاص بك:
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]