อินเทอร์เฟซผู้ใช้แบบเสียงที่ช่วยให้คุณสามารถพูดคุยกับ Nano Bot โดยมีเป้าหมายเพื่อสร้างประสบการณ์การสนทนา
มันเป็นทางเลือกที่ทันสมัยแทนผู้ช่วยเสมือนแบบดั้งเดิม ปรับแต่งได้ สูง โดยใช้ประโยชน์จาก Picovoice ทรงพลัง สนับสนุนโดย Nano Bots ซึ่งเข้ากันได้กับผู้ให้บริการ เช่น OpenAI ChatGPT และ Google Gemini และ แฮ็กได้ โดยให้การสนับสนุน Nano Apps ที่สามารถเขียนโค้ดได้ใน 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 Console ใช้ งานได้ฟรีตลอดไป สำหรับ "บุคคลทั่วไปในการสำรวจ ทดลอง และประเมินผล" และชำระเงินสำหรับกรณีการใช้งานอื่นๆ
หากต้องการเปิดใช้งานเสียงพูดและเสียง คุณจะต้องสามารถเล่นไฟล์เสียงได้ ซึ่งต้องมีการติดตั้ง 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) บนระบบของคุณ
ติดตั้ง Ruby และ 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
ติดตั้งการพึ่งพา Ruby:
sudo bundle install
ติดตั้งการพึ่งพา Python:
หากคุณใช้ 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 Voices ได้รับการออกแบบมาสำหรับภาษาเฉพาะ (เช่น pt-BR
, en-US
) และคุณต้องจับคู่ name
ด้วย ssml_gender
และ language_code
อย่างถูกต้อง
โปรดระวังค่าใช้จ่าย เนื่องจากเสียงของ Neural , Studio และ WaveNet มีราคาแตกต่างกัน
Google นำเสนอตัวอย่าง เสียงพูดได้หลายภาษา ซึ่งสามารถพูดได้หลายภาษา
การทำงานของไอออนขึ้นอยู่กับการไหลของเหตุการณ์ เพื่อทำความเข้าใจโฟลว์นี้และเหตุการณ์ที่เกี่ยวข้องทั้งหมด คุณสามารถตรวจสอบโฟลว์ชาร์ตต่อไปนี้:
คลิกเพื่อดูขนาดที่ใหญ่ขึ้น
คำอธิบายที่เข้าถึงได้ของเหตุการณ์ที่เป็นไปได้ทั้งหมด:
ตรวจสอบเครื่องยนต์:
> 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) คิวเสียง ระดับเสียง และข้อความ
กิจกรรมใดที่ควรมีสัญญาณเสียง ระดับเสียง ฯลฯ จะเป็นการตัดสินใจส่วนบุคคลโดยพิจารณาจากประสบการณ์ที่คุณพยายามสร้างให้กับ บุคลิก ของคุณ ต่อไปนี้คือวิธีการปรับแต่งกิจกรรม:
event :
listening-and-waiting :
symbol :
message : Listening and waiting for a wake word.
audio : assets/audio/clue.wav
volume : 1
สัญลักษณ์ (Unicode อิโมจิ) และข้อความที่ใช้ในบันทึกของไอออน การตั้งค่าเสียงและระดับเสียงใช้สำหรับการเล่นไฟล์เสียงซึ่งอาจอยู่ในรูปแบบ 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
ลองดู Python บน Raspberry Pi
หากต้องการแสดง Unicode อิโมจิในเทอร์มินัลคอนโซลบน Raspberry Pi คุณต้องติดตั้งแบบอักษรที่รองรับ Unicode อิโมจิ:
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 Live:
pip install -U markdown_live_preview
mlp README.md -p 8076
เรามุ่งมั่นที่จะทำให้ Ion สามารถเข้าถึงได้ หากคุณประสบปัญหาด้านการเข้าถึงหรือมีคำแนะนำในการปรับปรุง โปรดกรอกปัญหาได้เลย!
1.1.0
ฉันพยายาม (และล้มเหลว) ในการสร้างสิ่งนี้มานานกว่าทศวรรษ และในที่สุดเราก็มีชิ้นส่วนหลักทั้งหมดของปริศนาที่จะทำให้มันเป็นไปได้ในระดับที่ฉันจินตนาการไว้:
ส่วนผสมทั้งหกนี้ทำให้เกิดความมหัศจรรย์ และนอกเหนือจากจุดนี้ มันคือทั้งหมดที่เกี่ยวกับการปรับปรุงเทคโนโลยีพื้นฐานอย่างต่อเนื่องและต่อยอดจากมัน ปริศนาสำหรับบทแรกได้รับการแก้ไขแล้ว และถึงแม้จะเป็นเพียงการคาดเดาคร่าวๆ ว่าอนาคตจะเป็นอย่างไรสำหรับเรา แต่ฉันก็ตื่นเต้นกับความเป็นไปได้ต่างๆ
ดังที่ได้กล่าวไปแล้ว ตลอดหลายปีที่ผ่านมาของความพยายามของฉัน ฉันต้องการรับทราบถึงสามโครงการหลักที่ให้ความหวังแก่ฉันตลอดเส้นทาง:
นี่เป็นโครงการทดลองในระยะเริ่มต้น ไอออนอาจเป็นอันตรายได้ ดังนั้นควรระมัดระวังกับสิ่งที่คุณพยายามสร้าง มันสามารถดำเนินการทำลายล้างบนคอมพิวเตอร์ของคุณได้ นอกจากนี้ โปรดคำนึงถึงงบประมาณของคุณด้วย: ตรวจสอบให้แน่ใจว่าคุณตรวจสอบและจัดงบประมาณสำหรับผู้ให้บริการรายใดก็ตามที่คุณใช้อยู่ ไอออนอาจสร้างเนื้อหาที่มีความยาวเกินคาด หรือการวนซ้ำไม่สิ้นสุด/ยาวเกินไป ซึ่งอาจทำให้ต้นทุนของคุณพุ่งสูงขึ้น
ซอฟต์แวร์นี้เผยแพร่ภายใต้ใบอนุญาต MIT ซึ่งรวมถึงข้อจำกัดความรับผิดชอบในการรับประกัน นอกจากนี้ ผู้เขียนจะไม่รับผิดชอบต่อความเสียหายหรือค่าใช้จ่ายใด ๆ ที่อาจเกิดขึ้นจากการใช้โครงการทดลองระยะเริ่มต้นนี้ ใช้ไอออนด้วยความเสี่ยงของคุณเอง