GithubHelp home page GithubHelp logo

nagyrajmund / gesturebot Goto Github PK

View Code? Open in Web Editor NEW
33.0 4.0 12.0 83.01 MB

The official code for our paper "A Framework for Integrating Gesture Generation Models into Interactive Conversational Agents", published as a demonstration at AAMAS 2021.

Home Page: http://www.ifaamas.org/Proceedings/aamas2021/pdfs/p1779.pdf

License: GNU General Public License v3.0

Dockerfile 0.29% Python 99.71%
unity virtual-agents deep-learning human-computer-interaction

gesturebot's Introduction

This repo contains the official implementation for the paper A Framework for Integrating Gesture Generation Models into Interactive Conversational Agents, published as a demonstration at the 20th International Conference on Autonomous Agents and Multiagent Systems (AAMAS),

by Rajmund Nagy, Taras Kucherenko, Birger Moëll, André Pereira, Hedvig Kjellström and Ulysses Bernardet.


We present a framework for integrating recent data-driven gesture generation models into interactive conversational agents in Unity. Our video demonstration is available below:

video demonstration

Instructions for running the demo

This branch contains the Blenderbot version of our implementation with a built-in chatbot and TTS. You may visit the dialogflow_demo branch for an alternative version that integrates DialogFlow to the project for speech generation.

Please follow the instructions in INSTALLATION.md to install and run the project.

Architecture

Our framework is designed to be fully modular therefore it can be applied to different voices, chatbot backends, gesture generation models and 3D characters. However, using it in a new project will require some coding for which we provide guidance below.

Unity integration

The source code of the Unity scene with DialogFlow integration is available on this link, while the Blenderbot version is available here. The relevant C# scripts are found in the Assets/Scripts/ folder. The entry point of the python code is the main.py file, while the bulk of the implementation is found in gesture_generator_service.py.

  • The C# and the python scripts comunicate over ActiveMQ, as implemented in the ActiveMQClient.cs and the messaging_server.py files.
  • Once the generated motion arrives to the 3D agent, the MotionVisualizer.cs file animates its model by modifying the localRotation values of each joint.
    • There is no clear convention of how 3D models handle joint rotations in Unity. The 3D joint angles generated by Gesticulator follow the BVH format; applying them to new character models will require Unity knowledge and some tinkering.

Chatbot backend

Gesture generation

  • We use the Gesticulator model in both demonstrations, which generates motion as 3D joint angles using speech text and audio as input.
  • In order to use other models, the following have to be considered:
    • 3D joint angles are necessary to animate the 3D model in Unity, therefore the gesture generation model must return the motion in that format.
    • For any model, an interface must be implemented for getting the generated gestures for any speech. The GesturePredictor class shows how we implemented that for Gesticulator.
  • StyleGestures is a good alternative model with a compatible codebase.

Acknowledgements

The authors would like to thank Lewis King for sharing the source code of his JimBot project with us.

Citation

If you use this code in your research, then please cite it:

@inproceedings{Nagy2021gesturebot,
author = {Nagy, Rajmund and Kucherenko, Taras and Moell, Birger and Pereira, Andr\'{e} and Kjellstr\"{o}m, Hedvig and Bernardet, Ulysses},
title = {A Framework for Integrating Gesture Generation Models into Interactive Conversational Agents},
year = {2021},
isbn = {9781450383073},
publisher = {International Foundation for Autonomous Agents and Multiagent Systems},
address = {Richland, SC},
booktitle = {Proceedings of the 20th International Conference on Autonomous Agents and MultiAgent Systems},
location = {Virtual Event, United Kingdom},
series = {AAMAS '21}
}

gesturebot's People

Contributors

nagyrajmund avatar svito-zar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gesturebot's Issues

c# code wrong in benderbot_demo branch

Dear nagyrajmund,
when I unzip unity_source_code_blenderbot.zip.
I found the following problems: the c# code of the dialogue system is not blenderbot, but dialogflow.
This leads to the failure of calling the dialogue system in Unity. Would you like to help replace it with blenderbot?
Or if you have tried and successed, please help upload c# code of blenderbot version. Thanks very much
image

how to replace fbx Models

Dear,
Sorry to bother you again. It seems that the FBX models in the project is come from adobe Mixamo (Y bot).
But when i replace the fbx model with other models from Mixamo such as "Monsey", the bone movements become so weird?
Do you encounter the same problem, and how to solve it?
Thanks a million~

about unity

Hi,I am a freshman in unity. 1) How to load "gesturebot.x86_64" file to unity? 2) do gesturebot.x86_64 support MAC system?
Uploading image.png…

