Kalliope est un assistant vocal personnel, afin de vous la jouer à la Tony Startk… Enfin presque…
Il peut, par exemple, vous permettre de récupérer des données en ligne (wikipedia, météo, email, agenda, twitter, fb, rss, ou simplement en lisant une page web), de gérer une todolist, d’écouter de la musique (mpd / mopidy) ou encore de piloter votre installation domotique (Philips Hue, LoxSControl, Domoticz, ou simple request http(s)), le tout à la voix.
Un site est disponible avec des vidéo courtes de démo des différentes fonctionnalités (appelées neurones) disponibles (plus de 20 neurones dispo pour le moment): https://kalliope-project.github.io.
Kalliopé est très modulaire (choix du STT, du TTS, des modules actifs, de la langue, …). Vous pouvez bien entendu développer vos propres neurones pour enrichir votre assistant et les proposer à la communauté. L’installation s’effectue sur Linux (Ubuntu/Debian/Raspberry Pi).
Il est écrit en Python et est sous licence MIT. Le code est disponible sur GitHub ici: https://github.com/kalliope-project/kalliope.
Une démo en vidéo avec quelques modules.
Dans la mythologie grecque, Calliope (en grec ancien Καλλιόπη / Kalliópê, « belle voix ») était la Muse de la Poésie épique et de l’Éloquence.
L’idée est de composer le cerveau de votre bot à l’aide de synapses, qui sont composés d’une liste de neurones (plugins).
Un synapse est donc un couple composé d’une entrée, que l’on appel un signal, et d’une liste de plugin à utiliser en sortie, que l’on appel neurone. Tout cela sous la forme d’une configuration dans un fichier YAML.
Prenons un exemple, vous voulez que Kalliopé vous dise « bonjour monsieur » quand vous lui dites vous même « bonjour ». Voici le synapse dans le fichier « brain » que vous allez alors utiliser:
1 2 3 4 5 6 7 8 |
- name: "say-hello" signals: - order: "dit bonjour" neurons: - say: message: - "Bonjour monsieur" - "Bonjour maitre" |
bjr je n arrive pas a paramétré kalliope dans kali linux une fois que je le démarre des que je lance un commande il me retourne cette erreur.
2017-02-07 02:20:46,382 :: INFO :: Keyword 1 detected at time: 2017-02-07 02:20:46
Traceback (most recent call last):
File « /usr/local/bin/kalliope », line 9, in
load_entry_point(‘kalliope==0.4.2’, ‘console_scripts’, ‘kalliope’)()
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/__init__.py », line 92, in main
MainController(brain=brain)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/MainController.py », line 81, in __init__
self.start_trigger()
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 251, in trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 638, in _process
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 276, in _trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 177, in execute
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 188, in _change_state
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 62, in enter
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 621, in _callback
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/MainController.py », line 92, in start_trigger_process
self.next_state()
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 251, in trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 638, in _process
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 276, in _trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 177, in execute
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 188, in _change_state
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 62, in enter
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 621, in _callback
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/MainController.py », line 102, in unpausing_trigger_process
self.next_state()
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 251, in trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 638, in _process
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 276, in _trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 177, in execute
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 188, in _change_state
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 62, in enter
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 621, in _callback
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/MainController.py », line 119, in play_ready_sound_process
self.next_state()
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 251, in trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 638, in _process
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 276, in _trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 177, in execute
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 188, in _change_state
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 62, in enter
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 621, in _callback
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/MainController.py », line 129, in waiting_for_trigger_callback_thread
self.next_state()
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 251, in trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 638, in _process
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 276, in _trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 177, in execute
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 188, in _change_state
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 62, in enter
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 621, in _callback
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/MainController.py », line 162, in start_order_listener_thread
self.next_state()
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 251, in trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 638, in _process
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 276, in _trigger
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 177, in execute
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 188, in _change_state
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 62, in enter
File « build/bdist.linux-x86_64/egg/transitions/core.py », line 621, in _callback
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/MainController.py », line 172, in play_wake_up_answer_thread
Say(message=self.settings.random_wake_up_answers)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/neurons/say/say.py », line 11, in __init__
self.say(self.message)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/NeuronModule.py », line 140, in say
tts_module_instance.say(tts_message)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/tts/pico2wave/pico2wave.py », line 22, in say
self.generate_and_play(words, self._generate_audio_file)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/core/TTS/TTSModule.py », line 100, in generate_and_play
generate_audio_function_from_child()
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.4.2-py2.7.egg/kalliope/tts/pico2wave/pico2wave.py », line 46, in _generate_audio_file
subprocess.call(final_command, stderr=sys.stderr)
File « /usr/lib/python2.7/subprocess.py », line 522, in call
return Popen(*popenargs, **kwargs).wait()
File « /usr/lib/python2.7/subprocess.py », line 710, in __init__
errread, errwrite)
File « /usr/lib/python2.7/subprocess.py », line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Kali ne fait tout simplement pas partie des distros supportées. Désolé. Apres vous pouvez également ouvrir une issue sur le Github. En cas de problème sur une distro supportées.
Kali c’est debian donc c’et supporté
sudo apt get mplayer devrait résoudre ton problème
Bonjour,
Est-il envisagé d’avoir une img a graver directement sur la carte du rpi?
Je tourne sous RPI3 B avec un raspbian et j’avoue avoir eu du mal a l’installer, novice que je suis, et de bien parametrer.
Par ailleur est-il possible de changer son nom Kalliope par un autre? Exemple: Jarvis a la place de Kalliope (je sais la voix est féminine mais ce n’est qu’un exemple)
Question idiote… Normal que sphyx soit aussi lent?
Je trouve ce projet bien plus complet que le reste qu’on peut trouver sur le net tel que gladys ou bien l’actuel jarvis-like qui n’est qu’en anglais et j’aimerais le voir grandir encore plus.
Bravo a cette équipe qui bosse dessus,
Cordialement,
L’image est dispo sur le Github du projet.
Bonsoir,
je viens vers vous car je commence à devenir fou depuis plusieurs jours :
j’ai d’abord essayé d’installer Kalliope 0.5.1, avec l’image, impossible, j’ai un kernel panic
En manuel avec un raspbian fraichement installé, impossible d’installer le speech recognition
je passe sur la version 0.5.0, tout s’exécute impec par l’image, mais lorsque je lance Kassiope, j’ai les erreurs que j’ai copiées à la fin du message.
Pourriez-vous m’aider s’il vous plait ?
je précise qu’en Raspberry je suis un complet newbie, à part un pi2 qui tourne en Recalbox et un PI3 en Ambilight sur la TV, j’ai plus l’habitude de programmer en Arduino et STM32, mais ce n’est pas du tout le même monde…
Grand merci d’avance,
Aegnor
pi@Vocal_Assist:~ $ kalliope start
Starting Kalliope
Press Ctrl+C for stopping
Starting order signal
je suis prête
Exception in thread Thread-1:
Traceback (most recent call last):
File « /usr/lib/python2.7/threading.py », line 810, in __bootstrap_inner
self.run()
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /signals/order/order.py », line 82, in run
HookManager.on_start()
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/HookManager.py », line 12, in on_start
return cls.execute_synapses_in_hook_name(« on_start »)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/HookManager.py », line 71, in execute_synapses_in_hook_name
return SynapseLauncher.start_synapse_by_name(list_synapse, new_lifo=True)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/SynapseLauncher.py », line 56, in start_synapse_by_name
return lifo_buffer.execute(is_api_call=True)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Lifo/LIFOBuffer.py », line 115, in execute
self._process_synapse_list(last_synapse_fifo_list)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Lifo/LIFOBuffer.py », line 145, in _process_synapse_list
self._process_neuron_list(matched_synapse=matched_synapse)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Lifo/LIFOBuffer.py », line 181, in _process_neuron_list
parameters_dict=matched_synapse.parameters)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/NeuronLauncher.py », line 59, in start_neuron
instantiated_neuron = NeuronLauncher.launch_neuron(neuron)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/NeuronLauncher.py », line 41, in launch_neuron
resources_dir=neuron_folder)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Utils/Utils.py », line 140, in get_dynamic_class_instantiation
return klass(**parameters)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /neurons/say/say.py », line 11, in __init__
self.say(self.message)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/NeuronModule.py », line 188, in say
tts_module_instance.say(tts_message)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /tts/pico2wave/pico2wave.py », line 39, in say
self.generate_and_play(words, self._generate_audio_file)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/TTS/TTSModule.py », line 106, in generate_and_play
generate_audio_function_from_child()
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /tts/pico2wave/pico2wave.py », line 67, in _generate_audio_file
subprocess.call(final_command)
File « /usr/lib/python2.7/subprocess.py », line 522, in call
return Popen(*popenargs, **kwargs).wait()
File « /usr/lib/python2.7/subprocess.py », line 710, in __init__
errread, errwrite)
File « /usr/lib/python2.7/subprocess.py », line 1335, in _execute_child
raise child_exception
TypeError: execv() arg 2 must contain only strings
pi@Vocal_Assist:~ $ kalliope start
Starting Kalliope
Press Ctrl+C for stopping
Starting order signal
je suis prête
Exception in thread Thread-1:
Traceback (most recent call last):
File « /usr/lib/python2.7/threading.py », line 810, in __bootstrap_inner
self.run()
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /signals/order/order.py », line 82, in run
HookManager.on_start()
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/HookManager.py », line 12, in on_start
return cls.execute_synapses_in_hook_name(« on_start »)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/HookManager.py », line 71, in execute_synapses_in_hook_name
return SynapseLauncher.start_synapse_by_name(list_synapse, new_lifo=True)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/SynapseLauncher.py », line 56, in start_synapse_by_name
return lifo_buffer.execute(is_api_call=True)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Lifo/LIFOBuffer.py », line 115, in execute
self._process_synapse_list(last_synapse_fifo_list)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Lifo/LIFOBuffer.py », line 145, in _process_synapse_list
self._process_neuron_list(matched_synapse=matched_synapse)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Lifo/LIFOBuffer.py », line 181, in _process_neuron_list
parameters_dict=matched_synapse.parameters)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/NeuronLauncher.py », line 59, in start_neuron
instantiated_neuron = NeuronLauncher.launch_neuron(neuron)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/NeuronLauncher.py », line 41, in launch_neuron
resources_dir=neuron_folder)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /core/Utils/Utils.py », line 140, in get_dynamic_class_instantiation
return klass(**parameters)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope /neurons/say/say.py », line 11, in __init__
self.say(self.message)
File « /usr/local/lib/python2.7/dist-packages/kalliope-0.5.0-py2.7.egg/kalliope
Il semble que la dernière image soit corrompu. Je vous recommande une installation manuel en suivant les étapes de la documentation officielle. Vous trouverez également un lien sur la page GitHub vers le chat pour discuter directement avec la communauté.
Re-bonsoir,
Un tout grand merci pour la réponse rapide, j’ai essayé l’installation manuelle aussi, mais j’ai un soucis avec le Speech Recognition qui refuse de s’installer… je me doute que je dois me planter quelque part, mais je ne sais pas où…
Petite question concernant la distri raspian, avant j’utilisais la Jessie, maintenant c’est la stretch, quelle est la meilleure distri pour utiliser Kalliope ?
Et au passage, super boulot ! J’imagine déjà tout ce que je pourrais faire en combinant avec ma domotique 😉
Passez sur le chat du projet pour obtenir de l’aide avec l’installation. Et sinon stretch est juste une version plus récente de raspbian. Les deux versions sont supportés mais si vous partez d’une installation fraîche je recommande de prendre la plus récente.
Salut je viens ici car la version 5.1 ne boot pas chez moi kernel panic, ducoup j’ai pris la version 5.0 mais quand je parle il ne se passe absolument rien
Oui il y avais des problèmes de kernel au niveau de l’image Raspbian utilisée. Seuls les Rpi 3b+ semble impactés. C’est depuis corrigé, Kalliope v0.5.2 devrait sortir ce weekend et du coup la nouvelle image sera ok.
En attendant tu peux installer via le script d’installation (dans le README du projet GITHUB) après avoir fraîchement installé Raspbian.
Hi Nicolas,
Great Job man.
I have few queries. Can I use Kailliope without internet ?
Can I customize the name ?
Can I add skills ?
Do let me know your feedback.
Regards,
Kunal Gosalia
Yes and yes and yes. Read the official doc reachable from the GitHub repo.