Metadata-Version: 2.4
Name: pylips
Version: 0.0.17
Summary: An interface for embodied conversational interaction.
Home-page: https://github.com/interaction-lab/PyLips
Author: Interaction Lab
Author-email: dennler@mit.edu
License: MIT license
Keywords: lipsynch,robot,interaction,conversational,agent
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: User Interfaces
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
Requires-Python: >=3.8.0
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flask>=2.0.1
Requires-Dist: flask-socketio>=5.1.1
Requires-Dist: python-socketio>=5.11.1
Requires-Dist: websocket-client>=1.7.0
Requires-Dist: requests>=2.31.0
Requires-Dist: boto3>=1.18.67
Requires-Dist: pygame>=2.1.1
Requires-Dist: py3-tts>=3.5
Requires-Dist: allosaurus>=1.0.2
Requires-Dist: soundfile>=0.12.1
Provides-Extra: dev
Requires-Dist: pip>=20.3; extra == "dev"
Requires-Dist: pylint; extra == "dev"
Requires-Dist: yapf; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pytest==7.0.1; extra == "dev"
Requires-Dist: pytest-cov==3.0.0; extra == "dev"
Requires-Dist: pytest-benchmark==3.4.1; extra == "dev"
Requires-Dist: pytest-xdist==2.5.0; extra == "dev"
Requires-Dist: myst-nb==0.17.1; extra == "dev"
Requires-Dist: Sphinx==4.5.0; extra == "dev"
Requires-Dist: sphinx-autobuild==2021.3.14; extra == "dev"
Requires-Dist: sphinx-autodoc-typehints==1.18.2; extra == "dev"
Requires-Dist: sphinx-codeautolink==0.12.1; extra == "dev"
Requires-Dist: sphinx-copybutton==0.3.1; extra == "dev"
Requires-Dist: sphinx-jinja2-compat==0.2.0; extra == "dev"
Requires-Dist: sphinx-material==0.0.32; extra == "dev"
Requires-Dist: sphinx-prompt==1.5.0; extra == "dev"
Requires-Dist: sphinx-tabs==3.3.1; extra == "dev"
Requires-Dist: sphinx-toolbox==3.1.0; extra == "dev"
Requires-Dist: sphinxcontrib-applehelp==1.0.4; extra == "dev"
Requires-Dist: sphinxcontrib-devhelp==1.0.2; extra == "dev"
Requires-Dist: sphinxcontrib-htmlhelp==2.0.1; extra == "dev"
Requires-Dist: sphinxcontrib-jsmath==1.0.1; extra == "dev"
Requires-Dist: sphinxcontrib-qthelp==1.0.3; extra == "dev"
Requires-Dist: sphinxcontrib-serializinghtml==1.1.5; extra == "dev"
Requires-Dist: sphinx-rtd-theme==1.3.0rc1; extra == "dev"
Requires-Dist: bump2version==1.0.1; extra == "dev"
Requires-Dist: wheel==0.40.0; extra == "dev"
Requires-Dist: twine==4.0.2; extra == "dev"
Requires-Dist: check-wheel-contents==0.4.0; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# PyLips

[![Downloads](https://static.pepy.tech/badge/pylips)](https://pepy.tech/project/pylips) [![PyPI version](https://badge.fury.io/py/pylips.svg)](https://badge.fury.io/py/pylips) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

![The PyLips Logo](docs/source/_static/imgs/pylips_text.png)

**PyLips** is a Python-based interface for developing screen-based conversational agents.
It is designed to make developing socially assistive robotics easier by providing a
simple, expressive, and customizable framework for developing conversational agents.


PyLips is easy to install, simple to use, and open-source.
It comes ready to use with your system's speech synthesis tools, and
uses other free and open-source software for turning these sounds into facial expressions.

![The PyLips Faces](docs/source/_static/imgs/many_faces.png)

## To Install from PyPI

You can install PyLips using pip. To install PyLips, run this command in your terminal:

```
python3 -m pip install pylips
```

If you are running PyLips on a Linux Distribution, you may need to also install the following packages:

```
sudo apt update && sudo apt install espeak-ng ffmpeg libespeak1
```

## PyLips Quickstart

Here is a quick example to test your installation. This code will make your computer face say 
"Hello, welcome to pylips!". The voice will be the default system voice, but this is something
we can change later.

First, we will have to start the PyLips server. This is a simple flask sever that can serve several
faces at the same time. To start the server, run the following command:

```
python3 -m pylips.face.start
```

This will start the server on port 8000. Do not worry about the warning message, the package will 
still work. You can connect any web browser to the urls printed, even across computers on the local network.
For now, just open a browser and go to `http://localhost:8000/face` to see the face.

Now open a new terminal tab and run the following code:

```
from pylips.speech import RobotFace

face = RobotFace()
# you may need to wait here for a minute or two to let allosaurus download on the first run

face.say("Hello, welcome to pylips!")
```

If all goes well, the face should have said the message!


If you use PyLips in an academic publication, please use this
```
@inproceedings{dennler2024pylips,
  title={PyLips: an Open-Source Python Package to Expand Participation in Embodied Interaction},
  author={Dennler, Nathaniel Steele and Torrence, Evan and Yoo, Uksang and Nikolaidis, Stefanos and Mataric, Maja},
  booktitle={Adjunct Proceedings of the 37th Annual ACM Symposium on User Interface Software and Technology},
  pages={1--4},
  year={2024}
}
```



# History

## 0.0.17

- adds support for moving keypoints directly via RobotFace.set_component_offsets().
- adds optional parameter to turn off default viseme animation if desired in RobotFace.say(), RobotFace.say_file(), and RobotFace.stream_file_to_browser().

## 0.0.16

- adds support for playing audio through browser instead of through pygame.

## 0.0.0 (2024-03-24)

- pylips begins
