مكتبة تحويل الكلام إلى نص سهلة الاستخدام وذات زمن وصول منخفض لتطبيقات الوقت الفعلي
يستمع RealtimeSTT إلى الميكروفون ويحول الصوت إلى نص.
تلميح: راجع Linguflex ، المشروع الأصلي الذي انبثقت منه خدمة RealtimeSTT. فهو يتيح لك التحكم في بيئتك من خلال التحدث، وهو أحد أكثر البرامج المساعدة مفتوحة المصدر قدرة وتطورًا المتاحة حاليًا.
إنه مثالي لـ:
أحدث إصدار: v0.3.7
انظر تاريخ الإصدار.
تلميح: نظرًا لأننا نستخدم وحدة
multiprocessing
الآن، فتأكد من تضمين الحمايةif __name__ == '__main__':
في التعليمات البرمجية الخاصة بك لمنع السلوك غير المتوقع، خاصة على الأنظمة الأساسية مثل Windows. للحصول على شرح مفصل حول سبب أهمية ذلك، تفضل بزيارة وثائق Python الرسمية حولmultiprocessing
.
from RealtimeSTT import AudioToTextRecorder
import pyautogui
def process_text ( text ):
print ( text )
if __name__ == '__main__' :
print ( "Wait until it says 'speak now'" )
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
from RealtimeSTT import AudioToTextRecorder
import pyautogui
def process_text ( text ):
pyautogui . typewrite ( text + " " )
if __name__ == '__main__' :
print ( "Wait until it says 'speak now'" )
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
سيتم كتابة كل ما يقال في مربع النص الذي حددته
تلميح : تحقق من RealtimeTTS، نظير الإخراج لهذه المكتبة، للحصول على إمكانيات تحويل النص إلى صوت. معًا، يشكلون غلافًا صوتيًا قويًا في الوقت الفعلي حول نماذج اللغات الكبيرة.
تستخدم هذه المكتبة:
تمثل هذه المكونات "معيار الصناعة" للتطبيقات المتطورة، مما يوفر الأساس الأكثر حداثة وفعالية لبناء الحلول المتطورة.
pip install RealtimeSTT
سيؤدي هذا إلى تثبيت جميع التبعيات الضرورية، بما في ذلك إصدار PyTorch الذي يدعم وحدة المعالجة المركزية فقط .
على الرغم من أنه من الممكن تشغيل RealtimeSTT مع تثبيت وحدة المعالجة المركزية (CPU) فقط (استخدم نموذجًا صغيرًا مثل "صغير" أو "قاعدي" في هذه الحالة) إلا أنك ستحصل على تجربة أفضل باستخدام:
لترقية تثبيت PyTorch الخاص بك لتمكين دعم GPU مع CUDA، اتبع هذه التعليمات بناءً على إصدار CUDA المحدد لديك. يعد هذا مفيدًا إذا كنت ترغب في تحسين أداء RealtimeSTT باستخدام إمكانيات CUDA.
لتحديث PyTorch وTorchaudio لدعم CUDA 11.8، استخدم الأوامر التالية:
pip install torch==2.3.1+cu118 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu118
لتحديث PyTorch وTorchaudio لدعم CUDA 12.X، قم بتنفيذ ما يلي:
pip install torch==2.3.1+cu121 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
استبدل 2.3.1
بإصدار PyTorch الذي يتوافق مع نظامك ومتطلباتك.
ملاحظة : للتحقق مما إذا كان NVIDIA GPU الخاص بك يدعم CUDA، قم بزيارة قائمة وحدات معالجة الرسومات CUDA الرسمية.
إذا لم تستخدم نماذج CUDA من قبل، فقد تكون هناك حاجة إلى بعض الخطوات الإضافية مرة واحدة قبل التثبيت. تعمل هذه الخطوات على إعداد النظام لدعم CUDA وتثبيت التثبيت المحسّن لوحدة معالجة الرسومات . يوصى بهذا لأولئك الذين يحتاجون إلى أداء أفضل ولديهم وحدة معالجة رسومات NVIDIA متوافقة. لاستخدام RealtimeSTT مع دعم GPU عبر CUDA، يرجى أيضًا اتباع الخطوات التالية:
تثبيت مجموعة أدوات NVIDIA CUDA :
تثبيت NVIDIA cuDNN :
تثبيت ffmpeg :
ملاحظة : قد لا تكون هناك حاجة فعليًا إلى تثبيت ffmpeg لتشغيل RealtimeSTT * بفضل jgilbert2017 لتوضيح ذلك
يمكنك تنزيل برنامج التثبيت لنظام التشغيل لديك من موقع ffmpeg.
أو استخدم مدير الحزم:
على أوبونتو أو دبيان :
sudo apt update && sudo apt install ffmpeg
على آرتش لينكس :
sudo pacman -S ffmpeg
على نظام MacOS باستخدام Homebrew (https://brew.sh/):
brew install ffmpeg
على نظام التشغيل Windows باستخدام وثائق Winget الرسمية:
winget install Gyan.FFmpeg
على نظام التشغيل Windows باستخدام Chocolatey (https://chocolatey.org/):
choco install ffmpeg
على نظام التشغيل Windows باستخدام Scoop (https://scoop.sh/):
scoop install ffmpeg
الاستخدام الأساسي:
يتم تشغيل بدء وإيقاف التسجيل يدويًا.
recorder . start ()
recorder . stop ()
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ()
recorder . start ()
input ( "Press Enter to stop recording..." )
recorder . stop ()
print ( "Transcription: " , recorder . text ())
التسجيل بناءً على اكتشاف النشاط الصوتي.
with AudioToTextRecorder () as recorder :
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
with AudioToTextRecorder () as recorder :
print ( "Transcription: " , recorder . text ())
عند تشغيل Recorder.text في حلقة، يوصى باستخدام رد اتصال، مما يسمح بتشغيل النسخ بشكل غير متزامن:
def process_text ( text ):
print ( text )
while True :
recorder . text ( process_text )
from RealtimeSTT import AudioToTextRecorder
def process_text ( text ):
print ( text )
if __name__ == '__main__' :
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
تفعيل الكلمة الأساسية قبل اكتشاف الصوت. اكتب القائمة المفصولة بفواصل لكلمات التنشيط المطلوبة في المعلمة Wake_words. يمكنك اختيار كلمات التنبيه من هذه القائمة: Alexa، Americano، Blueberry، Bumblebee، Computer، Grapefruits، Grashopper، Hey Google، Hey Siri، Jarvis، Ok Google، Picovoice، Porcupine، Terminator.
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" then speak.' )
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" to start recording.' )
print ( recorder . text ())
يمكنك ضبط وظائف رد الاتصال ليتم تنفيذها في أحداث مختلفة (راجع التكوين):
def my_start_callback ():
print ( "Recording started!" )
def my_stop_callback ():
print ( "Recording stopped!" )
recorder = AudioToTextRecorder ( on_recording_start = my_start_callback ,
on_recording_stop = my_stop_callback )
from RealtimeSTT import AudioToTextRecorder
def start_callback ():
print ( "Recording started!" )
def stop_callback ():
print ( "Recording stopped!" )
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( on_recording_start = start_callback ,
on_recording_stop = stop_callback )
إذا كنت لا ترغب في استخدام الميكروفون المحلي، فاضبط معلمة use_microphone على false وقم بتوفير قطع صوت PCM خام أحادية 16 بت (عينة 16000) بهذه الطريقة:
recorder . feed_audio ( audio_chunk )
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( use_microphone = False )
with open ( "audio_chunk.pcm" , "rb" ) as f :
audio_chunk = f . read ()
recorder . feed_audio ( audio_chunk )
print ( "Transcription: " , recorder . text ())
يمكنك إيقاف تشغيل المسجل بأمان باستخدام بروتوكول مدير السياق:
with AudioToTextRecorder () as recorder :
[...]
أو يمكنك استدعاء طريقة إيقاف التشغيل يدويًا (إذا كان استخدام "with" غير ممكن):
recorder . shutdown ()
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
with AudioToTextRecorder () as recorder :
[...]
# or manually shutdown if "with" is not used
recorder . shutdown ()
يحتوي الدليل الفرعي للاختبار على مجموعة من البرامج النصية لمساعدتك في تقييم وفهم إمكانيات مكتبة RealtimeTTS.
قد تتطلب منك البرامج النصية للاختبار بناءً على مكتبة RealtimeTTS إدخال منطقة خدمة azure الخاصة بك داخل البرنامج النصي. عند استخدام البرامج النصية التجريبية ذات الصلة بـ OpenAI أو Azure أو Elevenlabs، يجب توفير مفاتيح واجهة برمجة التطبيقات في متغيرات البيئة OPENAI_API_KEY وAZURE_SPEECH_KEY وELEVENLABS_API_KEY (راجع RealtimeTTS)
simple_test.py
realtimestt_test.py
Wakeword_test.py
translator.py
pip install openai realtimetts
.openai_voice_interface.py
pip install openai realtimetts
.Advanced_talk.py
pip install openai keyboard realtimetts
.miniistic_talkbot.py
pip install openai realtimetts
.يحتوي الدليل الفرعي example_app على تطبيق واجهة مستخدم مصقول لواجهة برمجة تطبيقات OpenAI استنادًا إلى PyQt5.
AudioToTextRecorder
عند تهيئة فئة AudioToTextRecorder
، يكون لديك خيارات متنوعة لتخصيص سلوكها.
model (str, default="tiny"): حجم النموذج أو مسار النسخ.
اللغة (str, default=""): رمز اللغة للنسخ. إذا تم تركه فارغًا، فسيحاول النموذج اكتشاف اللغة تلقائيًا. يتم إدراج رموز اللغات المدعومة في مكتبة Whisper Tokenizer.
compute_type (str, default="default"): يحدد نوع الحساب الذي سيتم استخدامه للنسخ. انظر تكميم الهمس
input_device_index (int، default=0): فهرس جهاز إدخال الصوت المراد استخدامه.
gpu_device_index (int, default=0): مؤشر جهاز GPU المراد استخدامه. يمكن أيضًا تحميل النموذج على وحدات معالجة رسومات متعددة عن طريق تمرير قائمة المعرفات (على سبيل المثال [0، 1، 2، 3]).
الجهاز (str, default="cuda"): جهاز يستخدمه النموذج. يمكن أن يكون "كودا" أو "وحدة المعالجة المركزية".
on_recording_start : يتم تشغيل وظيفة قابلة للاستدعاء عند بدء التسجيل.
on_recording_stop : يتم تشغيل وظيفة قابلة للاستدعاء عند انتهاء التسجيل.
on_transcription_start : يتم تشغيل وظيفة قابلة للاستدعاء عند بدء النسخ.
sure_sentence_starting_uppercase (bool, default=True): يضمن أن كل جملة تكتشفها الخوارزمية تبدأ بحرف كبير.
sure_sentence_ends_with_period (bool, default=True): يضمن أن كل جملة لا تنتهي بعلامات الترقيم مثل "؟"، "!" ينتهي بفترة
use_microphone (bool, default=True): استخدام الميكروفون المحلي للنسخ. اضبط على False إذا كنت تريد توفير المقاطع باستخدام طريقة Feed_audio.
الدوار (منطقي، افتراضي = صحيح): يوفر نصًا متحركًا للدوار يحتوي على معلومات حول حالة المسجل الحالية.
المستوى (int، default=logging.WARNING): مستوى التسجيل.
Handle_buffer_overflow (bool, default=True): في حالة التعيين، سيقوم النظام بتسجيل تحذير عند حدوث تجاوز في الإدخال أثناء التسجيل وإزالة البيانات من المخزن المؤقت.
Beam_size (int, default=5): حجم الحزمة المطلوب استخدامه لفك تشفير بحث الحزمة.
original_prompt (str أو iterable of int, default=None): الموجه الأولي الذي سيتم تغذيته لنماذج النسخ.
قمع_الرموز (قائمة int، الافتراضي = [-1]): الرموز المميزة التي سيتم منعها من إخراج النسخ.
on_recorded_chunk : وظيفة رد الاتصال التي يتم تشغيلها عند تسجيل جزء من الصوت. يرسل بيانات القطعة كمعلمة.
debug_mode (bool, default=False): في حالة التعيين، يقوم النظام بطباعة معلومات تصحيح إضافية إلى وحدة التحكم.
print_transcription_time (bool, default=False): يسجل وقت معالجة نسخ النموذج الرئيسي. يمكن أن يكون هذا مفيدًا لمراقبة الأداء وتصحيح الأخطاء.
Early_transcription_on_silence (int, default=0): في حالة التعيين، سيقوم النظام بنسخ الصوت بشكل أسرع عند اكتشاف الصمت. سيبدأ النسخ بعد المللي ثانية المحددة. أبقِ هذه القيمة أقل من post_speech_silence_duration
، ويفضل أن تكون حول post_speech_silence_duration
مطروحًا منها وقت النسخ المقدر مع النموذج الرئيسي. إذا استمر الصمت لفترة أطول من post_speech_silence_duration
، فسيتم إيقاف التسجيل وإرسال النسخ. إذا تم استئناف النشاط الصوتي خلال هذه الفترة، فسيتم تجاهل النسخ. يؤدي هذا إلى عمليات نسخ نهائية أسرع على حساب تحميل وحدة معالجة الرسومات الإضافية بسبب بعض عمليات النسخ النهائية غير الضرورية.
المسموح به_الكمون_الحد (int، الافتراضي = 100): يحدد الحد الأقصى لعدد القطع غير المعالجة في قائمة الانتظار قبل التخلص من القطع. يساعد هذا في منع النظام من الإرهاق وفقدان الاستجابة في التطبيقات في الوقت الفعلي.
no_log_file (bool, default=False): في حالة التعيين، سيتخطى النظام كتابة ملف سجل التصحيح، مما يقلل من عمليات الإدخال/الإخراج للقرص. مفيد إذا لم تكن هناك حاجة لتسجيل الدخول إلى ملف وكان الأداء هو الأولوية.
ملاحظة : عند تمكين الوصف في الوقت الفعلي، يُنصح بشدة بتثبيت وحدة معالجة الرسومات. قد يؤدي استخدام النسخ في الوقت الفعلي إلى إنشاء أحمال عالية على وحدة معالجة الرسومات.
Enable_realtime_transcription (bool, default=False): تمكين النسخ الصوتي في الوقت الفعلي أو تعطيله. عند التعيين على True، سيتم نسخ الصوت بشكل مستمر أثناء تسجيله.
use_main_model_for_realtime (bool, default=False): إذا تم التعيين على True، فسيتم استخدام نموذج النسخ الرئيسي لكل من النسخ العادي وفي الوقت الفعلي. إذا كانت القيمة False، فسيتم استخدام نموذج منفصل محدد بواسطة realtime_model_type
للنسخ في الوقت الفعلي. يمكن أن يؤدي استخدام نموذج واحد إلى توفير الذاكرة وتحسين الأداء، ولكن قد لا يتم تحسينه للمعالجة في الوقت الفعلي. يسمح استخدام النماذج المنفصلة بنموذج أصغر وأسرع للنسخ في الوقت الفعلي مع الاحتفاظ بنموذج أكثر دقة للنسخ النهائي.
realtime_model_type (str, default="tiny"): يحدد حجم أو مسار نموذج التعلم الآلي الذي سيتم استخدامه للنسخ في الوقت الفعلي.
realtime_processing_pause (float, default=0.2): يحدد الفاصل الزمني بالثواني بعد نسخ جزء من الصوت. ستؤدي القيم المنخفضة إلى المزيد من تحديثات النسخ "في الوقت الفعلي" (المتكررة) ولكنها قد تزيد من الحمل الحسابي.
on_realtime_transcription_update : وظيفة رد اتصال يتم تشغيلها عندما يكون هناك تحديث في النسخ في الوقت الفعلي. يتم استدعاء الدالة باستخدام النص المكتوب حديثًا كوسيطة لها.
on_realtime_transcription_stabilized : وظيفة رد اتصال يتم تشغيلها عندما يكون هناك تحديث في النسخ في الوقت الفعلي وتقوم بإرجاع نص ثابت بجودة أعلى كوسيطة لها.
Beam_size_realtime (int, default=3): حجم الحزمة المطلوب استخدامه لفك تشفير البحث عن حزمة النسخ في الوقت الفعلي.
silero_sensitivity (float, default=0.6): تتراوح حساسية اكتشاف النشاط الصوتي لـ Silero من 0 (الأقل حساسية) إلى 1 (الأكثر حساسية). الافتراضي هو 0.6.
silero_use_onnx (bool, default=False): يتيح استخدام النموذج المُدرب مسبقًا من Silero بتنسيق ONNX (Open Neural Network Exchange) بدلاً من تنسيق PyTorch. الافتراضي هو خطأ. يوصى به لأداء أسرع.
silero_deactivity_detection (bool, default=False): تمكين نموذج Silero لاكتشاف نهاية الكلام. أكثر قوة ضد الضوضاء الخلفية. يستخدم موارد GPU الإضافية ولكنه يعمل على تحسين الدقة في البيئات الصاخبة. عندما يكون "خطأ"، يستخدم WebRTC VAD الافتراضي، وهو أكثر حساسية ولكنه قد يستمر في التسجيل لفترة أطول بسبب أصوات الخلفية.
webrtc_sensitivity (int, default=3): تتراوح حساسية محرك اكتشاف النشاط الصوتي WebRTC من 0 (الأقل عدوانية / الأكثر حساسية) إلى 3 (الأكثر عدوانية والأقل حساسية). الافتراضي هو 3.
post_speech_silence_duration (float, default=0.2): المدة بثواني الصمت التي يجب أن تتبع الكلام قبل اعتبار التسجيل مكتملاً. وهذا يضمن أن أي توقف مؤقت أثناء الكلام لا يؤدي إلى إنهاء التسجيل قبل الأوان.
min_gap_between_recordings (float, default=1.0): يحدد الحد الأدنى للفاصل الزمني بالثواني الذي يجب أن يكون موجودًا بين نهاية جلسة تسجيل واحدة وبداية جلسة أخرى لمنع التسجيلات المتتالية السريعة.
min_length_of_recording (float، default=1.0): يحدد الحد الأدنى للمدة بالثواني التي يجب أن تستمر بها جلسة التسجيل لضمان التقاط صوت ذي معنى، ومنع التسجيلات القصيرة أو المجزأة بشكل مفرط.
pre_recording_buffer_duration (float, default=0.2): الفترة الزمنية، بالثواني، التي يتم خلالها تخزين الصوت مؤقتًا قبل التسجيل الرسمي. ويساعد ذلك في موازنة زمن الوصول المتأصل في اكتشاف نشاط الكلام، مما يضمن عدم تفويت أي صوت أولي.
on_vad_detect_start : يتم تشغيل وظيفة قابلة للاستدعاء عندما يبدأ النظام في الاستماع للنشاط الصوتي.
on_vad_detect_stop : يتم تشغيل وظيفة قابلة للاستدعاء عندما يتوقف النظام للاستماع إلى النشاط الصوتي.
Wakeword_backend (str, default="pvporcupine"): يحدد مكتبة الواجهة الخلفية المراد استخدامها لاكتشاف كلمات التنبيه. تتضمن الخيارات المدعومة "pvporcupine" لاستخدام محرك كلمات التنبيه Porcupine أو "oww" لاستخدام محرك OpenWakeWord.
openwakeword_model_paths (str, default=None): مسارات مفصولة بفواصل لملفات النماذج لمكتبة openwakeword. تشير هذه المسارات إلى نماذج مخصصة يمكن استخدامها لاكتشاف كلمات التنبيه عند تحديد مكتبة openwakeword كـ Wakeword_backend.
openwakeword_inference_framework (str, default="onnx"): يحدد إطار الاستدلال الذي سيتم استخدامه مع مكتبة openwakeword. يمكن أن يكون إما "onnx" لتنسيق Open Neural Network Exchange أو "tflite" لـ TensorFlow Lite.
Wake_words (str, default=""): بدء التسجيل عند استخدام الواجهة الخلفية لكلمة Wakeword 'pvporcupine'. يمكن توفير كلمات التنبيه المتعددة كسلسلة مفصولة بفواصل. كلمات التنبيه المدعومة هي: Alexa وAmericano وBlueberry وBumblebee وComputer وGripfruits وGrashopper وHey Google وHey Siri وJarvis وok Google وPicovoice وPorcupine وTerminator. بالنسبة للواجهة الخلفية "openwakeword"، يتم استخراج كلمات التنبيه تلقائيًا من ملفات النماذج المتوفرة، لذا فإن تحديدها هنا ليس ضروريًا.
Wake_words_sensitivity (float, default=0.6): مستوى الحساسية لاكتشاف كلمات التنبيه (0 للأقل حساسية، 1 للأكثر حساسية).
Wake_word_activation_delay (عائم، افتراضي = 0): المدة بالثواني بعد بدء المراقبة قبل أن يتحول النظام إلى تنشيط كلمة التنبيه إذا لم يتم اكتشاف أي صوت في البداية. إذا تم التعيين على الصفر، فسيستخدم النظام تنشيط كلمة التنبيه على الفور.
Wake_word_timeout (float، default=5): المدة بالثواني بعد التعرف على كلمة التنبيه. إذا لم يتم اكتشاف أي نشاط صوتي لاحق خلال هذه النافذة، فسينتقل النظام مرة أخرى إلى حالة غير نشطة، في انتظار كلمة التنبيه التالية أو التنشيط الصوتي.
Wake_word_buffer_duration (عائم، افتراضي = 0.1): المدة بالثواني لتخزين البيانات الصوتية مؤقتًا أثناء اكتشاف كلمة التنبيه. ويساعد هذا في قطع كلمة التنبيه من المخزن المؤقت للتسجيل حتى لا يتم اكتشافها بشكل خاطئ مع النص المنطوق التالي، مما يضمن تشغيل مشغلات بدء النسخ بشكل أنظف وأكثر دقة. قم بزيادة هذا إذا تم اكتشاف أجزاء من كلمة التنبيه كنص.
on_wakeword_detected : يتم تشغيل وظيفة قابلة للاستدعاء عند اكتشاف كلمة تنبيه.
on_wakeword_timeout : يتم تشغيل وظيفة قابلة للاستدعاء عندما يعود النظام إلى حالة غير نشطة بعد عدم اكتشاف أي خطاب بعد تنشيط كلمة التنبيه.
on_wakeword_detection_start : يتم تشغيل وظيفة قابلة للاستدعاء عندما يبدأ النظام في الاستماع إلى كلمات التنبيه
on_wakeword_detection_end : وظيفة قابلة للاستدعاء يتم تشغيلها عند التوقف للاستماع إلى كلمات التنبيه (على سبيل المثال بسبب انتهاء المهلة أو اكتشاف كلمة التنبيه)
ابحث هنا للحصول على معلومات حول كيفية تدريب نماذج OpenWakeWord الخاصة بك. يمكنك استخدام دفتر ملاحظات Google Colab بسيط كبداية أو استخدام دفتر ملاحظات أكثر تفصيلاً يتيح المزيد من التخصيص (يمكن أن ينتج نماذج عالية الجودة، ولكنه يتطلب المزيد من الخبرة في التطوير).
قد تحتاج إلى استخدام tf2onnx لتحويل نماذج Tensorflow tflite إلى تنسيق onnx:
pip install -U tf2onnx
python -m tf2onnx.convert --tflite my_model_filename.tflite --output my_model_filename.onnx
معلمات البدء المقترحة لاستخدام OpenWakeWord:
with AudioToTextRecorder (
wakeword_backend = "oww" ,
wake_words_sensitivity = 0.35 ,
openwakeword_model_paths = "word1.onnx,word2.onnx" ,
wake_word_buffer_duration = 1 ,
) as recorder :
ج: تنشأ هذه المشكلة بسبب عدم التطابق بين إصداري ctranslate2
وcuDNN. تم تحديث مكتبة ctranslate2
إلى الإصدار 4.5.0، والذي يستخدم cuDNN 9.2. هناك طريقتان لحل هذه المشكلة:
ctranslate2
إلى الإصدار 4.4.0 : pip install ctranslate2==4.4.0
المساهمات هي دائما موضع ترحيب!
تحية لستيفن لين لتوفير دعم عامل الإرساء.
معهد ماساتشوستس للتكنولوجيا
كولجا بيجيل
البريد الإلكتروني: [email protected]
جيثب