2 : Ajout du module de recherche internet
This commit is contained in:
parent
d79e3dbf35
commit
0724c49ae7
23 changed files with 360 additions and 0 deletions
0
-keyphrase
Normal file
0
-keyphrase
Normal file
0
-time
Normal file
0
-time
Normal file
13
README.md
Normal file
13
README.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
# requirements
|
||||
/!\ You need to have the [Kalliope Core](https://github.com/kalliope-project/kalliope) installed before cloning this starter kit.
|
||||
|
||||
# kalliope starter config fr
|
||||
|
||||
This is an out of the box working configuration for french kalliope user
|
||||
|
||||
How to use
|
||||
```bash
|
||||
git clone https://github.com/kalliope-project/kalliope_starter_fr.git
|
||||
cd kalliope_starter_fr
|
||||
kalliope start
|
||||
```
|
22
brain.yml
Executable file
22
brain.yml
Executable file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
|
||||
- includes:
|
||||
- brains/say.yml
|
||||
- brains/systemdate.yml
|
||||
- brains/neurotransmitter.yml
|
||||
- brains/recherche.yml
|
||||
- brains/kill.yml
|
||||
|
||||
- name: "default-synapse"
|
||||
signals:
|
||||
- order: "default-synapse"
|
||||
neurons:
|
||||
- say:
|
||||
message:
|
||||
- "Je n'ai pas compris vôtre ordre"
|
||||
- "Je ne connais pas cet ordre"
|
||||
- "Veuillez renouveller votre ordre"
|
||||
- "Veuillez reformuller s'il vous plait"
|
||||
- "Je n'ai pas saisi cet ordre"
|
||||
|
||||
|
9
brains/kill.yml
Normal file
9
brains/kill.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
|
||||
- name: "stop-kalliope"
|
||||
signals:
|
||||
- order: "stop"
|
||||
neurons:
|
||||
- say:
|
||||
message: "Au revoir"
|
||||
- kill_switch
|
40
brains/neurotransmitter.yml
Normal file
40
brains/neurotransmitter.yml
Normal file
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
- name: "synapse1"
|
||||
signals:
|
||||
- order: "pose moi une question"
|
||||
- order: "pose-moi une question"
|
||||
neurons:
|
||||
- say:
|
||||
message: "aimez vous les frites?"
|
||||
- neurotransmitter:
|
||||
from_answer_link:
|
||||
- synapse: "synapse2"
|
||||
answers:
|
||||
- "absolument"
|
||||
- "peut-être"
|
||||
- synapse: "synapse3"
|
||||
answers:
|
||||
- "pas du tout"
|
||||
default: "synapse4"
|
||||
|
||||
- name: "synapse2"
|
||||
signals:
|
||||
- order: "synapse2"
|
||||
neurons:
|
||||
- say:
|
||||
message: "Vous aimez les frites! Moi aussi!"
|
||||
|
||||
|
||||
- name: "synapse3"
|
||||
signals:
|
||||
- order: "synapse3"
|
||||
neurons:
|
||||
- say:
|
||||
message: "vous n'aimez pas les frites. c'est pas grave."
|
||||
|
||||
- name: "synapse4"
|
||||
signals:
|
||||
- order: "synapse4"
|
||||
neurons:
|
||||
- say:
|
||||
message: "Je n'ai pas compris votre réponse"
|
11
brains/recherche.yml
Normal file
11
brains/recherche.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
- name: "search-fr"
|
||||
signals:
|
||||
- order: "recherche {{ search }}"
|
||||
neurons:
|
||||
- say:
|
||||
message:
|
||||
- "Recherche effectuee"
|
||||
- search:
|
||||
args:
|
||||
- search
|
||||
async: False
|
46
brains/say.yml
Normal file
46
brains/say.yml
Normal file
|
@ -0,0 +1,46 @@
|
|||
---
|
||||
- name: "say-hello-fr"
|
||||
signals:
|
||||
- order: "Bonjour"
|
||||
neurons:
|
||||
- say:
|
||||
message:
|
||||
- "Bonjour monsieur"
|
||||
|
||||
- name: "open-software-fr"
|
||||
signals:
|
||||
- order: "ouvre moi {{ application }}"
|
||||
- order: "ouvre-moi {{ application }}"
|
||||
- order: "ouvrir {{ application }}"
|
||||
- order: "ouvre {{ application }}"
|
||||
- order: "ouvres {{ application }}"
|
||||
neurons:
|
||||
- say:
|
||||
message:
|
||||
- "Le logiciel est ouvert"
|
||||
- run:
|
||||
args:
|
||||
- application
|
||||
async: True
|
||||
|
||||
- name: "open-google-fr"
|
||||
signals:
|
||||
- order: "google"
|
||||
neurons:
|
||||
- say:
|
||||
message:
|
||||
- "Google est ouvert"
|
||||
- shell:
|
||||
cmd: "firefox http://www.google.fr/&"
|
||||
async: True
|
||||
|
||||
- name: "open-facebook-fr"
|
||||
signals:
|
||||
- order: "facebook"
|
||||
neurons:
|
||||
- say:
|
||||
message:
|
||||
- "Facebook est ouvert"
|
||||
- shell:
|
||||
cmd: "firefox http://fr-fr.facebook.com/&"
|
||||
async: True
|
23
brains/systemdate.yml
Normal file
23
brains/systemdate.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
|
||||
- name: "say-local-date"
|
||||
signals:
|
||||
- order: "quelle heure est-il"
|
||||
neurons:
|
||||
- systemdate:
|
||||
say_template:
|
||||
- "il est {{ hours }} heure et {{ minutes }} minute"
|
||||
|
||||
- name: "say-local-date-from-template"
|
||||
signals:
|
||||
- order: "quelle date sommes-nous"
|
||||
neurons:
|
||||
- systemdate:
|
||||
file_template: "templates/systemdate_template.j2"
|
||||
|
||||
- name: "gouter-time"
|
||||
signals:
|
||||
- order: "est-ce qu'il est l'heure du goûter"
|
||||
neurons:
|
||||
- systemdate:
|
||||
file_template: "templates/systemdate_template_gouter.j2"
|
5
file
Normal file
5
file
Normal file
|
@ -0,0 +1,5 @@
|
|||
sudo apt-get install swig libpulse-dev
|
||||
sudo apt install libttspico-utils
|
||||
sudo apt install libatlas3-base
|
||||
sudo apt install libopenblas-base
|
||||
sudo apt install libblas3
|
0
res
Normal file
0
res
Normal file
4
resources/neurons/.gitignore
vendored
Normal file
4
resources/neurons/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
4
resources/stt/.gitignore
vendored
Normal file
4
resources/stt/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
4
resources/tts/.gitignore
vendored
Normal file
4
resources/tts/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
150
settings.yml
Normal file
150
settings.yml
Normal file
|
@ -0,0 +1,150 @@
|
|||
---
|
||||
# ---------------------------
|
||||
# Kalliope default settings
|
||||
# Use YAML syntax
|
||||
# ---------------------------
|
||||
|
||||
# ---------------------------
|
||||
# Trigger
|
||||
# ---------------------------
|
||||
# This is the trigger that will catch your magic work to wake up Kalliope
|
||||
default_trigger: "snowboy"
|
||||
|
||||
# Trigger engine configuration
|
||||
# Available engine are:
|
||||
# - snowboy
|
||||
triggers:
|
||||
- snowboy:
|
||||
pmdl_file: "trigger/kalliope-FR-20samples.pmdl"
|
||||
|
||||
|
||||
# ---------------------------
|
||||
# Speech to text
|
||||
# ---------------------------
|
||||
|
||||
# This is the STT that will be used by default
|
||||
default_speech_to_text: "google"
|
||||
|
||||
# Spreech to Text engines configuration
|
||||
# Available engine are:
|
||||
# - google (via SpeechRecognition)
|
||||
# -
|
||||
speech_to_text:
|
||||
- cmusphinx:
|
||||
-hmm: "/usr/local/lib/python2.7/dist-packages/pocketsphinx/model/fr"
|
||||
-lm: "/usr/local/lib/python2.7/dist-packages/pocketsphinx/model/fr.lm.bin"
|
||||
-dict: "/usr/local/lib/python2.7/dist-packages/pocketsphinx/model/fr.dict"
|
||||
- google:
|
||||
language: "fr-FR"
|
||||
- wit:
|
||||
key: "B5JI3YUSLYOYWNIDBINBVM34XUODME2K"
|
||||
- bing: # API not working : credential fails ..
|
||||
key: "9e48ddaf75904838bedc11aea6b36fb0"
|
||||
- apiai: # Fail retriving the text from the audio file ..
|
||||
key: "e0cbff154af44944a6b9f82c0668b527"
|
||||
language: "fr"
|
||||
- houndify: # In the online documentation but Not implemented yet in the speech recognition lib ..?
|
||||
key: "7zj90T7qAV74OYXk4X4vI2Xhk7wPsJu4aEZ0G5Ll-BMmV1JGtFpCxtSH9SmTY4G3bpEJ7a5y_GTQid-CAKI6vw=="
|
||||
client_id: "lN4JXeaSticbSo9-llczbA=="
|
||||
|
||||
|
||||
# ---------------------------
|
||||
# Text to speech
|
||||
# ---------------------------
|
||||
# This is the default TTS that will be used by Kalliope to talk.
|
||||
default_text_to_speech: "pico2wave"
|
||||
# where we store generated audio files from TTS engine to reuse them
|
||||
cache_path: "/tmp/kalliope_tts_cache"
|
||||
|
||||
# Text to Spreech engines configuration
|
||||
# Available engine are:
|
||||
# - pico2wave
|
||||
# - voxygen
|
||||
text_to_speech:
|
||||
- espeak:
|
||||
voice: "fr"
|
||||
variant: "f1"
|
||||
cache: True
|
||||
- pico2wave:
|
||||
language: "fr-FR"
|
||||
cache: True
|
||||
- voxygen:
|
||||
voice: "Agnes"
|
||||
cache: True
|
||||
- acapela:
|
||||
language: "sonid15"
|
||||
voice: "Manon"
|
||||
cache: True
|
||||
- googletts:
|
||||
language: "fr"
|
||||
cache: True
|
||||
- voicerss:
|
||||
language: "fr-fr"
|
||||
cache: True
|
||||
|
||||
|
||||
# ---------------------------
|
||||
# Wake up answers
|
||||
# ---------------------------
|
||||
# When Kalliope detect the hotword/trigger, he will select randomly a phrase in the following list
|
||||
# to notify the user that he's listening for orders
|
||||
random_wake_up_answers:
|
||||
- "Oui monsieur?"
|
||||
- "Je vous écoute"
|
||||
- "Monsieur?"
|
||||
- "Que puis-je faire pour vous?"
|
||||
- "J'écoute"
|
||||
- "Oui?"
|
||||
|
||||
# You can play a sound when Kalliope detect the hotword/trigger instead of saying something from
|
||||
# the `random_wake_up_answers`. To active the 'random_wake_up_sounds' you must comment out the 'random_wake_up_answers'
|
||||
# The file must be .wav or .mp3 format.
|
||||
random_wake_up_sounds:
|
||||
- "trigger/dong.wav"
|
||||
# - "/my/personal/full/path/my_file.mp3"
|
||||
|
||||
# ---------------------------
|
||||
# On ready notification
|
||||
# ---------------------------
|
||||
# This section is used to notify the user when Kalliope is waiting for a trigger detection by playing a sound or speak a sentence out loud
|
||||
|
||||
# This parameter define if you play the on ready answer:
|
||||
# - always: every time Kalliope is ready to be awaken
|
||||
# - never: never play a sound or sentences when kalliope is ready
|
||||
# - once: at the first start of Kalliope
|
||||
play_on_ready_notification: "never"
|
||||
|
||||
# The on ready notification can be a sentence. Place here a sentence or a list of sentence. If you set a list, one sentence will be picked up randomly
|
||||
on_ready_answers:
|
||||
- "en attente"
|
||||
|
||||
# You can play a sound instead of a sentence.
|
||||
# Remove the `on_ready_answers` parameters by commenting it out and use this one instead.
|
||||
# Place here the path of the sound file. Files must be .wav or .mp3 format.
|
||||
on_ready_sounds:
|
||||
# - "sounds/ding.wav"
|
||||
- "sounds/dong.wav"
|
||||
|
||||
# ---------------------------
|
||||
# Rest API
|
||||
# ---------------------------
|
||||
rest_api:
|
||||
active: True
|
||||
port: 5000
|
||||
password_protected: True
|
||||
login: admin
|
||||
password: secret
|
||||
|
||||
# ---------------------------
|
||||
# Default Synapse
|
||||
# ---------------------------
|
||||
# Specify an optional default synapse response in case your order is not found.
|
||||
default_synapse: "default-synapse"
|
||||
|
||||
# ---------------------------
|
||||
# resource directory path
|
||||
# ---------------------------
|
||||
resource_directory:
|
||||
neuron: "resources/neurons"
|
||||
stt: "resources/stt"
|
||||
tts: "resources/tts"
|
7
templates/rss_new_lemonde.j2
Normal file
7
templates/rss_new_lemonde.j2
Normal file
|
@ -0,0 +1,7 @@
|
|||
Voici les info de {{ feed }}
|
||||
|
||||
{% set count = 1 %}
|
||||
{% for item in items %}
|
||||
Info {{ count }}. {{ item.title }}
|
||||
{% set count = count + 1 %}
|
||||
{% endfor %}
|
4
templates/systemdate_template.j2
Normal file
4
templates/systemdate_template.j2
Normal file
|
@ -0,0 +1,4 @@
|
|||
{% set day_of_week = {"0": "dimanche", "1": "lundi", "2": "mardi", "3": "mercredi", "4": "jeudi", "5": "vendredi", "6": "samedi"}[weekday] | default("") -%}
|
||||
{% set month_word = {"1": "janvier", "2": "février", "3": "mars", "4": "avril", "5": "mai", "6": "juin", "7": "juillet", "8": "août", "9": "septembre", "10": "octobre", "11": "novembre", "12": "décembre"}[month] | default("") -%}
|
||||
|
||||
Nous sommes le {{ day_of_week }} {{ day_month }} {{ month_word }} {{ year }}
|
5
templates/systemdate_template_gouter.j2
Normal file
5
templates/systemdate_template_gouter.j2
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% if hours|int() in range(16,17) %}
|
||||
oui il est l'heure
|
||||
{% else %}
|
||||
non pas encore
|
||||
{% endif %}
|
12
templates/wikipedia_search.j2
Normal file
12
templates/wikipedia_search.j2
Normal file
|
@ -0,0 +1,12 @@
|
|||
{% if returncode == "DisambiguationError" %}
|
||||
La recherche retourne les pages suivantes:
|
||||
{% if may_refer is not none %}
|
||||
{% for page in may_refer %}
|
||||
{{ page }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% elif returncode == "PageError" %}
|
||||
La recherche n'a rien donnée
|
||||
{% else %}
|
||||
{{ summary }}
|
||||
{% endif %}
|
1
test
Normal file
1
test
Normal file
|
@ -0,0 +1 @@
|
|||
pocketsphinx_continuous -hmm /usr/local/lib/python2.7/dist-packages/pocketsphinx/model/fr -lm /usr/local/lib/python2.7/dist-packages/pocketsphinx/model/fr.lm.bin -dict /usr/local/lib/python2.7/dist-packages/pocketsphinx/model/fr.dict -infile test.wav -samprate 48000 -nfft 2048
|
BIN
test.wav
Normal file
BIN
test.wav
Normal file
Binary file not shown.
BIN
trigger/dong.wav
Normal file
BIN
trigger/dong.wav
Normal file
Binary file not shown.
BIN
trigger/kalliope-FR-20samples.pmdl
Normal file
BIN
trigger/kalliope-FR-20samples.pmdl
Normal file
Binary file not shown.
Loading…
Reference in a new issue