Antarmuka pengguna suara yang memungkinkan Anda berbicara dengan Nano Bot, yang bertujuan untuk menciptakan pengalaman percakapan.
Ini memberikan alternatif modern untuk asisten virtual tradisional. Ini sangat dapat disesuaikan , memanfaatkan Picovoice; kuat , didukung oleh Nano Bots, yang kompatibel dengan penyedia seperti OpenAI ChatGPT dan Google Gemini; dan dapat diretas , menawarkan dukungan untuk Aplikasi Nano yang dapat dikodekan dalam Lua, Adas, atau Clojure.
klik untuk menonton videonya
klik untuk menonton videonya
Jika Anda menjalankan Raspberry Pi, periksa instruksi tambahan spesifiknya.
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.
Ingatlah bahwa beberapa Aplikasi Nano mungkin memiliki ketergantungannya sendiri, jadi periksa apakah Anda telah menginstalnya agar berfungsi dengan baik.
Untuk menggunakan Nano Bots dengan OpenAI ChatGPT, Anda memerlukan Kunci API, yang dapat diperoleh dari Platform OpenAI. Ini adalah layanan berbayar yang dikenakan biaya berdasarkan konsumsi.
Jika Anda berencana menggunakan Nano Bots dengan Google Gemini, periksa di sini untuk mempelajari cara mendapatkan kredensial Anda. Ini juga merupakan layanan berbayar.
Dapatkan Kunci Akses untuk Picovoice dengan mendaftar di Konsol Picovoice. Gratis Selamanya untuk "individu yang mengeksplorasi, bereksperimen, dan mengevaluasi" , dan berbayar untuk kasus penggunaan lainnya.
Untuk mengaktifkan isyarat ucapan dan suara, Anda harus dapat memutar file audio, yang memerlukan instalasi mpv:
sudo pacman -S mpv # Arch / Manjaro
sudo apt-get install mpv # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install mpv # Fedora / CentOS / RHEL
Kloning repositori yang diperlukan:
git clone https://github.com/gbaptista/ion.git
cd ion
git clone https://github.com/gbaptista/ion-assets.git assets
Dapatkan kunci yang diperlukan dari bagian Persyaratan dan atur file .env
Anda:
cp .env.example .env
Edit konten file .env
untuk menambahkan kunci Anda, contoh:
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
Alternatifnya, Anda dapat mengekspor variabel lingkungan di sistem Anda:
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
Instal Babashka:
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bash
Anda harus menginstal Ruby 3 (dengan RubyGems) dan Python 3 (dengan PyPI) di sistem Anda.
Instal Ruby dan 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
Instal dan atur Nano Bots CLI:
sudo gem install nano-bots
Instal dependensi Ruby:
sudo bundle install
Instal dependensi Python:
Jika Anda menjalankan Raspberry Pi, periksa instruksi tambahan spesifiknya.
pip install -r requirements.txt
Mulailah dengan memastikan bahwa Nano Bot Anda beroperasi dengan benar dengan mengujinya melalui 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.
?> |
Anda dapat keluar dari REPL dengan mengetik exit
.
Dengan Nano Bots berfungsi dengan baik, mulai Ion:
./ion.sh static/personas/default.yml
Anda dapat menggunakan kata bangun Jarvis
untuk berbicara dan berinteraksi:
> ? 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.
Ingatlah bahwa beberapa Aplikasi Nano mungkin memiliki ketergantungannya sendiri, jadi periksa apakah Anda telah menginstalnya agar berfungsi dengan baik.
File persona YAML berisi data yang dapat dibaca manusia yang menentukan bagaimana suara akan terdengar, konfigurasi khusus untuk penyedia layanan, penyesuaian mesin suara, log, peristiwa, dan isyarat audio, serta jalur untuk kartrid Nano Bot yang menentukan tujuan, yang diharapkan perilaku, alat (fungsi), dan pengaturan untuk otentikasi dan pemanfaatan penyedia.
Persona default tersedia di static/personas/default.yml
. Jangan ragu untuk memodifikasinya atau membuat yang baru.
Anda dapat mengubah pengaturan untuk mendapatkan pengalaman yang lebih baik untuk skenario, pengaturan, lingkungan, dan perangkat keras spesifik Anda:
---
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, secara default, mendukung kata-kata bangun berikut:
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
Anda dapat menggunakan beberapa kata bangun jika Anda ingin:
---
voice-engine :
provider :
settings :
porcupine :
keywords :
- jarvis
- alexa
sensitivities :
- 0.5
- 0.5
Anda juga dapat membuat kata bangun khusus melalui platform mereka.
Dukungan Speech to Text saat ini disediakan oleh Whisper OpenAI:
---
speech-to-text :
provider :
id : openai
credentials :
address : ENV/OPENAI_API_ADDRESS
access-token : ENV/OPENAI_API_KEY
settings :
model : whisper-1
Memungkinkan sistem untuk melakukan text-to-speech pada konten yang diterima sebagian. Saat jawaban dihasilkan melalui streaming, ia mencoba menyimpulkan titik optimal di mana kita memiliki cukup teks untuk membuat pidato dan secara bertahap membuat pidato baru untuk diputar. Hal ini meningkatkan kecepatan, karena kita tidak perlu menunggu seluruh jawaban dari Nano Bot diberikan sebelum memulai proses text-to-speech.
---
text-to-speech :
settings :
fragment-speech : true
Anda dapat menggunakan salah satu dari tiga penyedia text-to-speech yang didukung: OpenAI, AWS, atau 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
Contoh kemungkinan suara:
alloy, echo, fable, onyx, nova, shimmer
Untuk audio berkualitas tinggi, Anda dapat menggunakan model: tts-1-hd
, meskipun lebih lambat dan lebih mahal.
Text-to-speech OpenAI tidak bergantung pada bahasa; ia dapat berbicara dalam berbagai bahasa.
Periksa semua suara yang tersedia di dokumentasi resmi.
---
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
Contoh kemungkinan suara Portugis Brasil:
Camila, Vitoria, Thiago
Contoh kemungkinan suara bahasa Inggris Amerika:
Danielle, Matthew, Gregory, Joanna, Kendra, Kimberly, Salli, Joey, Ruth, Stephen
Periksa semua suara yang tersedia di dokumentasi resmi.
Anda perlu menambahkan kredensial AWS ke lingkungan Anda.
Perhatikan bahwa suara Polly dirancang untuk bahasa tertentu (misalnya, pt-BR
, en-US
), dan Anda harus mencocokkan voice_id
dengan jenis engine
suara ( neural
atau standard
).
Waspadai biayanya, karena harga suara neural
dan suara standard
berbeda.
---
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
Alternatifnya, jika Anda menggunakan Kredensial Default Aplikasi , Anda dapat menghilangkan 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
Contoh kemungkinan suara Portugis Brasil:
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
Contoh kemungkinan suara bahasa Inggris Amerika:
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
Periksa semua suara yang tersedia di dokumentasi resmi.
Anda mungkin perlu menambahkan jalur ke file google-credentials.json
ke lingkungan Anda.
Perhatikan bahwa suara Google dirancang untuk bahasa tertentu (misalnya, pt-BR
, en-US
), dan Anda harus mencocokkan name
dengan ssml_gender
dan language_code
dengan benar.
Waspadai biayanya, karena harga suara Neural , Studio , dan WaveNet berbeda.
Google menawarkan pratinjau Polyglot Voices , yang dapat berbicara dalam berbagai bahasa.
Operasi ion didasarkan pada aliran peristiwa. Untuk memahami alur ini dan semua peristiwa terkait, Anda dapat memeriksa diagram alur berikut:
klik untuk melihat dalam ukuran lebih besar
Deskripsi yang dapat diakses tentang semua kemungkinan kejadian:
Mesin Monitor:
> 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
Mesin Interaksi:
> 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
Acara Lainnya:
> error-raised
Masing-masing dari 21 kemungkinan peristiwa berbeda yang dapat dikirimkan selama pengoperasian Ion, dapat disesuaikan secara individual dengan simbol (emoji Unicode), isyarat audio, volume, dan pesan.
Acara mana yang harus memiliki isyarat audio, berapa volumenya, dll., akan menjadi keputusan pribadi berdasarkan pengalaman yang Anda coba ciptakan untuk persona Anda. Berikut cara menyesuaikan acara:
event :
listening-and-waiting :
symbol :
message : Listening and waiting for a wake word.
audio : assets/audio/clue.wav
volume : 1
Simbol (Emoji Unicode) dan pesan digunakan dalam log Ion. Pengaturan audio dan volume digunakan untuk memutar file audio, bisa dalam format WAV, OGG, atau MP3.
Anda dapat menyesuaikan volume individual untuk setiap acara untuk menormalkan berbagai tingkat audio. Rekomendasinya adalah tidak menggunakan volume di atas 1.0, karena hal ini dapat menimbulkan distorsi pada audio pada beberapa speaker. Idealnya, atur volume tertinggi Anda pada atau di bawah 1,0, dan kurangi volume lainnya untuk menjaga keseimbangan.
welcome-message-booted
dapat digunakan untuk memutar pesan selamat datang menggunakan text-to-speech:
---
events :
welcome-message-booted :
symbol :
message : Welcome to Ion!
speak : true
volume : 1
Acara speaking-started
dapat digunakan untuk mengatur volume audio jawaban text-to-speech:
---
events :
speaking-started :
symbol : ?
message : ' Starting to speak: '
volume : 0.8
Ion bekerja dengan baik menggunakan headphone sederhana dan mikrofon. Untuk lingkungan terbuka, Anda mungkin ingin mempertimbangkan untuk berinvestasi pada speaker yang akan memberikan pengalaman audio yang Anda cari dan, khususnya, mikrofon yang sesuai untuk ruang terbuka, seperti mikrofon omnidirection atau yang dirancang untuk ruang konferensi.
Sebelum menjalankan pip install -r requirements.txt
, Anda perlu membuat lingkungan virtual Python:
python3 -m venv env
source env/bin/activate
Lihat Python di Raspberry Pi.
Untuk menampilkan emoji Unicode di terminal konsol pada Raspberry Pi, Anda perlu menginstal font yang mendukung emoji Unicode:
sudo apt-get install fonts-noto-color-emoji
Anda perlu me-restart Raspberry Pi untuk melihat hasilnya.
Jika Anda menyambungkan speaker ke komputer menggunakan colokan jack, Anda mungkin mengalami masalah dengan ketidakaktifan audio yang dapat menyebabkan pendengaran "suara statis". Di Linux, Anda dapat memperbaikinya dengan:
/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
Perbarui file template.md
dan kemudian:
bb tasks/generate-readme.clj
Trik untuk memperbarui README.md
secara otomatis ketika template.md
berubah:
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
Trik untuk Pratinjau Langsung Penurunan Harga:
pip install -U markdown_live_preview
mlp README.md -p 8076
Kami berkomitmen untuk membuat Ion dapat diakses. Jika Anda menghadapi masalah aksesibilitas atau memiliki rekomendasi perbaikan, jangan ragu untuk mengisi masalah!
1.1.0
Saya telah mencoba (dan gagal) untuk membangun ini selama lebih dari satu dekade, dan kami akhirnya memiliki semua bagian inti dari teka-teki untuk mewujudkannya pada tingkat yang saya bayangkan:
Keenam bahan ini mewujudkan keajaiban, dan lebih dari itu, yang terpenting adalah terus meningkatkan teknologi yang mendasarinya dan mengembangkannya. Teka-teki untuk bab pertama telah terpecahkan, dan meskipun ini mungkin hanya gambaran awal tentang masa depan kita, saya sangat senang dengan kemungkinan yang ada.
Meskipun demikian, selama bertahun-tahun upaya saya, saya ingin mengucapkan terima kasih kepada tiga proyek utama yang selama ini memberi saya harapan untuk masa depan:
Ini adalah proyek eksperimental tahap awal. Ion mungkin berbahaya, jadi berhati-hatilah dengan apa yang Anda coba buat; itu bisa melakukan tindakan destruktif pada komputer Anda. Juga, perhatikan anggaran Anda: Pastikan Anda memantau dan menganggarkan untuk penyedia apa pun yang Anda gunakan. Ion dapat menghasilkan konten yang panjangnya tidak terduga atau loop yang tidak terbatas/terlalu panjang yang dapat menyebabkan biaya Anda meroket.
Perangkat lunak ini didistribusikan di bawah Lisensi MIT, yang mencakup penafian garansi. Selain itu, penulis tidak bertanggung jawab atas segala kerusakan atau biaya yang mungkin timbul dari penggunaan proyek eksperimental tahap awal ini. Gunakan Ion dengan risiko Anda sendiri.