هناك حاجة إلى خطوات إضافية لتركيب GPU المحسنة . يوصى بهذه الخطوات لأولئك الذين يحتاجون إلى أداء أفضل ولديهم وحدة معالجة الرسومات NVIDIA متوافقة.
ملاحظة : للتحقق مما إذا كان GPU NVIDIA الخاص بك يدعم CUDA ، تفضل بزيارة قائمة وحدات معالجة الرسومات CUDA الرسمية.
لاستخدام RealTimestt مع دعم GPU عبر CUDA ، يرجى اتباع هذه الخطوات:
تثبيت Nvidia Cuda Toolkit 11.8 :
تثبيت Nvidia Cudnn 8.7.0 لـ CUDA 11.x :
تثبيت FFMPEG :
يمكنك تنزيل مثبت لنظام التشغيل الخاص بك من موقع FFMPEG.
أو استخدم مدير الحزمة:
على Ubuntu أو Debian :
sudo apt update && sudo apt install ffmpegعلى قوس لينكس :
sudo pacman -S ffmpegعلى MacOS باستخدام Homebrew (https://brew.sh/):
brew install ffmpegعلى النوافذ باستخدام الشوكولاتة (https://chocolatey.org/):
choco install ffmpegعلى Windows باستخدام Scoop (https://scoop.sh/):
scoop install ffmpegتثبيت Pytorch بدعم CUDA :
pip uninstall torch
pip install torch==2.0.1+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
win 如果装不上 webrtcvad , 提示了 vs c ++ 相关的报错 , 请下载 https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ , 安装 c ++ 开发相关工具 然后重新安装依赖。 然后重新安装依赖。 然后重新安装依赖。 然后重新安装依赖。
启动后端python RealtimeSTT_server2.py
双击index.html , 浏览器运行 , 填入服务器 IP 地址 , 注意 , 关闭服务器的防火墙 , 或者针对性放行 9001/9002 这两个用于 WebSocket 连接的端口!
等待后端模型加载完毕后 , 就可以正常对话了。
2024-07-01
2024-06-03
2024-06-02
2024-05-28
مكتبة سهلة الاستخدام ومكتبة الكلام إلى النص لتطبيقات الوقت الفعلي
يستمع RealTimeStt إلى الميكروفون ونسخ الصوت إلى نص.
إنه مثالي لـ:
with )تلميح: نظرًا لأننا نستخدم وحدة
multiprocessingالآن ، تأكد من تضمينif __name__ == '__main__':الحماية في الكود الخاص بك لمنع سلوك غير متوقع ، وخاصة على منصات مثل Windows. للحصول على شرح مفصل حول سبب أهمية ذلك ، تفضل بزيارة وثائق Python الرسمية حولmultiprocessing.
تلميح : تحقق من realtimetts ، نظير الإخراج لهذه المكتبة ، للحصول على إمكانيات نص إلى صوفية. معًا ، تشكل غلافًا صوتيًا قويًا حول نماذج اللغة الكبيرة.
تستخدم هذه المكتبة:
تمثل هذه المكونات "معيار الصناعة" للتطبيقات المتطورة ، مما يوفر الأساس الأكثر حداثة وفعالية لبناء حلول متطورة.
pip install RealtimeSTTسيؤدي ذلك إلى تثبيت جميع التبعيات اللازمة ، بما في ذلك إصدار دعم وحدة المعالجة المركزية فقط من Pytorch.
على الرغم من أنه من الممكن تشغيل RealTimeStt مع تثبيت وحدة المعالجة المركزية فقط (استخدم نموذجًا صغيرًا مثل "Tiny" أو "Base" في هذه الحالة) ، ستحصل على تجربة أفضل باستخدام:
هناك حاجة إلى خطوات إضافية لتركيب GPU المحسنة . يوصى بهذه الخطوات لأولئك الذين يحتاجون إلى أداء أفضل ولديهم وحدة معالجة الرسومات NVIDIA متوافقة.
ملاحظة : للتحقق مما إذا كان GPU NVIDIA الخاص بك يدعم CUDA ، تفضل بزيارة قائمة وحدات معالجة الرسومات CUDA الرسمية.
لاستخدام RealTimestt مع دعم GPU عبر CUDA ، يرجى اتباع هذه الخطوات:
تثبيت Nvidia Cuda Toolkit 11.8 :
تثبيت Nvidia Cudnn 8.7.0 لـ CUDA 11.x :
تثبيت FFMPEG :
يمكنك تنزيل مثبت لنظام التشغيل الخاص بك من موقع FFMPEG.
أو استخدم مدير الحزمة:
على Ubuntu أو Debian :
sudo apt update && sudo apt install ffmpegعلى قوس لينكس :
sudo pacman -S ffmpegعلى MacOS باستخدام Homebrew (https://brew.sh/):
brew install ffmpegعلى النوافذ باستخدام الشوكولاتة (https://chocolatey.org/):
choco install ffmpegعلى Windows باستخدام Scoop (https://scoop.sh/):
scoop install ffmpegتثبيت Pytorch بدعم CUDA :
pip uninstall torch
pip install torch==2.0.1+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118الاستخدام الأساسي:
يتم تشغيل وتوقف التسجيل يدويًا.
recorder . start ()
recorder . stop ()
print ( recorder . text ())تسجيل بناء على الكشف عن النشاط الصوتي.
with AudioToTextRecorder () as recorder :
print ( recorder . text ())عند تشغيل recorder.text في حلقة ، يوصى باستخدام رد الاتصال ، مما يسمح بتشغيل النسخ بشكل غير متزامن:
def process_text ( text ):
print ( text )
while True :
recorder . text ( process_text )تنشيط الكلمات الرئيسية قبل اكتشاف الصوت. اكتب القائمة المفصلة للفاصلة للكلمات الرئيسية للتنشيط المطلوبة في معلمة Wake_words. يمكنك اختيار كلمات الاستيقاظ من هذه القائمة: Alexa و Americano و Blueberry و Bumblebee و Computer و Grapefruits و Grasshopper و Hey Google و Hey Siri و Jarvis و OK Google و Picovoice و Porcupine و Terminator.
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" then speak.' )
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 )إذا كنت لا ترغب في استخدام معلمة microphone المحلية use_microphone إلى false وتوفير صوتية PCM الخام في مونو 16 بت (أخذ عينات 16000) مع هذه الطريقة:
recorder . feed_audio ( audio_chunk )يمكنك إغلاق المسجل بأمان باستخدام بروتوكول مدير السياق:
with AudioToTextRecorder () as recorder :
[...]أو يمكنك استدعاء طريقة إيقاف التشغيل يدويًا (إذا كان استخدام "مع" غير ممكن):
recorder . shutdown ()يحتوي الدليل الفرعي على الاختبار على مجموعة من البرامج النصية لمساعدتك في تقييم وفهم قدرات مكتبة REATTIMETTS.
قد تتطلب منك اختبار البرامج النصية اعتمادًا على مكتبة REALTIMETTS إدخال منطقة خدمة Azure الخاصة بك داخل البرنامج النصي. عند استخدام البرامج النصية التجريبية المتعلقة بـ Openai- أو Azure- أو ElevenLabs ، يجب توفير مفاتيح API في متغيرات البيئة Openai_API_Key و Azure_Speech_Key و Elevenlabs_api_key (انظر realtimetts)
Simple_test.py
RealTimestt_Test.py
wakeword_test.py
مترجم
pip install openai realtimetts .openai_voice_interface.py
pip install openai realtimetts .Advanced_talk.py
pip install openai keyboard realtimetts .الحد الأدنى _talkbot.py
pip install openai realtimetts .يحتوي دليل example_app الفرعي على تطبيق واجهة مستخدم مصقولة لـ OpenAI API استنادًا إلى PYQT5.
AudioToTextRecorder عند تهيئة فئة AudioToTextRecorder ، لديك خيارات مختلفة لتخصيص سلوكها.
النموذج (Str ، Default = "Tiny"): حجم النموذج أو مسار النسخ.
اللغة (STR ، Default = ""): رمز اللغة للنسخ. إذا تركت فارغة ، فسيحاول النموذج اكتشاف اللغة تلقائيًا. يتم سرد رموز اللغة المدعومة في مكتبة Whisper Tokenizer.
compute_type (str ، default = "default"): يحدد نوع الحساب المراد استخدامه للنسخ. انظر تقدير الهمس
input_device_index (int ، افتراضي = 0): فهرس جهاز إدخال الصوت للاستخدام.
GPU_DEVICE_INDEX (int ، افتراضي = 0): فهرس جهاز GPU للاستخدام. يمكن أيضًا تحميل النموذج على وحدات معالجة الرسومات المتعددة عن طريق تمرير قائمة المعرفات (على سبيل المثال [0 ، 1 ، 2 ، 3]).
ON_RECORDING_START : يتم تشغيل وظيفة قابلة للاتصال عند بدء التسجيل.
ON_RECORDING_STOP : يتم تشغيل دالة قابلة للاتصال عند انتهاء التسجيل.
On_transcription_start : يتم تشغيل دالة قابلة للاتصال عند بدء النسخ.
تأكد _sentence_starting_uppercase (bool ، الافتراضي = صحيح): يضمن أن كل جملة تم اكتشافها بواسطة الخوارزمية تبدأ بحرف كبير.
تأكد _sentence_ends_with_period (bool ، افتراضي = صحيح): يضمن أن كل جملة لا تنتهي بعلامات الترقيم مثل "؟" ، "!" ينتهي بفترة
use_microphone (Bool ، افتراضي = صحيح): استخدام الميكروفون المحلي للنسخ. قم بالتعيين على FALSE إذا كنت ترغب في توفير قطع مع طريقة FEED_AUDIO.
Spinner (Bool ، Default = True): يوفر نصًا للرسوم المتحركة الدوار مع معلومات حول حالة المسجل الحالية.
المستوى (int ، الافتراضي = logging.warning): مستوى التسجيل.
ملاحظة : عند تمكين وصف الوقت الحقيقي ، يُنصح بشدة تثبيت GPU. قد يؤدي استخدام النسخ في الوقت الفعلي إلى إنشاء أحمال عالية من GPU.
enable_realtime_transcription (Bool ، افتراضي = خطأ): تمكين أو تعطيل النسخ في الوقت الفعلي للصوت. عند التعيين على True ، سيتم نسخ الصوت بشكل مستمر حيث يتم تسجيله.
RealTime_model_type (str ، default = "tiny"): يحدد حجم أو مسار نموذج التعلم الآلي المراد استخدامه للنسخ في الوقت الفعلي.
RealTime_processing_pause (تعويم ، افتراضي = 0.2): يحدد الفاصل الزمني في ثوان بعد أن يتم نسخ جزء من الصوت. ستؤدي القيم المنخفضة إلى المزيد من تحديثات النسخ "في الوقت الفعلي" (المتكرر) ولكنها قد تزيد من الحمل الحسابي.
On_realtime_transcription_update : وظيفة رد الاتصال يتم تشغيلها كلما كان هناك تحديث في النسخ في الوقت الفعلي. يتم استدعاء الوظيفة مع النص الذي تم نسخه حديثًا كوسيطة له.
On_realtime_transcription_stabilized : وظيفة رد اتصال يتم تشغيله كلما كان هناك تحديث في النسخ في الوقت الفعلي وإرجاع نص مستقر عالي الجودة كوسيطة.
Silero_Sensitivity (تعويم ، افتراضي = 0.6): حساسية للكشف عن النشاط الصوتي لـ Silero تتراوح من 0 (الأقل حساسية) إلى 1 (الأكثر حساسية). الافتراضي هو 0.6.
Silero_Sensitivity (تعويم ، افتراضي = 0.6): حساسية للكشف عن النشاط الصوتي لـ Silero تتراوح من 0 (الأقل حساسية) إلى 1 (الأكثر حساسية). الافتراضي هو 0.6.
SILERO_USE_ONNX (BOOL ، افتراضي = خطأ): يتيح استخدام النموذج الذي تم تدريبه مسبقًا من SILERO بتنسيق ONNX (صرف الشبكة العصبية المفتوحة) بدلاً من تنسيق Pytorch. الافتراضي كاذب. الموصى به لأداء أسرع.
post_speech_silence_duration (تعويم ، افتراضي = 0.2): المدة في ثوان من الصمت التي يجب أن تتبع الكلام قبل أن يتم الانتهاء من التسجيل. هذا يضمن أن أي توقف موجز أثناء الكلام لا ينهي التسجيل قبل الأوان.
min_gap_between_recordings (تعويم ، افتراضي = 1.0): يحدد الحد الأدنى من الفاصل الزمني في الثواني التي يجب أن تكون موجودة بين نهاية جلسة تسجيل واحدة وبداية أخرى لمنع تسجيلات سريعة متتالية.
MIN_LENGTH_OF_RECORDING (تعويم ، افتراضي = 1.0): يحدد الحد الأدنى للمدة في الثواني التي يجب أن تستمر جلسة التسجيل لضمان التقاط الصوت ذي معنى ، ومنع تسجيلات قصيرة أو مجزأة بشكل مفرط.
pre_recording_buffer_duration (تعويم ، افتراضي = 0.2): الفترة الزمنية ، في ثوانٍ ، يتم خلالها تخزين الصوت قبل التسجيل الرسمي. هذا يساعد على موازنة الكمون المتأصل في اكتشاف نشاط الكلام ، مما يضمن عدم تفويت أي صوت أولي.
ON_VAD_DETECT_START : يتم تشغيل وظيفة قابلة للاتصال عندما يبدأ النظام في الاستماع إلى النشاط الصوتي.
ON_VAD_DETECT_STOP : يتم تشغيل وظيفة قابلة للاتصال عندما يتوقف النظام عن الاستماع إلى النشاط الصوتي.
Wake_words (str ، default = ""): كلمات الاستيقاظ لبدء التسجيل. يمكن توفير كلمات أعقاب متعددة كسلسلة مفصلة للفاصلة. كلمات الاستيقاظ المدعومة هي: Alexa و Americano و Blueberry و Bumblebee و Computer و Grapefruits و Grasshopper و Hey Google و Hey Siri و Jarvis و OK Google و Picovoice و Porcupine و Terminator
Wake_words_sensitivity (تعويم ، افتراضي = 0.6): مستوى الحساسية للكشف عن كلمة الاستيقاظ (0 لأقل حساسية ، 1 لأكثر حساسية).
wake_word_activation_delay (تعويم ، افتراضي = 0): المدة في ثوانٍ بعد بدء المراقبة قبل أن يتحول النظام إلى تنشيط كلمة الاستيقاظ إذا لم يتم اكتشاف صوت في البداية. إذا تم ضبطه على الصفر ، يستخدم النظام تنشيط Wake Word فورًا.
wake_word_timeout (تعويم ، افتراضي = 5): المدة بالثواني بعد التعرف على كلمة أعقاب. إذا لم يتم اكتشاف أي نشاط صوتي لاحق داخل هذه النافذة ، فإن النظام ينتقل إلى حالة غير نشطة ، في انتظار كلمة الاستيقاظ التالية أو تنشيط الصوت.
ON_WAKEWORD_DETEDED : وظيفة قابلة للاتصال يتم تشغيلها عند اكتشاف كلمة أعقاب.
ON_WAKEWORD_TIMEOUT : يتم تشغيل وظيفة قابلة للاستدعاء عندما يعود النظام إلى حالة غير نشطة بعد عدم اكتشاف أي خطاب بعد تنشيط كلمة الاستيقاظ.
ON_WAKEWORD_DETECENT_START : يتم تشغيل وظيفة قابلة للاتصال عندما يبدأ النظام في الاستماع إلى كلمات الاستيقاظ
ON_WAKEWORD_DETECENT_END : يتم تشغيل وظيفة قابلة للاتصال عند التوقف للاستماع إلى كلمات الاستيقاظ (على سبيل المثال بسبب المهلة أو كلمة الاستيقاظ التي تم اكتشافها)
المساهمات دائما موضع ترحيب!
معهد ماساتشوستس للتكنولوجيا
كولجا بيجل
البريد الإلكتروني: [email protected]
جيثب