نموذج خطاب توليدي للحوار اليومي.
الإنجليزية |简体中文|日本語| Русский | الاسبانية | الفرنسية | شكرا
ملحوظة
يحتوي هذا الريبو على البنية التحتية للخوارزمية وبعض الأمثلة البسيطة.
نصيحة
بالنسبة لمنتجات المستخدم النهائي الموسعة، يرجى الرجوع إلى مستودع الفهرس Awesome-ChatTTS الذي يحتفظ به المجتمع.
ChatTTS هو نموذج تحويل النص إلى كلام مصمم خصيصًا لسيناريوهات الحوار مثل مساعد LLM.
يمكنك الرجوع إلى هذا الفيديو على Bilibili للحصول على الوصف التفصيلي.
مهم
النموذج الذي تم إصداره مخصص للأغراض الأكاديمية فقط.
2noise
org) يتم نشر الكود بموجب ترخيص AGPLv3+
.
تم نشر النموذج بموجب ترخيص CC BY-NC 4.0
. إنه مخصص للاستخدام التعليمي والبحثي، ولا ينبغي استخدامه لأي أغراض تجارية أو غير قانونية. لا يضمن المؤلفون دقة المعلومات أو اكتمالها أو موثوقيتها. المعلومات والبيانات المستخدمة في هذا الريبو هي للأغراض الأكاديمية والبحثية فقط. البيانات التي تم الحصول عليها من مصادر متاحة للجمهور، ولا يطالب المؤلفون بأي ملكية أو حقوق طبع ونشر للبيانات.
ChatTTS هو نظام قوي لتحويل النص إلى كلام. ومع ذلك، من المهم جدًا استخدام هذه التكنولوجيا بطريقة مسؤولة وأخلاقية. للحد من استخدام ChatTTS، أضفنا كمية صغيرة من الضوضاء عالية التردد أثناء تدريب النموذج الذي يبلغ 40000 ساعة، وقمنا بضغط جودة الصوت قدر الإمكان باستخدام تنسيق MP3، لمنع الجهات الفاعلة الضارة من استخدامه المحتمل لأغراض إجرامية. الأغراض. وفي الوقت نفسه، قمنا بتدريب نموذج الكشف داخليًا ونخطط لفتح مصدره في المستقبل.
نرحب دائمًا بقضايا GitHub/PRs.
للاستفسارات الرسمية حول النموذج وخريطة الطريق، يرجى الاتصال بنا على [email protected] .
انضم بالضغط هنا.
git clone https://github.com/2noise/ChatTTS
cd ChatTTS
pip install --upgrade -r requirements.txt
conda create -n chattts python=3.11
conda activate chattts
pip install -r requirements.txt
pip install safetensors vllm==0.2.7 torchaudio
تحذير
لا تقم بالتثبيت! تكييف TransformerEngine قيد التطوير حاليًا ولا يمكن تشغيله بشكل صحيح الآن. تثبيته فقط لغرض التطوير. انظر المزيد من التفاصيل على #672#676
ملحوظة
عملية التثبيت بطيئة جداً.
pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable
تحذير
لا تقم بالتثبيت! حاليًا سوف يقوم FlashAttention-2 بإبطاء سرعة التوليد وفقًا لهذه المشكلة. تثبيته فقط لغرض التطوير.
ملحوظة
راجع الأجهزة المدعومة في Hugging Face Doc.
pip install flash-attn --no-build-isolation
تأكد من أنك ضمن الدليل الجذر للمشروع عند تنفيذ هذه الأوامر أدناه.
python examples/web/webui.py
سيتم حفظ الصوت في
./output_audio_n.mp3
python examples/cmd/run.py " Your text 1. " " Your text 2. "
pip install ChatTTS
pip install git+https://github.com/2noise/ChatTTS
pip install -e .
import ChatTTS
import torch
import torchaudio
chat = ChatTTS . Chat ()
chat . load ( compile = False ) # Set to True for better performance
texts = [ "PUT YOUR 1st TEXT HERE" , "PUT YOUR 2nd TEXT HERE" ]
wavs = chat . infer ( texts )
for i in range ( len ( wavs )):
"""
In some versions of torchaudio, the first line works but in other versions, so does the second line.
"""
try :
torchaudio . save ( f"basic_output { i } .wav" , torch . from_numpy ( wavs [ i ]). unsqueeze ( 0 ), 24000 )
except :
torchaudio . save ( f"basic_output { i } .wav" , torch . from_numpy ( wavs [ i ]), 24000 )
###################################
# Sample a speaker from Gaussian.
rand_spk = chat . sample_random_speaker ()
print ( rand_spk ) # save it for later timbre recovery
params_infer_code = ChatTTS . Chat . InferCodeParams (
spk_emb = rand_spk , # add sampled speaker
temperature = .3 , # using custom temperature
top_P = 0.7 , # top P decode
top_K = 20 , # top K decode
)
###################################
# For sentence level manual control.
# use oral_(0-9), laugh_(0-2), break_(0-7)
# to generate special token in text to synthesize.
params_refine_text = ChatTTS . Chat . RefineTextParams (
prompt = '[oral_2][laugh_0][break_6]' ,
)
wavs = chat . infer (
texts ,
params_refine_text = params_refine_text ,
params_infer_code = params_infer_code ,
)
###################################
# For word level manual control.
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wavs = chat . infer ( text , skip_refine_text = True , params_refine_text = params_refine_text , params_infer_code = params_infer_code )
"""
In some versions of torchaudio, the first line works but in other versions, so does the second line.
"""
try :
torchaudio . save ( "word_level_output.wav" , torch . from_numpy ( wavs [ 0 ]). unsqueeze ( 0 ), 24000 )
except :
torchaudio . save ( "word_level_output.wav" , torch . from_numpy ( wavs [ 0 ]), 24000 )
inputs_en = """
chat T T S is a text to speech model designed for dialogue applications.
[uv_break]it supports mixed language input [uv_break]and offers multi speaker
capabilities with precise control over prosodic elements like
[uv_break]laughter[uv_break][laugh], [uv_break]pauses, [uv_break]and intonation.
[uv_break]it delivers natural and expressive speech,[uv_break]so please
[uv_break] use the project responsibly at your own risk.[uv_break]
""" . replace ( ' n ' , '' ) # English is still experimental.
params_refine_text = ChatTTS . Chat . RefineTextParams (
prompt = '[oral_2][laugh_0][break_4]' ,
)
audio_array_en = chat . infer ( inputs_en , params_refine_text = params_refine_text )
torchaudio . save ( "self_introduction_output.wav" , torch . from_numpy ( audio_array_en [ 0 ]), 24000 )
المتحدث ذكر | المتحدث أنثى |
intro_en_m.webm | intro_en_f.webm |
للحصول على مقطع صوتي مدته 30 ثانية، يلزم توفر ذاكرة GPU سعة 4 جيجابايت على الأقل. بالنسبة لوحدة معالجة الرسومات 4090، يمكنها إنشاء صوت يتوافق مع ما يقرب من 7 رموز دلالية في الثانية. يبلغ عامل الوقت الحقيقي (RTF) حوالي 0.3.
هذه مشكلة تحدث عادةً مع نماذج الانحدار الذاتي (لللحاء والوادي). من الصعب عمومًا تجنبه. يمكن للمرء تجربة عينات متعددة للعثور على نتيجة مناسبة.
في النموذج الذي تم إصداره حاليًا، وحدات التحكم الوحيدة على مستوى الرمز المميز هي [laugh]
و [uv_break]
و [lbreak]
. في الإصدارات المستقبلية، قد نفتح نماذج مفتوحة المصدر تتمتع بقدرات إضافية للتحكم في المشاعر.