Eine Sprachbenutzeroberfläche, die es Ihnen ermöglicht, mit einem Nano Bot zu sprechen, um ein Gesprächserlebnis zu schaffen.
Es bietet eine moderne Alternative zu herkömmlichen virtuellen Assistenten. Es ist hochgradig anpassbar und nutzt Picovoice. leistungsstark , unterstützt von Nano Bots, die mit Anbietern wie OpenAI ChatGPT und Google Gemini kompatibel sind; und hackbar und bietet Unterstützung für Nano-Apps, die in Lua, Fennel oder Clojure codiert werden können.
Klicken Sie hier, um das Video anzusehen
Klicken Sie hier, um das Video anzusehen
Wenn Sie einen Raspberry Pi verwenden, lesen Sie dessen spezifische Zusatzanweisungen.
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.
Denken Sie daran, dass einige Nano-Apps möglicherweise eigene Abhängigkeiten haben. Überprüfen Sie daher, ob Sie sie installiert haben, damit sie ordnungsgemäß funktionieren.
Um Nano Bots mit OpenAI ChatGPT nutzen zu können, benötigen Sie einen API-Schlüssel, den Sie von der OpenAI-Plattform erhalten können. Es handelt sich um einen kostenpflichtigen Service, der nach Verbrauch abgerechnet wird.
Wenn Sie planen, Nano Bots mit Google Gemini zu verwenden, erfahren Sie hier, wie Sie Ihre Anmeldeinformationen erhalten. Es ist auch ein kostenpflichtiger Dienst.
Erhalten Sie einen Zugriffsschlüssel für Picovoice, indem Sie sich bei der Picovoice-Konsole registrieren. Es ist für immer kostenlos für „Einzelpersonen, die es erkunden, experimentieren und bewerten“ und wird für andere Anwendungsfälle bezahlt.
Um Sprach- und Tonhinweise zu aktivieren, müssen Sie Audiodateien abspielen können, was die Installation von mpv erfordert:
sudo pacman -S mpv # Arch / Manjaro
sudo apt-get install mpv # Debian / Ubuntu / Raspberry Pi OS
sudo dnf install mpv # Fedora / CentOS / RHEL
Klonen Sie die erforderlichen Repositorys:
git clone https://github.com/gbaptista/ion.git
cd ion
git clone https://github.com/gbaptista/ion-assets.git assets
Holen Sie sich die erforderlichen Schlüssel aus dem Abschnitt „Anforderungen“ und richten Sie Ihre .env
Datei ein:
cp .env.example .env
Bearbeiten Sie den Inhalt der .env
Datei, um Ihre Schlüssel hinzuzufügen, Beispiel:
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
Alternativ können Sie die Umgebungsvariablen auf Ihr System exportieren:
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
Babashka installieren:
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bash
Auf Ihrem System müssen Ruby 3 (mit RubyGems) und Python 3 (mit PyPI) installiert sein.
Ruby und Bundler installieren:
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
Installieren und richten Sie die Nano Bots CLI ein:
sudo gem install nano-bots
Installieren Sie Ruby-Abhängigkeiten:
sudo bundle install
Installieren Sie Python-Abhängigkeiten:
Wenn Sie einen Raspberry Pi verwenden, lesen Sie dessen spezifische Zusatzanweisungen.
pip install -r requirements.txt
Stellen Sie zunächst sicher, dass Ihr Nano Bot ordnungsgemäß funktioniert, indem Sie ihn über REPL testen:
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.
?> |
Sie können die REPL verlassen, indem Sie exit
eingeben.
Wenn Nano Bots ordnungsgemäß funktionieren, starten Sie Ion:
./ion.sh static/personas/default.yml
Sie können das Weckwort Jarvis
zum Sprechen und Interagieren verwenden:
> ? 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.
Denken Sie daran, dass einige Nano-Apps möglicherweise eigene Abhängigkeiten haben. Überprüfen Sie daher, ob Sie sie installiert haben, damit sie ordnungsgemäß funktionieren.
Eine Persona -YAML-Datei enthält für Menschen lesbare Daten, die definieren, wie die Stimme klingen wird, benutzerdefinierte Konfigurationen für Dienstanbieter, Optimierungen der Sprach-Engine, Protokolle, Ereignisse und Audiohinweise sowie den Pfad für eine Nano Bot- Cartridge , der die erwarteten Ziele definiert Verhaltensweisen, Tools (Funktionen) und Einstellungen für Authentifizierung und Anbieternutzung.
Die Standardpersona ist unter static/personas/default.yml
verfügbar. Fühlen Sie sich frei, es zu ändern oder ein neues zu erstellen.
Sie können die Einstellungen anpassen, um ein besseres Erlebnis für Ihr spezifisches Szenario, Setup, Umgebung und Hardware zu erzielen:
---
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 unterstützt standardmäßig die folgenden Aktivierungswörter:
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
Sie können bei Bedarf mehrere Aktivierungswörter verwenden:
---
voice-engine :
provider :
settings :
porcupine :
keywords :
- jarvis
- alexa
sensitivities :
- 0.5
- 0.5
Sie können über ihre Plattform auch ein benutzerdefiniertes Aktivierungswort erstellen.
Die aktuelle Speech-to-Text-Unterstützung wird von OpenAIs Whisper bereitgestellt:
---
speech-to-text :
provider :
id : openai
credentials :
address : ENV/OPENAI_API_ADDRESS
access-token : ENV/OPENAI_API_KEY
settings :
model : whisper-1
Ermöglicht dem System die Text-zu-Sprache-Umwandlung von teilweise empfangenen Inhalten. Während Antworten durch Streaming generiert werden, versucht es, optimale Punkte abzuleiten, an denen wir genug Text haben, um Sprache zu erstellen und nach und nach neue Reden zu erstellen, die abgespielt werden sollen. Dies verbessert die Geschwindigkeit, da wir nicht auf die Bereitstellung der gesamten Antwort von Nano Bot warten müssen, bevor wir mit dem Text-to-Speech-Prozess beginnen.
---
text-to-speech :
settings :
fragment-speech : true
Sie können einen der drei unterstützten Text-to-Speech-Anbieter verwenden: OpenAI, AWS oder 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
Beispiele für mögliche Stimmen:
alloy, echo, fable, onyx, nova, shimmer
Für hochwertige Audioqualität können Sie model: tts-1-hd
verwenden, obwohl es langsamer und teurer ist.
Die Text-to-Speech-Funktion von OpenAI ist sprachunabhängig. Es kann mehrere Sprachen sprechen.
Überprüfen Sie alle verfügbaren Stimmen in der offiziellen Dokumentation.
---
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
Beispiele für mögliche brasilianisch-portugiesische Stimmen:
Camila, Vitoria, Thiago
Beispiele für mögliche Stimmen im amerikanischen Englisch:
Danielle, Matthew, Gregory, Joanna, Kendra, Kimberly, Salli, Joey, Ruth, Stephen
Überprüfen Sie alle verfügbaren Stimmen in der offiziellen Dokumentation.
Sie müssen Ihre AWS-Anmeldeinformationen zu Ihrer Umgebung hinzufügen.
Beachten Sie, dass Polly-Stimmen für bestimmte Sprachen konzipiert sind (z. B. pt-BR
, en-US
) und Sie die voice_id
korrekt mit dem Typ der Sprach- engine
( neural
oder standard
) abgleichen müssen.
Beachten Sie die Kosten, da neural
und standard
unterschiedliche Preise haben.
---
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
Alternativ können Sie, wenn Sie Application Default Credentials verwenden, den file-path
weglassen:
---
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
Beispiele für mögliche brasilianisch-portugiesische Stimmen:
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
Beispiele für mögliche Stimmen im amerikanischen Englisch:
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
Überprüfen Sie alle verfügbaren Stimmen in der offiziellen Dokumentation.
Möglicherweise müssen Sie den Pfad zu Ihrer Datei google-credentials.json
zu Ihrer Umgebung hinzufügen.
Beachten Sie, dass Google-Stimmen für bestimmte Sprachen konzipiert sind (z. B. pt-BR
, en-US
) und Sie den name
korrekt mit ssml_gender
und language_code
abgleichen müssen.
Beachten Sie die Kosten, da Neural- , Studio- und WaveNet -Stimmen unterschiedliche Preise haben.
Google bietet eine Vorschau von Polyglot Voices an, das mehrere Sprachen sprechen kann.
Der Ionenbetrieb basiert auf einem Ablauf von Ereignissen. Um diesen Fluss und alle damit verbundenen Ereignisse zu verstehen, können Sie sich das folgende Flussdiagramm ansehen:
Klicken Sie hier, um eine größere Ansicht zu erhalten
Barrierefreie Beschreibung aller möglichen Ereignisse:
Monitor-Engine:
> 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
Interaktions-Engine:
> 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
Andere Veranstaltungen:
> error-raised
Jedes der 21 möglichen unterschiedlichen Ereignisse, die während des Betriebs von Ion ausgelöst werden können, kann individuell mit Symbolen (Unicode-Emojis), Audiohinweisen, Lautstärke und Nachrichten angepasst werden.
Bei welchen Ereignissen es Audiohinweise geben sollte, in welcher Lautstärke usw., ist eine persönliche Entscheidung, die auf dem Erlebnis basiert, das Sie für Ihre Persona schaffen möchten. So können Sie ein Ereignis anpassen:
event :
listening-and-waiting :
symbol :
message : Listening and waiting for a wake word.
audio : assets/audio/clue.wav
volume : 1
In den Protokollen von Ion werden Symbole (Unicode-Emojis) und Nachrichten verwendet. Audio- und Lautstärkeeinstellungen werden für die Wiedergabe von Audiodateien verwendet, die im WAV-, OGG- oder MP3-Format vorliegen können.
Sie können die einzelnen Lautstärken für jedes Ereignis anpassen, um die unterschiedlichen Audiopegel zu normalisieren. Es wird empfohlen, keine Lautstärken über 1,0 einzustellen, da dies bei einigen Lautsprechern zu Verzerrungen im Ton führen kann. Stellen Sie die höchste Lautstärke idealerweise auf oder unter 1,0 ein und reduzieren Sie die anderen entsprechend, um das Gleichgewicht zu wahren.
Mit welcome-message-booted
kann eine Willkommensnachricht per Text-to-Speech abgespielt werden:
---
events :
welcome-message-booted :
symbol :
message : Welcome to Ion!
speak : true
volume : 1
Mit dem speaking-started
-Ereignis kann die Lautstärke der Text-to-Speech-Antwort-Audios eingestellt werden:
---
events :
speaking-started :
symbol : ?
message : ' Starting to speak: '
volume : 0.8
Mit einfachen Kopfhörern und einem Mikrofon funktioniert Ion gut. Für offene Umgebungen sollten Sie in Erwägung ziehen, in Lautsprecher zu investieren, die das gewünschte Audioerlebnis bieten, und insbesondere in ein Mikrofon, das für offene Räume geeignet ist, beispielsweise ein omnidirektionales Mikrofon oder ein Mikrofon, das für Konferenzräume konzipiert ist.
Bevor Sie pip install -r requirements.txt
ausführen, müssen Sie eine virtuelle Python-Umgebung erstellen:
python3 -m venv env
source env/bin/activate
Schauen Sie sich Python auf Raspberry Pi an.
Um Unicode-Emojis in Konsolenterminals auf einem Raspberry Pi anzuzeigen, müssen Sie eine Schriftart installieren, die Unicode-Emojis unterstützt:
sudo apt-get install fonts-noto-color-emoji
Sie müssen den Raspberry Pi neu starten, um die Ergebnisse zu sehen.
Wenn Sie einen Lautsprecher über einen Klinkenstecker an Ihren Computer anschließen, kann es zu Problemen mit der Audioinaktivität kommen, die dazu führen können, dass Sie „statisches Rauschen“ hören. Unter Linux können Sie dies beheben, indem Sie:
/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
Aktualisieren Sie die Datei template.md
und dann:
bb tasks/generate-readme.clj
Trick zum automatischen Aktualisieren von README.md
wenn sich template.md
ändert:
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
Trick für die Markdown-Live-Vorschau:
pip install -U markdown_live_preview
mlp README.md -p 8076
Wir setzen uns dafür ein, Ion zugänglich zu machen. Wenn Sie Probleme mit der Barrierefreiheit haben oder Verbesserungsvorschläge haben, können Sie gerne ein Problem ausfüllen!
1.1.0
Ich habe über ein Jahrzehnt lang versucht (und bin dabei gescheitert), dies aufzubauen, und endlich haben wir alle Kernteile des Puzzles, um es auf dem Niveau zu ermöglichen, das ich mir vorgestellt habe:
Diese sechs Zutaten machen die Magie möglich, und darüber hinaus geht es darum, die zugrunde liegende Technologie weiter zu verbessern und darauf aufzubauen. Das Rätsel für das erste Kapitel wurde gelöst, und obwohl dies wahrscheinlich nur ein erster Vorgeschmack darauf ist, was die Zukunft für uns bereithält, bin ich von den Möglichkeiten begeistert.
Dennoch möchte ich im Laufe der Jahre meiner Versuche drei Hauptprojekte würdigen, die mir auf dem Weg dorthin Hoffnung für die Zukunft gaben:
Es handelt sich um ein experimentelles Projekt im Frühstadium. Ionen können gefährlich sein. Seien Sie also vorsichtig mit dem, was Sie bauen möchten. Es könnte zerstörerische Aktionen auf Ihrem Computer ausführen. Denken Sie auch an Ihr Budget: Stellen Sie sicher, dass Sie den von Ihnen genutzten Anbieter überwachen und ein Budget festlegen. Ion kann unerwartet lange Inhalte oder unendliche/zu lange Schleifen erzeugen, die Ihre Kosten in die Höhe schnellen lassen könnten.
Diese Software wird unter der MIT-Lizenz vertrieben, die einen Gewährleistungsausschluss beinhaltet. Darüber hinaus übernehmen die Autoren keine Verantwortung für etwaige Schäden oder Kosten, die durch die Nutzung dieses experimentellen, frühen Projekts entstehen könnten. Die Nutzung von Ion erfolgt auf eigene Gefahr.