يتيح لك blah s peech- to- تحويلة الحصول على نص إدخال bla (h) من الكلام على linux ، مع اختصارات لوحة المفاتيح و whisper.cpp. قم بإطلاق النار على الميكروفون وأداء التعرف على الكلام عالي الجودة في وضع عدم الاتصال. تمتد مع LLMs المحلية ، يصبح أداة قوية للتحدث مع كمبيوتر Linux الخاص بك.
من المحتمل أن تكون Blahst هي أداة إدخال الكلام إلى النص الأكثر قائمة على Whisper لـ Linux ، والتي تجلس فوق Whisper.cpp.
wsimlباستخدام أدوات سطر الأوامر المحسّنة ذات الموارد المنخفضة ، يحدث إدخال النص المنطوق بسرعة كبيرة. فيما يلي مقطع فيديو عرضي (من فضلك ، قم بإلغاء كتم الصوت) مع بعض ميزات LLM المحلية (AI Assistant ، Translator ، Scheduller ، CLI Guide في مرحلة الاختبار):
في الفيديو أعلاه ، يبدأ الصوت بتأسيس النظام على شاشة (امتداد Gnome الخاص بي "Voluble" يتحدث عن جميع إشعارات سطح المكتب Gnome) ، تليها دورات متعددة من إدخال الكلام/التعرف. يُظهر في النهاية أحد "وظائف الذكاء الاصطناعى" التي تستخدم النص الذي تم نسخه بواسطة blahst (whisper.cpp) ، ويقوم بتنسيقه في مطالبة LLM ويرسلها إلى LLM محلي متعدد اللغات (llama.cpp أو llamafile) التي تُرجع الترجمة الصينية كنص وتتحدث أيضًا باستخدام TTS neural tts. إن تنسيق هذا من سطر الأوامر مع executables Lean يترك النظام بشكل مدهش (من الفيديو يمكنك أن ترى أن الكمبيوتر بالكاد يكسر أي عرق - تبقى درجات الحرارة منخفضة.)
يوضح الفيديو أعلاه (Unmute Please) استخدام Blooper ، تم تعديله من WSI لنسخه في حلقة ، حتى يقوم المستخدم بإنهاء إدخال الكلام مع توقف أطول (~ 3sec كإعداد مسبق). مع استخدام XDOTool (أو YDOTOOL لمستخدمي Wayland) ، يتم لصق النص تلقائيًا على أي توقف مؤقت (أو على interption Hotkey). بالنسبة للفيديو أعلاه ، يتم إنشاء الكلام بصوت اصطناعي وجمعه بواسطة الميكروفون. هذا يسمح لي بتحرير النص بشكل متزامن (متعددة المهام ، لا تحاول ذلك في المنزل :). في النهاية ، يجب أن تختفي أيقونة الميكروفون العلوي من الشعاع ، مما يشير إلى خروج البرنامج. لا يحدث ذلك في الفيديو لأن أداة Screencast لديها مطالبة على الرمز أيضًا.
الفكرة مع Blahst هي أن تكون البرنامج الخالي من واجهة المستخدم يعادل غارة المغول ؛ انفجار قصير وقوي من عمل وحدة المعالجة المركزية/GPU ثم يتم اختفائه تمامًا ، مع آثار نصية فقط في الحافظة والسلام النسبي لسطح المكتب. ما عليك سوى استخدام زوج من المفاتيح الساخنة للبدء والتوقف عن التسجيل من الميكروفون وإرسال الكلام المسجل إلى Whisper.cpp [الخادم] الذي يتفصل النص إلى الحافظة (ما لم تمره بواسطة LLM محلي قبل ذلك). نهج عالمي يجب أن يعمل في معظم بيئات سطح المكتب Linux والتوزيعات.
يتم العمل من قبل أحد البرامج النصية:
يتم تنفيذ التعرف على الكلام بواسطة Whisper.cpp الذي يجب تجميعه على نظام Linux الخاص بك أو متاح كمثيل خادم على LAN أو LocalHost. Alternativelly ، يمكنك اختيار ببساطة تنزيل واستخدام قابلة للتنفيذ بالفعل (مع نموذج همس مضمن) Whisperfile ، والآن جزء من مستودع LlamaFile.
عندما يتم بدء إدخال الكلام باستخدام مفتاح Hotkey ، يظهر مؤشر الميكروفون في الشريط العلوي (على الأقل في Gnome) ويظهر طوال مدة التسجيل (يمكن أن يتدخل بمفتاح حار آخر). يشير اختفاء أيقونة الميكروفون من الشريط العلوي إلى الانتهاء ويمكن لصق النص المكتوب من الحافظة. في الأنظمة الأبطأ ، قد يكون هناك تأخير طفيف بعد اختفاء أيقونة الميكروفون وقبل أن يصل النص إلى الحافظة بسبب وقت النسخ الأطول. على جهاز الكمبيوتر الخاص بي ، عبر API Whisper.CPP Server ، يقل عن 150 مللي ثانية (300 مللي ثانية مع Whisper.cpp محلي) للحصول على فقرة متوسطة من النص المنطوق.
بالنسبة لعملية لوحة المفاتيح فقط ، مع CTRL+V القياسية ، سيتم استخدام الحافظة القياسية تحت X11 و Wayland ( wsi أو wsiml ) ، بينما يستخدم wsi -p (أو wsiml -p ) للبيع الأساسي والنص لصق مع زر الماوس الأوسط). بالنسبة للعجينة اليسرى ، يمكن ترحيل تسجيل الكلام إلى مفاتيح hotkeys الناتجة عن اليد اليمنى. ** على سبيل المثال ، قمت بإعداد مفاتيح "+" (بدء التسجيل) غير المستخدمة "+" و "إدراج" (إيقاف التسجيل) على لوحة المفاتيح الرقمية.


