واجهة مستخدم صوتية تمكنك من التحدث مع Nano Bot، بهدف خلق تجربة محادثة.
يوفر بديلاً حديثًا للمساعدين الافتراضيين التقليديين. إنه قابل للتخصيص بدرجة كبيرة، مع الاستفادة من Picovoice؛ قوية ، مدعومة بـ Nano Bots، المتوافقة مع موفري الخدمة مثل OpenAI ChatGPT وGoogle Gemini؛ وقابلة للاختراق ، مما يوفر الدعم لتطبيقات Nano التي يمكن ترميزها بلغة Lua أو Fennel أو Clojure.
انقر لمشاهدة الفيديو
انقر لمشاهدة الفيديو
إذا كنت تقوم بتشغيل Raspberry Pi، فتحقق من تعليماته الإضافية المحددة.
git clone https://github.com/gbaptista/ion.git
cd ion
git clone https://github.com/gbaptista/ion-assets.git assets
cp .env.example .env # Fill the environment variables.
sudo pacman -S mpv # Arch / Manjaro
sudo apt-get install mpv # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install mpv # Fedora / CentOS / RHEL
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bash
sudo pacman -S ruby # Arch / Manjaro
sudo apt-get install ruby-full # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install ruby # Fedora / CentOS / RHEL
sudo gem install bundler
sudo gem install nano-bots
sudo bundle install
pip install -r requirements.txt
# https://github.com/icebaker/ruby-nano-bots#setup
# Nano Bots CLI need to be installed and configured:
nb static/cartridges/default.yml - repl
# ?> Hi!
#
# Hello! How can I assist you today?
#
# ?> exit
./ion.sh static/personas/default.yml
# > ? Monitor Engine started.
# > Welcome to Ion!
# > Listening and waiting for a wake word.
تذكر أن بعض تطبيقات Nano قد يكون لها تبعيات خاصة بها، لذا تحقق مما إذا كانت مثبتة لديك لتعمل بشكل سليم.
لاستخدام Nano Bots مع OpenAI ChatGPT، ستحتاج إلى مفتاح API، والذي يمكنك الحصول عليه من منصة OpenAI. إنها خدمة مدفوعة يتم محاسبتك عليها على أساس الاستهلاك.
إذا كنت تخطط لاستخدام Nano Bots مع Google Gemini، فتحقق هنا لمعرفة كيفية الحصول على بيانات الاعتماد الخاصة بك. إنها أيضًا خدمة مدفوعة.
احصل على مفتاح وصول لـ Picovoice عن طريق التسجيل في وحدة تحكم Picovoice. إنه مجاني للأبد "للأفراد الذين يستكشفون ويجربون ويقيمون" ، ويدفع مقابل حالات الاستخدام الأخرى.
لتمكين إشارات الكلام والصوت، يجب أن تكون قادرًا على تشغيل الملفات الصوتية، الأمر الذي يتطلب تثبيت mpv:
sudo pacman -S mpv # Arch / Manjaro
sudo apt-get install mpv # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install mpv # Fedora / CentOS / RHEL
استنساخ المستودعات الضرورية:
git clone https://github.com/gbaptista/ion.git
cd ion
git clone https://github.com/gbaptista/ion-assets.git assets
احصل على المفاتيح الضرورية من قسم المتطلبات وقم بإعداد ملف .env
الخاص بك:
cp .env.example .env
قم بتحرير محتوى ملف .env
لإضافة المفاتيح الخاصة بك، على سبيل المثال:
PICOVOICE_ACCESS_KEY=your-key
OPENAI_API_ADDRESS=https://api.openai.com
OPENAI_API_KEY=your-access-token
NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
NANO_BOTS_END_USER=your-user
وبدلاً من ذلك، يمكنك تصدير متغيرات البيئة على نظامك:
export PICOVOICE_ACCESS_KEY=your-key
export OPENAI_API_ADDRESS=https://api.openai.com
export OPENAI_API_KEY=your-access-token
export NANO_BOTS_ENCRYPTION_PASSWORD=UNSAFE
export NANO_BOTS_END_USER=your-user
تثبيت باباشكا:
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bash
يجب أن يكون لديك Ruby 3 (مع RubyGems) وPython 3 (مع PyPI) مثبتين على نظامك.
تثبيت روبي وBundler:
sudo pacman -S ruby # Arch / Manjaro
sudo apt-get install ruby-full # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install ruby # Fedora / CentOS / RHEL
sudo gem install bundler
تثبيت وإعداد Nano Bots CLI:
sudo gem install nano-bots
تثبيت تبعيات روبي:
sudo bundle install
تثبيت تبعيات بايثون:
إذا كنت تقوم بتشغيل Raspberry Pi، فتحقق من تعليماته الإضافية المحددة.
pip install -r requirements.txt
ابدأ بالتأكد من أن Nano Bot الخاص بك يعمل بشكل صحيح عن طريق اختباره من خلال REPL:
nb static/cartridges/default.yml - repl
?> Hi!
Hello! How can I assist you today?
?> What time is it?
date-and-time {}
{:date-time 2023-12-08T07:42:54-03:00, :timezone America/Sao_Paulo}
Right now it's 7:42 a.m.
?> |
يمكنك الخروج من REPL عن طريق كتابة exit
.
مع عمل Nano Bots بشكل صحيح، ابدأ تشغيل Ion:
./ion.sh static/personas/default.yml
يمكنك استخدام كلمة التنبيه Jarvis
للتحدث والتفاعل:
> ? Monitor Engine started.
> Welcome to Ion!
> Listening and waiting for a wake word.
> ?️ Awake and recording your speech.
> ? Audio successfully recorded.
> ? Recorded audio temporarily saved to disk.
> ? Interaction Engine started.
> ✍️ Converting speech to text.
> Speech converted to text: What time is it?
> Nano Bot is executing a tool: date-and-time {}
> ? Nano Bot received a response from a tool: date-and-time {} {:date-time 2023-12-09T17...
> Nano Bot answer received: The current time is 17:34, or 5:34 PM.
> ? Starting to speak: The current time is 17:34, or 5:34 PM.
> Interaction completed.
> ?️ Recording a possible follow-up.
> ? Audio successfully recorded.
> ?️ No follow-up detected.
تذكر أن بعض تطبيقات Nano قد يكون لها تبعيات خاصة بها، لذا تحقق مما إذا كانت مثبتة لديك لتعمل بشكل سليم.
يحتوي ملف YAML الشخصي على بيانات يمكن قراءتها بواسطة الإنسان والتي تحدد كيفية ظهور الصوت، والتكوينات المخصصة لمقدمي الخدمة، وتعديلات محرك الصوت، والسجلات، والأحداث، والإشارات الصوتية، بالإضافة إلى مسار خرطوشة Nano Bot التي تحدد الأهداف المتوقعة. السلوكيات والأدوات (الوظائف) والإعدادات الخاصة بالمصادقة واستخدام الموفر.
الشخصية الافتراضية متاحة على static/personas/default.yml
. لا تتردد في تعديله أو إنشاء واحدة جديدة.
يمكنك تعديل الإعدادات للحصول على تجربة أفضل للسيناريو والإعداد والبيئة والأجهزة المحددة لديك:
---
voice-engine :
settings :
maximum-recording-duration :
seconds : 30
duration-of-silence-to-stop-recording :
seconds : 2
minimum-recording-duration-to-be-a-valid-input :
seconds : 3
voice-probability-threshold : 0.5
يدعم Picovoice، بشكل افتراضي، كلمات التنبيه التالية:
alexa, americano, blueberry, bumblebee, computer,
grapefruit, grasshopper, hey barista, hey google,
hey siri, jarvis, ok google, pico clock, picovoice,
porcupine, smart mirror, snowboy, terminator, view glass
يمكنك استخدام كلمات تنبيه متعددة إذا كنت تريد:
---
voice-engine :
provider :
settings :
porcupine :
keywords :
- jarvis
- alexa
sensitivities :
- 0.5
- 0.5
يمكنك أيضًا إنشاء كلمة تنبيه مخصصة من خلال النظام الأساسي الخاص بهم.
يتم توفير دعم تحويل الكلام إلى نص الحالي بواسطة Whisper من OpenAI:
---
speech-to-text :
provider :
id : openai
credentials :
address : ENV/OPENAI_API_ADDRESS
access-token : ENV/OPENAI_API_KEY
settings :
model : whisper-1
لتمكين النظام من تحويل النص إلى كلام على المحتوى المستلم جزئيًا. نظرًا لأنه يتم إنشاء الإجابات من خلال البث، فإنه يحاول استنتاج النقاط المثالية حيث يكون لدينا ما يكفي من النص لإنشاء الكلام وإنشاء خطابات جديدة تدريجيًا ليتم تشغيلها. يؤدي هذا إلى تحسين السرعة، حيث لا نحتاج إلى انتظار تقديم الإجابة الكاملة من Nano Bot قبل بدء عملية تحويل النص إلى كلام.
---
text-to-speech :
settings :
fragment-speech : true
يمكنك استخدام أحد موفري تحويل النص إلى كلام الثلاثة المعتمدين: OpenAI أو AWS أو Google.
---
text-to-speech :
provider :
id : openai
credentials :
address : ENV/OPENAI_API_ADDRESS
access-token : ENV/OPENAI_API_KEY
settings :
model : tts-1
voice : onyx
أمثلة على الأصوات المحتملة:
alloy, echo, fable, onyx, nova, shimmer
للحصول على صوت عالي الجودة، يمكنك استخدام model: tts-1-hd
، على الرغم من أنه أبطأ وأكثر تكلفة.
تعد تقنية تحويل النص إلى كلام في OpenAI غير محددة للغة؛ يمكنه التحدث بعدة لغات.
تحقق من جميع الأصوات المتاحة في الوثائق الرسمية.
---
text-to-speech :
provider :
id : aws
credentials :
access-key : ENV/AWS_ACCESS_KEY
secret-key : ENV/AWS_SECRET_KEY
region : ENV/AWS_REGION
settings :
voice_id : Danielle
engine : neural
أمثلة على الأصوات البرتغالية البرازيلية المحتملة:
Camila, Vitoria, Thiago
أمثلة على الأصوات الإنجليزية الأمريكية المحتملة:
Danielle, Matthew, Gregory, Joanna, Kendra, Kimberly, Salli, Joey, Ruth, Stephen
تحقق من جميع الأصوات المتاحة في الوثائق الرسمية.
تحتاج إلى إضافة بيانات اعتماد AWS الخاصة بك إلى بيئتك.
لاحظ أن أصوات Polly مصممة للغات محددة (على سبيل المثال، pt-BR
, en-US
)، وتحتاج إلى مطابقة voice_id
بشكل صحيح مع نوع engine
الصوت ( neural
أو standard
).
كن على دراية بالتكاليف، حيث يتم تسعير الأصوات neural
والأصوات standard
بشكل مختلف.
---
text-to-speech :
provider :
id : google
credentials :
service : cloud-text-to-speech-api
file-path : ENV/GOOGLE_CREDENTIALS_FILE_PATH
settings :
name : pt-BR-Neural2-A
ssml_gender : FEMALE
language_code : pt-BR
وبدلاً من ذلك، إذا كنت تستخدم Application Default Credentials ، فيمكنك حذف file-path
:
---
text-to-speech :
provider :
id : google
credentials :
service : cloud-text-to-speech-api
settings :
name : pt-BR-Neural2-A
ssml_gender : FEMALE
language_code : pt-BR
أمثلة على الأصوات البرتغالية البرازيلية المحتملة:
pt-BR | FEMALE:
pt-BR-Neural2-A, pt-BR-Neural2-C, pt-BR-Wavenet-A, pt-BR-Wavenet-C
pt-BR | MALE:
pt-BR-Neural2-B, pt-BR-Wavenet-B
أمثلة على الأصوات الإنجليزية الأمريكية المحتملة:
en-US | FEMALE:
en-US-Neural2-C, en-US-Neural2-E, en-US-Neural2-F, en-US-Neural2-G, en-US-Neural2-H,
en-US-News-K, en-US-News-L, en-US-Studio-O, en-US-Wavenet-C, en-US-Wavenet-E,
en-US-Wavenet-F, en-US-Wavenet-G, en-US-Wavenet-H
en-US | MALE:
en-US-Neural2-A, en-US-Neural2-D, en-US-Neural2-I, en-US-Neural2-J, en-US-News-N,
en-US-Studio-Q, en-US-Wavenet-A, en-US-Wavenet-B, en-US-Wavenet-D, en-US-Wavenet-I,
en-US-Wavenet-J
تحقق من جميع الأصوات المتاحة في الوثائق الرسمية.
قد تحتاج إلى إضافة المسار إلى ملف google-credentials.json
الخاص بك إلى بيئتك.
لاحظ أن أصوات Google مصممة للغات محددة (على سبيل المثال، pt-BR
, en-US
)، وتحتاج إلى مطابقة name
بشكل صحيح مع ssml_gender
و language_code
.
كن على دراية بالتكاليف، حيث يتم تسعير الأصوات Neural و Studio و WaveNet بشكل مختلف.
تقدم Google معاينة لـ Polyglot Voices ، والتي يمكنها التحدث بعدة لغات.
تعتمد العملية الأيونية على تدفق الأحداث. لفهم هذا التدفق وجميع الأحداث المرتبطة به، يمكنك فحص المخطط الانسيابي التالي:
انقر للعرض بحجم أكبر
وصف يمكن الوصول إليه لجميع الأحداث المحتملة:
محرك المراقبة:
> monitor-engine-started
> welcome-message-booted
> listening-and-waiting
> awake-and-recording
> recording-follow-up
> audio-recorded
> audio-discarded
> no-follow-up-received
> audio-stored
> interaction-interrupted
محرك التفاعل:
> interaction-engine-started
> speech-to-text-started
> speech-to-text-completed
> nano-bot-tool-confirming
> nano-bot-tool-executing
> nano-bot-tool-responding
> nano-bot-answer-received
> speaking-started
> interaction-completed
> interruption-requested
أحداث أخرى:
> error-raised
يمكن تخصيص كل حدث من الأحداث المميزة المحتملة البالغ عددها 21 والتي يمكن إرسالها أثناء تشغيل Ion، بشكل فردي باستخدام الرموز (Unicode emojis) والإشارات الصوتية ومستوى الصوت والرسائل.
ما هي الأحداث التي يجب أن تحتوي على إشارات صوتية، وبأي مستوى صوت، وما إلى ذلك، سيكون قرارًا شخصيًا بناءً على التجربة التي تحاول إنشاءها لشخصيتك . إليك كيفية تخصيص حدث ما:
event :
listening-and-waiting :
symbol :
message : Listening and waiting for a wake word.
audio : assets/audio/clue.wav
volume : 1
يتم استخدام الرموز (Unicode emojis) والرسائل في سجلات Ion. تُستخدم إعدادات الصوت ومستوى الصوت لتشغيل الملفات الصوتية، والتي يمكن أن تكون بتنسيقات WAV أو OGG أو MP3.
يمكنك ضبط وحدات التخزين الفردية لكل حدث لتطبيع مستويات الصوت المختلفة. يوصى بعدم زيادة حجم الصوت عن 1.0، لأن ذلك قد يؤدي إلى تشويه الصوت في بعض مكبرات الصوت. من الناحية المثالية، قم بتعيين أعلى مستوى صوت لديك عند 1.0 أو أقل، وقم بتقليل المستويات الأخرى وفقًا لذلك للحفاظ على التوازن.
يمكن استخدام welcome-message-booted
لتشغيل رسالة ترحيب باستخدام تحويل النص إلى كلام:
---
events :
welcome-message-booted :
symbol :
message : Welcome to Ion!
speak : true
volume : 1
يمكن استخدام حدث speaking-started
لتعيين مستوى صوت إجابة تحويل النص إلى كلام:
---
events :
speaking-started :
symbol : ?
message : ' Starting to speak: '
volume : 0.8
يعمل Ion بشكل جيد باستخدام سماعات الرأس البسيطة والميكروفون. بالنسبة للبيئات المفتوحة، قد ترغب في التفكير في الاستثمار في مكبرات الصوت التي توفر التجربة الصوتية التي تبحث عنها، وعلى وجه التحديد، ميكروفون مناسب للمساحات المفتوحة، مثل الميكروفون متعدد الاتجاهات أو تلك المصممة لقاعات المؤتمرات.
قبل تشغيل pip install -r requirements.txt
، تحتاج إلى إنشاء بيئة افتراضية لـ Python:
python3 -m venv env
source env/bin/activate
تحقق من بايثون على Raspberry Pi.
لعرض Unicode emojis في وحدات التحكم الطرفية على Raspberry Pi، تحتاج إلى تثبيت خط يدعم Unicode emojis:
sudo apt-get install fonts-noto-color-emoji
تحتاج إلى إعادة تشغيل Raspberry Pi لرؤية النتائج.
إذا قمت بتوصيل مكبر صوت بالكمبيوتر الخاص بك باستخدام مقبس، فقد تواجه مشكلات تتعلق بعدم نشاط الصوت مما قد يؤدي إلى سماع "ضوضاء ثابتة". على Linux، يمكنك إصلاح ذلك عن طريق:
/etc/modprobe.d/alsa-base.conf
options snd_hda_intel power_save=0 power_save_controller=N
/etc/pulse/daemon.conf
exit-idle-time = -1
قم بتحديث ملف template.md
ثم:
bb tasks/generate-readme.clj
خدعة لتحديث README.md
تلقائيًا عند تغيير template.md
:
sudo pacman -S inotify-tools # Arch / Manjaro
sudo apt-get install inotify-tools # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install inotify-tools # Fedora / CentOS / RHEL
while inotifywait -e modify template.md ; do bb tasks/generate-readme.clj ; done
خدعة للمعاينة المباشرة لـ Markdown:
pip install -U markdown_live_preview
mlp README.md -p 8076
نحن ملتزمون بجعل Ion متاحًا. إذا واجهت أي مشكلات في إمكانية الوصول أو كانت لديك توصيات للتحسين، فلا تتردد في ملء مشكلة!
1.1.0
لقد كنت أحاول (وفشلت) في بناء هذا لأكثر من عقد من الزمان، وأصبح لدينا أخيرًا جميع القطع الأساسية للغز لجعله ممكنًا على المستوى الذي تصورته:
هذه المكونات الستة هي التي تجعل السحر يحدث، وبعد هذه النقطة، يتعلق الأمر كله بمواصلة تحسين التكنولوجيا الأساسية والبناء عليها. لقد تم حل لغز الفصل الأول، وعلى الرغم من أن هذه ربما تكون مجرد لمحة مبكرة عما يخبئه المستقبل لنا، إلا أنني أشعر بسعادة غامرة بشأن الاحتمالات.
ومع ذلك، على مدار سنوات محاولاتي، أريد أن أشيد بثلاثة مشاريع رئيسية أعطتني الأمل في المستقبل على طول الطريق:
هذا مشروع تجريبي في مرحلة مبكرة. قد يكون الأيون خطيرًا، لذا كن حذرًا فيما تحاول بناءه؛ يمكن أن ينفذ إجراءات مدمرة على جهاز الكمبيوتر الخاص بك. ضع في اعتبارك أيضًا ميزانيتك: تأكد من مراقبة وميزانية أي مزود تستخدمه. قد ينتج Ion محتوى طويلًا بشكل غير متوقع أو حلقات لا نهائية/طويلة جدًا مما قد يتسبب في ارتفاع تكاليفك بشكل كبير.
يتم توزيع هذا البرنامج بموجب ترخيص MIT، والذي يتضمن إخلاء المسؤولية عن الضمان. وعلاوة على ذلك، لا يتحمل المؤلفون أي مسؤولية عن أي ضرر أو تكاليف قد تنشأ عن استخدام هذا المشروع التجريبي في مرحلة مبكرة. استخدام ايون على مسؤوليتك الخاصة.