
خادم استنتاج بسيط وسريع للمكمل لخادم Fish Clebe 1.5 وما يليه ، مكتوب في الصدأ النقي.
سمات:
torch.compile ملحوظة
نعم ، التجميع من المصدر ليس ممتعًا. صورة Docker الرسمية ، Homebrew ، Linux Packaging ، و Python interop Layer موجودة على خريطة الطريق.
إذا كنت تريد دعم النظام الأساسي الخاص بك ، فلا تتردد في إثارة مشكلة وسأجريها!
أولاً ، استنساخ هذا الريبو إلى المجلد الذي تريده:
git clone https://github.com/EndlessReform/fish-speech.rs.git
cd fish-speech.rs حفظ نقاط التفتيش خطاب السمك إلى ./checkpoints . أوصي باستخدام huggingface-cli :
# If it's not already on system
brew install huggingface-cli
# For Windows or Linux (assumes working Python):
# pip install -U "huggingface_hub[cli]"
# or just skip this and download the folder manually
mkdir -p checkpoints/fish-speech-1.5
# NOTE: the official weights are not compatible
huggingface-cli download jkeisling/fish-speech-1.5 --local-dir checkpoints/fish-speech-1.5إذا كنت تستخدم نسخة سمك أقدم:
jkeisling/fish-speech-1.4 : الأوزان الرسمية غير متوافقة.الآن تجميع من المصدر. لدعم GPU Silicon Apple:
cargo build --release --bin server --features metalل nvidia:
cargo build --release --bin server --features cudaللحصول على أداء إضافي على Nvidia ، يمكنك تمكين اهتمام الفلاش. إذا كنت تقوم بتجميع لأول مرة أو بعد تحديث كبير ، فقد يستغرق هذا بعض الوقت: ما يصل إلى 15 دقيقة و 16 جيجابايت من ذاكرة الوصول العشوائي على وحدة المعالجة المركزية لائقة. لقد تم تحذيرك!
mkdir ~ /.candle
CANDLE_FLASH_ATTN_BUILD_DIR= $HOME /.candle cargo build --release --features flash-attn --bin server سيؤدي ذلك إلى تجميع ثنائي إلى ./target/release/server .
فقط ابدأ الثنائي! إذا كنت تبدأ للمرة الأولى ، فتشرك:
# Default voice to get you started
./target/release/server --voice-dir voices-templateخيارات:
--port : الافتراضيات إلى 3000--checkpoint : دليل مجلد نقطة التفتيش. الإعدادات الافتراضية إلى checkpoints/fish-speech-1.5 .--voice-dir : دليل لمطالبات السماعة. (المزيد على هذا أدناه)--fish-version : 1.5 ، 1.4 ، أو 1.2 . الإعدادات الافتراضية إلى 1.5--temp : درجة حرارة النموذج العمود الفقري. الافتراضي: 0.7--top_p : أخذ العينات TOP-P لنموذج اللغة العمود الفقري. الافتراضي 0.8 ، لإيقاف تشغيله إلى 1.يدعم هذا الخادم صوت OGG (البث) و WAV Audio Outport.
يمكنك استخدام أي عميل متوافق مع OpenAI. إليك مثال على طلب Python:
from openai import OpenAI
client = OpenAI (
base_url = "http://localhost:3000/v1"
)
audio = client . audio . speech . create (
input = "Hello world!" ,
voice = "default" ,
response_format = "wav" ,
model = "tts-1" ,
)
temp_file = "temp.wav"
audio . stream_to_file ( temp_file ) لاستنساخ صوت ، ستحتاج إلى ملف WAV ونسخ. لنفترض أنك تريد إضافة مكبر صوت alice ، الذي يقول "Hello World" في ملف fake.wav .
تقديم طلب نشر إلى /v1/audio/encoding نقطة نهاية ، مع:
id ومطالبة كمعلمات استعلام prompt عن URLمثال مع Curl:
curl -X POST " http://localhost:3000/v1/audio/encoding?id=alice&prompt=Hello%20world "
-F " [email protected] "
--output alice.npy يمكنك التحقق من أنه تمت إضافة صوتك عن طريق ضرب نقطة نهاية التصحيح /v1/voices :
curl http://localhost:3000/v1/voices
# Returns ['default', 'alice'] سيؤدي هذا إلى إرجاع ملف .npy مع صوت الإدخال الخاص بك كرموز مشفرة. بعد ذلك ، سيكون صوت alice قابلاً للاستخدام طالما أن الخادم يعمل ، وسيتم حذفه عند الإغلاق.
إذا كنت ترغب في حفظ هذا الصوت ، فيمكنك استخدام ملف .npy الذي تم إرجاعه لإضافته إلى الأصوات عند بدء التشغيل: انظر أدناه.
ملحوظة
نعم ، هذا يمتص. استمرار الأصوات المشفرة على القرص هي أولوية قصوى.
افتح ملف voices-template/index.json . يجب أن يبدو شيئًا مثل:
{
"speakers" : {
"default" : " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
}
}يحتوي دليل الأصوات:
default.npy ) خذ ملف .npy الذي حصلت عليه من ترميز وقت التشغيل وإعادة تسميته إلى معرف السماعة الخاص بك: Ex. إذا كان المعرف هو "أليس" ، فأعد تسميته إلى alice.npy . ثم انقل alice.npy إلى مجلد أصواتك. في index.json ، أضف المفتاح:
{
"speakers" : {
"default" : " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
"alice" : " I–I hardly know, sir, just at present–at least I know who I WAS when I got up this morning, but I think I must have been changed several times since then. "
}
}أعد تشغيل الخادم ويجب أن يكون صوتك الجديد جيدًا.
في الوقت الحالي ، نحافظ على التوافق مع نصوص CLI لاستدلال خطاب الأسماك الرسمي. (خادم الاستدلال وروابط Python قريبًا!)
# saves to fake.npy by default
cargo run --release --features metal --bin encoder -- -i ./tests/resources/sky.wavللإصدارات السابقة ، ستحتاج إلى تحديد الإصدار ونقاط التفتيش يدويًا:
cargo run --release --bin encoder -- --input ./tests/resources/sky.wav --output-path fake.npy --fish-version 1.2 --checkpoint ./checkpoints/fish-speech-1.2-sftللأسماك 1.5 (افتراضي):
# Switch to --features cuda for Nvidia GPUs
cargo run --release --features metal --bin llama_generate --
--text " That is not dead which can eternal lie, and with strange aeons even death may die. "
--prompt-text " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
--prompt-tokens fake.npyبالنسبة للإصدارات السابقة ، سيتعين عليك تحديد الإصدار ونقطة التفتيش بشكل صريح. على سبيل المثال ، للأسماك 1.2:
cargo run --release --features metal --bin llama_generate -- --text " That is not dead which can eternal lie, and with strange aeons even death may die. " --fish-version 1.2 --checkpoint ./checkpoints/fish-speech-1.2-sftللحصول على سرعة إضافية ، تجميع مع دعم الاهتمام فلاش.
تحذير
قد يستغرق التبعية لاعتماد الشمعة-فلاش أكثر من 10 دقائق لتجميع حتى في وحدة المعالجة المركزية الجيدة ، ويمكن أن تتطلب أكثر من 16 جيجابايت من الذاكرة! لقد تم تحذيرك.
أيضًا ، في أكتوبر 2024 ، يكون عنق الزجاجة بالفعل في مكان آخر (في نسخ ذاكرة غير فعالة ورسالة kernel) ، لذلك على الأجهزة السريعة بالفعل (مثل RTX 4090) ، يكون له تأثير أقل حاليًا.
# Cache the Flash Attention build
# Leave your computer, have a cup of tea, go touch grass, etc.
mkdir ~ /.candle
CANDLE_FLASH_ATTN_BUILD_DIR= $HOME /.candle cargo build --release --features flash-attn --bin llama_generate
# Then run with flash-attn flag
cargo run --release --features flash-attn --bin llama_generate --
--text " That is not dead which can eternal lie, and with strange aeons even death may die. "
--prompt-text " When I heard the release demo, I was shocked, angered, and in disbelief that Mr. Altman would pursue a voice that sounded so eerily similar to mine that my closest friends and news outlets could not tell the difference. "
--prompt-tokens fake.npyللأسماك 1.5 (افتراضي):
# Switch to --features cuda for Nvidia GPUs
cargo run --release --features metal --bin vocoder -- -i out.npy -o fake.wavللنماذج السابقة ، يرجى تحديد الإصدار. 1.2 مثال:
cargo run --release --bin vocoder -- --fish-version 1.2 --checkpoint ./checkpoints/fish-speech-1.2-sftتحذير
تم ترخيص قاعدة البيانات هذه بموجب ترخيص Apache 2.0 الأصلي. لا تتردد في الاستخدام كما تريد. ومع ذلك ، فإن أوزان خطاب السمك هي CC-BY-NC-SA-4.0 وللاستخدام غير التجاري فقط!
يرجى دعم المؤلفين الأصليين باستخدام واجهة برمجة التطبيقات الرسمية للإنتاج.
تم ترخيص هذا النموذج بشكل مستحق بموجب ترخيص BY-CC-NC-SA-4.0. يتم إصدار الرمز المصدر بموجب ترخيص Apache 2.0.
شكراً هائلاً ، اذهب أيضًا إلى:
candle_examples Pantainers لمقتطفات رمز مفيدة للغاية عبر قاعدة الكودFish Cleabe V1.5 هو نموذج رائد من النص إلى كلام (TTS) مدرب على أكثر من مليون ساعة من بيانات الصوت بلغات متعددة.
اللغات المدعومة:
يرجى الرجوع إلى GitHub خطاب الأسماك لمزيد من المعلومات. العرض التوضيحي المتاح في Fish Audio.
إذا وجدت هذا المستودع مفيدًا ، فيرجى التفكير في ذكر هذا العمل:
@misc{fish-speech-v1.4,
title={Fish-Speech: Leveraging Large Language Models for Advanced Multilingual Text-to-Speech Synthesis},
author={Shijia Liao and Yuxuan Wang and Tianyu Li and Yifan Cheng and Ruoyi Zhang and Rongzhi Zhou and Yijin Xing},
year={2024},
eprint={2411.01156},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2411.01156},
}
تم ترخيص هذا النموذج بشكل مستحق بموجب ترخيص BY-CC-NC-SA-4.0.