Home
Login

نموذج خفيف الوزن لتحويل النص إلى كلام، يمكنه إنشاء كلام طبيعي وعالي الجودة من خلال وصف اللغة الطبيعية.

Apache-2.0Python 5.3khuggingfaceparler-tts Last Updated: 2024-12-10

نظرة عامة على مشروع Parler TTS

Parler-TTS هو نموذج خفيف الوزن لتحويل النص إلى كلام (TTS)، قادر على توليد كلام طبيعي وعالي الجودة، ويمكنه التحكم في أسلوب المتحدث (الجنس، النبرة، طريقة الكلام، إلخ). هذا المشروع هو تطبيق مفتوح المصدر للورقة البحثية لـ Stability AI وجامعة إدنبرة بعنوان "التوجيه باللغة الطبيعية لتحويل النص إلى كلام عالي الدقة مع التعليقات التوضيحية الاصطناعية".

مميزات المشروع

  • مفتوح المصدر بالكامل: على عكس نماذج TTS الأخرى، فإن Parler-TTS هو إصدار مفتوح المصدر بالكامل.
  • مجموعة البيانات مفتوحة: جميع مجموعات البيانات والمعالجة المسبقة وأكواد التدريب والأوزان منشورة علنًا بموجب ترخيص متساهل.
  • التحكم باللغة الطبيعية: يمكن التحكم في خصائص الصوت من خلال مطالبات نصية بسيطة.
  • أحجام نماذج متعددة: تتوفر إصدارات نموذجية بأحجام معلمات مختلفة.

إصدارات النماذج المتاحة

1. Parler-TTS Mini v1

  • عدد المعلمات: 880 مليون
  • بيانات التدريب: 45 ألف ساعة من بيانات الكتب الصوتية
  • الميزات: خفيف الوزن، مناسب للاستدلال السريع.

2. Parler-TTS Large v1

  • عدد المعلمات: 2.2 مليار معلمة
  • بيانات التدريب: 45 ألف ساعة من البيانات الصوتية
  • الميزات: توليد صوت عالي الجودة.

3. Parler-TTS Mini Expresso

  • الميزات الخاصة: يوفر تحكمًا عاطفيًا فائقًا (السعادة، الارتباك، الضحك، الحزن) وأصواتًا متسقة (Jerry، Thomas، Elisabeth، Talia).

طريقة التثبيت

التثبيت الأساسي

pip install git+https://github.com/huggingface/parler-tts.git

مستخدمو Apple Silicon

pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu

طريقة الاستخدام

مثال الاستخدام الأساسي

import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler-tts-mini-v1").to(device)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler-tts-mini-v1")

prompt = "Hey, how are you doing today?"
description = "A female speaker delivers a slightly expressive and animated speech with a moderate speed and pitch. The recording is of very high quality, with the speaker's voice sounding clear and very close up."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)

استخدام متحدثين محددين مسبقًا

يدعم النموذج 34 متحدثًا محددًا مسبقًا، بما في ذلك: Laura, Gary, Jon, Lea, Karen, Rick, Brenda, David, Eileen, Jordan, Mike, Yann, Joy, James, Eric, Lauren, Rose, Will, Jason, Aaron, Naomie, Alisa, Patrick, Jerry, Tina, Jenna, Bill, Tom, Carol, Barbara, Rebecca, Anna, Bruce, Emily.

prompt = "Hey, how are you doing today?"
description = "Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)

نصائح الاستخدام

  • استخدم "very clear audio" لإنشاء صوت بأعلى جودة.
  • استخدم "very noisy audio" لإضافة مستوى عالٍ من الضوضاء في الخلفية.
  • يمكنك استخدام علامات الترقيم للتحكم في إيقاع الكلام، على سبيل المثال، استخدام الفاصلة لإضافة وقفات قصيرة في الكلام.
  • يمكن التحكم في خصائص الصوت المتبقية (الجنس وسرعة الكلام والنبرة والتردد) مباشرةً من خلال المطالبات.

التدريب والضبط الدقيق

التدريب السريع

accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json

دعم الضبط الدقيق

يوفر المشروع دليلًا كاملاً للتدريب والضبط الدقيق، بما في ذلك:

  • مقدمة عن الهندسة المعمارية
  • خطوات البدء
  • دليل تدريب مفصل
  • مثال على الضبط الدقيق لمجموعة بيانات المتحدث الفردي

التحسينات التقنية

يتضمن المشروع العديد من تحسينات الأداء:

  • توافق SDPA و Flash Attention 2
  • قدرة تجميع النموذج
  • دعم التوليد المتدفق
  • تحسين ذاكرة التخزين المؤقت الثابتة

هيكل المشروع

  • كود الاستدلال: وظائف الاستدلال الأساسية لـ TTS
  • كود التدريب: عمليات التدريب والضبط الدقيق الكاملة
  • تكامل البيانات والكلام: يعمل بالتعاون مع مكتبة تعليقات البيانات
  • أدوات التحسين: خيارات متعددة لتحسين سرعة الاستدلال

سيناريوهات التطبيق

  • إنتاج الكتب الصوتية
  • المساعدون الصوتيون
  • إنتاج المحتوى التعليمي
  • تقنيات المساعدة لذوي الاحتياجات الخاصة
  • إنشاء محتوى الوسائط المتعددة

ترخيص المصدر المفتوح والاقتباس

يعتمد المشروع ترخيصًا متساهلاً مفتوح المصدر، ويشجع مساهمات المجتمع والاستخدام التجاري. إذا كنت تستخدم هذا المشروع، فمن المستحسن أن تقتبس:

@misc{lacombe-etal-2024-parler-tts,
author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
title = {Parler-TTS},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/huggingface/parler-tts}}
}

مساهمات المجتمع

يرحب المشروع بمساهمات المجتمع، خاصة في المجالات التالية:

  • توسيع وتنوع مجموعة البيانات
  • تحسين طرق التدريب
  • دعم متعدد اللغات
  • تحسين الأداء
  • تحسين مقاييس التقييم

يمثل Parler TTS تقدمًا كبيرًا في تقنية TTS مفتوحة المصدر، مما يوفر للباحثين والمطورين حلاً قويًا ومرنًا لتحويل النص إلى كلام.

Star History Chart