대화형 경험을 창출하는 것을 목표로 Nano Bot과 대화할 수 있는 음성 사용자 인터페이스입니다.
기존 가상 비서에 대한 현대적인 대안을 제공합니다. Picovoice를 활용하여 고도로 사용자 정의가 가능 합니다. OpenAI ChatGPT 및 Google Gemini와 같은 제공업체와 호환되는 Nano Bots가 지원하는 강력함 해킹 가능 하며 Lua, Fennel 또는 Clojure로 코딩할 수 있는 Nano 앱을 지원합니다.
비디오를 보려면 클릭하세요
비디오를 보려면 클릭하세요
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 앱에는 자체 종속성이 있을 수 있으므로 제대로 작동하려면 해당 앱이 설치되어 있는지 확인하세요.
OpenAI ChatGPT에서 Nano Bot을 사용하려면 OpenAI 플랫폼에서 얻을 수 있는 API 키가 필요합니다. 사용량에 따라 요금이 부과되는 유료 서비스입니다.
Google Gemini에서 Nano Bot을 사용할 계획이라면 여기를 확인하여 자격 증명을 얻는 방법을 알아보세요. 그것도 유료 서비스로요.
Picovoice Console에 등록하여 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
Babashka를 설치합니다:
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
먼저 REPL을 통해 Nano Bot을 테스트하여 Nano Bot이 올바르게 작동하는지 확인하세요.
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.
?> |
exit
입력하여 REPL을 종료할 수 있습니다.
Nano Bot이 제대로 작동하면 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
플랫폼을 통해 사용자 정의 깨우기 단어를 만들 수도 있습니다.
현재 Speech to Text 지원은 OpenAI의 Whisper에서 제공됩니다.
---
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
Ion 작동 중에 전달될 수 있는 21개의 개별 이벤트 각각은 기호(유니코드 이모티콘), 오디오 신호, 볼륨 및 메시지를 사용하여 개별적으로 사용자 정의할 수 있습니다.
어떤 이벤트에 오디오 신호가 있어야 하는지, 어떤 볼륨이 필요한지 등은 페르소나를 위해 생성하려는 경험에 따라 개인적으로 결정됩니다. 이벤트를 맞춤설정하는 방법은 다음과 같습니다.
event :
listening-and-waiting :
symbol :
message : Listening and waiting for a wake word.
audio : assets/audio/clue.wav
volume : 1
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
이온은 간단한 헤드폰과 마이크만 사용해도 잘 작동합니다. 개방형 환경의 경우 원하는 오디오 경험을 제공하는 스피커, 특히 무지향성 마이크나 회의실용으로 설계된 마이크와 같이 개방형 공간에 적합한 마이크에 투자하는 것을 고려할 수 있습니다.
pip install -r requirements.txt
실행하기 전에 Python 가상 환경을 생성해야 합니다.
python3 -m venv env
source env/bin/activate
Raspberry Pi에서 Python을 확인해 보세요.
Raspberry Pi의 콘솔 터미널에 유니코드 이모티콘을 표시하려면 유니코드 이모티콘을 지원하는 글꼴을 설치해야 합니다.
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
template.md
변경될 때 README.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
저는 10년 넘게 이것을 구축하려고 노력해 왔고 실패해 왔으며 마침내 제가 상상했던 수준에서 이를 가능하게 하는 퍼즐의 모든 핵심 조각을 갖게 되었습니다.
이 6가지 요소가 마법을 일으키며, 이 시점 이후에도 기본 기술을 지속적으로 개선하고 그 위에 구축하는 것이 중요합니다. 첫 번째 장의 퍼즐이 풀렸습니다. 비록 이것이 우리의 미래를 미리 엿볼 수 있는 것일 수도 있지만, 저는 그 가능성에 대해 매우 기쁩니다.
즉, 수년 동안 시도하면서 미래에 대한 희망을 준 세 가지 주요 프로젝트를 인정하고 싶습니다.
이는 실험적인 초기 단계 프로젝트입니다. Ion은 위험할 수 있으므로 빌드하려는 항목에 주의하세요. 컴퓨터에 파괴적인 작업을 실행할 수 있습니다. 또한 예산에 주의하십시오. 사용 중인 제공업체가 무엇이든 모니터링하고 예산을 책정하십시오. Ion은 예기치 않게 긴 콘텐츠나 무한/너무 긴 루프를 생성하여 비용이 급등할 수 있습니다.
이 소프트웨어는 보증 부인이 포함된 MIT 라이선스에 따라 배포됩니다. 또한 저자는 이 실험적인 초기 단계 프로젝트의 사용으로 인해 발생할 수 있는 어떠한 손해나 비용에 대해서도 책임을 지지 않습니다. Ion을 사용하는 데 따른 책임은 본인에게 있습니다.