install-wsi التثبيت معظم هذه).إخلاء المسئولية: لا يأخذ المؤلف الائتمان ولا يتحمل أي مسؤولية عن أي نتيجة قد تنجم أو لا تنجم عن التفاعل مع محتويات هذا المستند. الإجراءات والأتمتة المقترحة (مثل مواقع التثبيت وما إلى ذلك) هي مجرد اقتراحات وتستند إلى اختيار المؤلف ورأيها. لأنها قد لا تتناسب مع الذوق أو الموقف الخاص للجميع ، من فضلك ، ضبط حسب الحاجة.
في مجلد من اختيارك ، استنساخ مستودع blahst ثم اختر طريقة تثبيت من أدناه:
git clone https://github.com/QuantiusBenignus/BlahST.git
cd ./BlahST
(بافتراض تثبيت Whisper.cpp وتجميع "Main" القابل للتنفيذ مع "Make" في Whisper.cpp repo. انظر قسم المتطلبات الأساسية)
cd $HOME/.local/bin; chmod +x wsi wsiAI wsiml
$HOME/.local/bin/ (جزء من مسار $ الخاص بك) مع ln -s /full/path/to/whisper.cpp/main $HOME/.local/bin/transcribe
إذا لم يكن النسخ في مسار $ الخاص بك ، إما تحرير المكالمة إليه في WSI لتضمين المسار المطلق ، أو إضافة موقعه إلى متغير المسار $. وإلا سيفشل البرنامج النصي. إذا كنت تفضل عدم تجميع Whisper.cpp ، أو بالإضافة إلى ذلك ، قم بتنزيل وتعيين العلامة القابلة للتنفيذ لـ Whisperfile المناسب ، على سبيل المثال:
cd $HOME/.local/bin
wget https://huggingface.co/Mozilla/whisperfile/resolve/main/whisper-tiny.en.llamafile
chmod +x whisper-tiny.en.llamafile
داخل wsi أو wsiAI أو wsiml أو blooper Script ، بالقرب من البداية ، يوجد قسم محدد بوضوح ، يسمى "كتلة تكوين المستخدم" ، حيث تم جمع جميع المتغيرات القابلة للتكوين. يمكن ترك معظمهم كما هو ولكن المهمات المهمة هي موقع ملفات (Whisper ، LLM ، TTS) التي ترغب في استخدامها أثناء النسخ (أو رقم IP ورقم المنفذ لخادم Whisper.cpp). إذا كنت تستخدم Whisperfile ، فيرجى تعيين متغير Whisperfile على اسم ملف Whisperfile القابل للتنزيل مسبقًا ، IE WHISPERFILE=whisper-tiny.en.llamafile (يجب أن يكون في مسار $).
لبدء وإيقاف إدخال الكلام ، للتثبيت اليدوي والتلقائي
/home/yourusername/.local/bin/wsi -p لاستخدام زر الماوس الأوسط أو قم بتغييره إلى .../wsi لاستخدام الحافظة.wsi أعلاه بـ wsiml ، وإذا استخدموا Whisperfile ، فأضف علامة -w ، IE /home/yourusername/.local/bin/wsi -w ). أخيرًا ، لأخذ عينات من وظائف LLM ، استبدل wsi بـ wsiAI .يحتوي برنامج Orchestrator Script على مرشح اكتشاف الصمت في المكالمة إلى Sox (REC) وسيتوقف عن التسجيل (في أفضل حالة) في ثانيتين من الصمت. بالإضافة إلى ذلك ، إذا كان المرء لا يريد الانتظار أو لديه مشاكل مع عتبة اكتشاف الصمت:
بالنسبة لأولئك الذين يرغبون في أن يكونوا قادرين على تدخل التسجيل يدويًا بمجموعة رئيسية ، بروح الاختراقات العظيمة ، سنستخدم ميزات النظام المدمجة:
pkill --signal 2 recبهذه البساطة. فقط تأكد من أن ربط المفتاح الجديد لم يتم إعداده بالفعل لشيء آخر. الآن عندما يقوم البرنامج النصي بتسجيل الكلام ، يمكن إيقافه باستخدام التحرير والسرد الرئيسي الجديد وسيبدأ النسخ على الفور.
/home/yourusername/.local/bin/wsi -p أو .../wsi لاستخدام الحافظة.wsi أعلاه بـ wsiml ، وإذا استخدموا Whisperfile ، فأضف علامة -w ، IE /home/yourusername/.local/bin/wsi -w ). أخيرًا ، لأخذ عينات من وظائف LLM ، استبدل wsi بـ wsiAI .pkill --signal 2 rec ./home/yourusername/.local/bin/wsi /.local/bin/wsi أو .../wsi -pwsi أعلاه بـ wsiml ، وإذا استخدموا Whisperfile ، فأضف علامة -w ، IE /home/yourusername/.local/bin/wsi -w ). أخيرًا ، لأخذ عينات من وظائف LLM ، استبدل wsi بـ wsiAI .pkill --signal 2 rec .من فضلك ، لاحظ أنه قد يكون هناك اختلافات طفيفة في الخطوات المذكورة أعلاه اعتمادًا على الإصدار المثبت على نظامك. بالنسبة للعديد من البيئات الأخرى ، مثل MATE ، القرفة ، LXQT ، DEEMIN ، إلخ. يجب أن تكون الخطوات مشابهة إلى حد ما للأمثلة المذكورة أعلاه. من فضلك ، استشر الوثائق الخاصة ببيئة سطح مكتب الأنظمة الخاصة بك.
على الضغط على مزيج من التحرير والسرد Hotkey ، سيقوم برنامج wsi -p Script بتسجيل الكلام (توقف مع مفتاح Hotkey أو عن طريق اكتشاف الصمت) ، واستخدم نسخة محلية من Whisper.cpp وإرسال النص المكتوب إلى التحديد الأساسي ، إما X11 أو Wayland. ثم كل ما يتعين على المرء فعله هو لصقه مع زر الماوس الأوسط في أي مكان يريدون. (للأشخاص الذين يحملون الماوس بيدهم اليمنى ، فإن تسجيلات الكلام الساخنة لليد اليسرى سيكون منطقيًا.)
إذا كان استخدام wsi بدون أعلام (يمكن أن تتعايش النهج ، فما عليك سوى إعداد مجموعة مختلفة من مفاتيح hotkeys) ، يتم إرسال النص المكتوب إلى الحافظة (وليس التحديد الأساسي) تحت ، إما X11 أو Wayland. ثم يحدث لصق مع CTRL+V ( CTRL+SHIFT+V لمحطة GNOME) أو مفاتيح SHIFT+INSert كالمعتاد. (بالنسبة لمعظم الناس ، ستعمل مفاتيح الساخنة اليمنى بشكل جيد.)
إذا كانت النسخ عبر الشبكة باستخدام wsi -n (تم اختيارها مع مفتاحي هاتفي خاص بها) ، فسيحاول البرنامج النصي إرسال الصوت المسجل إلى خادم Whisper.cpp قيد التشغيل بشكل صحيح (على LAN أو localhost ). سيقوم بعد ذلك بجمع الاستجابة النصية وتنسيقها من أجل لصقها باستخدام CTRL+V ( CTRL+SHIFT+V لمحطة GNOME) أو مفاتيح SHIFT+INSert (للصق مع زر الماوس الأوسط ، استخدم wsi -n -p بدلاً من ذلك).
إذا كنت تستخدم Whisperfile بدلاً من ، أو بالإضافة إلى Whisper.cpp المترجمة ، استدعاء مع wsi -w ... وسيستخدم البرنامج النصي مسبقًا قابلة للتنفيذ بالفعل مع نموذج الهمس المدمج المفضل.
بالنسبة للمستخدمين متعدد اللغات ، بالإضافة إلى ميزات WSI ، توفر wsiml القدرة على تحديد لغة ، على سبيل المثال -l fr وخيار الترجمة إلى اللغة الإنجليزية مع -t . يمكن للمستخدم من حيث المبدأ تعيين مفاتيح ساخنة متعددة إلى اللغات المختلفة التي يقومون بنسخها أو ترجمة منها. على سبيل المثال ، يمكن تعيين مفاتيح حارة إضافية ، أحدهما للنسخ والآخر للترجمة من الفرنسية عن طريق تعيين الأوامر wsiml -l fr و wsiml -l fr -t المقابلة.
التجريبي: يمكن للمستخدمين استخدام Blooper البرنامج النصي المرفق لإدخال الكلام إلى النص التلقائي المستمر (لا حاجة للضغط على زر Ctrl+V أو النقر فوق زر الماوس الأوسط.) يظهر هذا في الفيديو الثاني أعلاه. من فضلك ، لاحظ أن الحافظة تستخدم افتراضيًا ، وسيتم تهيج النص تحت لوحة المفاتيح ، ولكن من حيث المبدأ يمكن إعداد التحديد الأساسي بدلاً من ذلك ، سيتم محاكاة زر الفأر الأوسط والرصي التي تم لصقها في الموضع الحالي لمؤشر الماوس في الوقت (التعريفي التعريفي إلى حد ما) يتوفر النص. من فضلك ، لاحظ أن هذا يعتمد على اكتشاف الصمت ، والذي يعتمد على بيئتك المادية. في البيئات الصاخبة ، استخدم المفتاح الساخن لوقف التسجيل.
لا يمكننا رفع العتبة بشكل تعسفي لأنه ، إذا كان المرء يقلل من صوته باستمرار (Fadeout) في نهاية الكلام ، فقد يتم قطعه إذا كانت العتبة عالية. خفضه في هذه الحالة إلى بضع ٪.
من الأفضل محاولة جعل الكلام يمكن تمييزه عن الضوضاء عن طريق السعة (تحدث بوضوح ، بالقرب من الميكروفون) ، مع تقليل الضوضاء الخارجية (الموقع المحمي للميكروفون ، أجهزة إلغاء الضوضاء وما إلى ذلك) مع مستوى إشارة الكلام الجيدة ، يمكن أن تكون العتبة أكثر فاعلية ، حيث يتم زيادة نسبة الكلام إلى الضوضاء الإضافية :-) بشكل فعال.
بعد التقاط الكلام ، سيتم تمريره transcribe (Whisper.cpp) للتعرف على الكلام. سيحدث هذا بشكل أسرع من الوقت الحقيقي (خاصة مع وحدة المعالجة المركزية السريعة أو إذا كان تثبيت Whisper.cpp يستخدم CUDA). يمكن للمرء ضبط عدد مؤشرات ترابط المعالجة المستخدمة عن طريق إضافة -tn إلى معلمات سطر الأوامر من Transcrip (من فضلك ، راجع وثائق Whisper.cpp). سيقوم البرنامج النصي بعد ذلك بتحليل النص لإزالة القطع الأثرية غير الكلام ، وتنسيقه وإرساله إلى التحديد الأساسي (الحافظة) باستخدام أدوات X11 أو Wayland.
من حيث المبدأ ، يعتبر Whisper (Whisper.cpp) متعدد اللغات ومع ملف النموذج الصحيح ، سيقوم هذا التطبيق بإخراج نص UTF-8 الذي تم نقله باللغة الصحيحة. نصي wsiml مخصص للاستخدام متعدد اللغات ، ومع ذلك ، يمكن للمستخدم اختيار لغة إدخال الكلام (باستخدام علامة -l LC حيث يكون LC هو رمز اللغة) ويمكنه أيضًا ترجمة الكلام في لغة الإدخال المختارة إلى اللغة الإنجليزية باستخدام علامة -t . يمكن للمستخدم تعيين مفاتيح ساخنة متعددة إلى اللغات المختلفة التي يرغبون في نسخها أو ترجمة منها. على سبيل المثال ، يمكن تعيين مفاتيح حارة إضافية ، أحدهما للنسخ والآخر للترجمة من الفرنسية عن طريق تعيين الأوامر wsiml -l fr و wsiml -l fr -t المقابلة.
من فضلك ، لاحظ أنه عند استخدام وضع الخادم ، لديك الآن خياران. يمكنك إما خادم Whisper.cpp مسبق أو Whisperfile الذي تم تنزيله (في وضع الخادم) الاستماع إلى رقم المضيف ورقم المنفذ مسبقًا. سيناريو أوركستور يقترب منهم بنفس الطريقة.
إن النسخ من الكلام إلى النص هو المهمة المكثفة للذاكرة ووحدة المعالجة المركزية وتخزين سريع للوصول إلى القراءة والكتابة يمكن أن تساعد فقط. لهذا السبب تقوم WSI بتخزين الملفات المؤقتة والموارد في الذاكرة ، من أجل السرعة وتقليل SSD/HDD "الطحن": TEMPD='/dev/shm' . يتم إنشاء نقطة تثبيت من النوع "TMPFS" في ذاكرة الوصول العشوائي (لنفترض أن لديك ما يكفي ، على سبيل المثال ، 8 جيجابايت على الأقل) ويتم توفيره بواسطة kernel لتطبيقات مساحة المستخدم. عند إيقاف تشغيل الكمبيوتر ، يتم القضاء عليها تلقائيًا ، وهذا أمر جيد لأننا لا نحتاج إلى الملفات الوسيطة. في الواقع ، بالنسبة لبعض أنواع التطبيقات (بالنظر إلى إلكترونك) ، سيكون من المفيد (IMHO) أن يتم الاحتفاظ بنقطة جبل /TMP على مستوى النظام. نقل /TMP إلى ذاكرة الوصول العشوائي قد تسرع بدء تشغيل التطبيق قليلا. تسريع ترحيب لأي تطبيق إلكترون. في أبسط أشكاله ، هذا الانتقال سهل ، فقط تشغيل:
echo "tmpfs /tmp tmpfs rw,nosuid,nodev" | sudo tee -a /etc/fstab ثم أعد تشغيل كمبيوتر Linux الخاص بك. للأسباب المذكورة أعلاه ، خاصة إذا كانت HDD هي وسائط التخزين الرئيسية ، يمكن للمرء أيضًا نقل ملفات طراز ASR التي تحتاجها Whisper.cpp في نفس الموقع (/dev/shm). هذه ملفات كبيرة ، يمكن نقلها إلى هذا الموقع في بداية جلسة طرفية (أو عند بدء تشغيل النظام). يمكن القيام بذلك باستخدام ملف .profile عن طريق وضع شيء مثل هذا فيه:
([ -f /dev/shm/ggml-base.en.bin ] || cp /path/to/your/local/whisper.cpp/models/ggml* /dev/shm/)