Problem about installation on Windows

Hi I have met some problem when transplanting the system on Windows. It shows that SoX might be missed but after I installed it with Anaconda Prompt manually it still shows like below:

'sox' is not recognized as an internal or external command,
operable program or batch file.
SoX could not be found!

    If you do not have SoX, proceed here:
     - - - http://sox.sourceforge.net/ - - -

    If you do (or think that you should) have SoX, double-check your
    path variables.

2021-03-11 17:33:39.571356: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2021-03-11 17:33:39.576738: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Traceback (most recent call last):
  File "main.py", line 3, in <module>
    from gesture_generator_service import GestureGeneratorService
  File "D:\KTH_Courses_and_Practices\KTH_Master_Thesis\Implementation\gesticulating_agent_unity\gesticulator\gesticulator\interface\gesture_generator_service.py", line 11, in <module>
    from tts_interface import GlowTTS
  File "D:\KTH_Courses_and_Practices\KTH_Master_Thesis\Implementation\gesticulating_agent_unity\gesticulator\gesticulator\interface\tts_interface.py", line 61, in <module>
    TTS_CONFIG = load_config(TTS_CONFIG)
  File "d:\kth_courses_and_practices\kth_master_thesis\implementation\gesticulating_agent_unity\gesticulator\gesticulator\interface\tts_repo\TTS\utils\io.py", line 38, in load_config
    input_str = f.read()
  File "C:\Users\yuan-\Anaconda3\envs\gesturebot_blenderbot\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3230: character maps to <undefined>
(gesturebot_blenderbot) PS D:\KTH_Courses_and_Practices\KTH_Master_Thesis\Implementation\gesticulating_agent_unity\gesticulator\gesticulator\interface>

Have you met the same error before? Thank you very much.
Yuan

error while trying installation

Hello
I am trying to run your project based on the instructions you gave on Installation.md.
However I am encountering a series of errors. I would like to know your execution is made on windows or linux?
I 'm using windows 10 and I followed the same steps.
I get this error first : "ERROR: Failed building wheel for pysptk"
but I continued the installation and I get this error when I trying main.py
image

Thank you for your help !

Permission denied

I'm trying to replicate the system but it says I don't have permission. It shows like below. How can I fix that? Thank you.

$ git clone [email protected]:nagyrajmund/gesticulating_agent_unity.git
Cloning into 'gesticulating_agent_unity'...
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Network error

I have gone through the installation process and there is no error but when I run ActiveMQ in 'bin' and it has the following error:

in$ ./activemq start
INFO: Loading '/etc/default/activemq'
INFO: Using java '/usr/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
./activemq: 344: "/usr/bin/java"  -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//conf/login.config   -Djava.awt.headless=true -Djava.io.tmpdir="/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//tmp"                --add-reads=java.xml=java.logging               --add-opens java.base/java.security=ALL-UNNAMED               --add-opens java.base/java.net=ALL-UNNAMED               --add-opens java.base/java.lang=ALL-UNNAMED               --add-opens java.base/java.util=ALL-UNNAMED               --add-opens java.naming/javax.naming.spi=ALL-UNNAMED               --add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED               --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED               --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED               --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED               --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED               --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED               -Dactivemq.classpath="/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//conf:/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//../lib/:"               -Dactivemq.home="/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1/"               -Dactivemq.base="/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1/"               -Dactivemq.conf="/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//conf"               -Dactivemq.data="/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//data"                              -jar "/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//bin/activemq.jar" start >> /dev/null 2>&1 &
              RET="$?"; APID="$!";
              echo $APID > /home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//data/activemq.pid;
              echo "INFO: pidfile created : '/home/yuan/gesticulating_agent_unity/ActiveMQ/apache-activemq-5.16.1//data/activemq.pid' (pid '$APID')";exit $RET: not found

Then I tried to run ActiveMQ in the folder 'linux-x86-64' and it seems ok by showing

Starting ActiveMQ Broker...
ActiveMQ Broker is already running.

But the system still seems to fail with communication.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.