Python library to communicate with Marty the Robot V1 and V2 by Robotical
To regenerate documentation:
- pip install -r dev-requirements.txt
- pydoc-markdown --server --open
- markdown_mmd api-documentation-edited.md -t dokuwiki -o docs-wiki.wiki OR, automatically:
- run docgen.bat (or docgen.sh on Mac/Linux) from Python environment (will also create a docs-wiki.wiki file with the dokuwiki format)
NOTE: Make sure pandoc is installed on your system to generate the dokuwiki documentation. You can install pandoc from here
If you cloned the repository or downloaded the source code to try the example scripts, you will need to make sure you have MartyPy installed before you can run the examples.
The easiest way to install MartyPy is with the pip install martypy script as explained in
step 2 here.
Once martypy is installed you can run each example using python. The following (for the dance example) assumes you have connected your marty using the USB cable to a Windows computer
python example_dance.py USB
To run the sound example over WiFi when your Marty is connected on IP address 192.168.86.10, use:
python example_sound.py WiFi 192.168.0.10
If you would like to make modifications to the martypy library itself, it will be better to install
it from source using the command pip install --editable /path/to/martypy/repo (replacing
/path/to/martypy/repo as appropriate of course).
If you do not want to "pip install" the MartyPy library, you can add the following 4 lines at the
top (before any other code) of each script you want to run:
import sys
import pathlib
cur_path = pathlib.Path(__file__).parent.resolve()
sys.path.append(str(cur_path.parent.resolve()))The Speak and Translate APIs use Robotical's online services and require an internet
connection. Speech synthesis and changing playback speed require FFmpeg on the
computer; speak_on_computer also needs a supported audio player (such as ffplay).
my_marty.set_voice("FEMALE") # Also MALE, KITTEN, ALIEN, GIANT, BOLT, STARLIGHT, WHIRLWIND
my_marty.set_voice_speed(1.5) # 0.1 to 2; 1 is normal speed
my_marty.set_speech_language("fr") # Accent; does not translate the words
words = my_marty.translate("Hello", "fr")
my_marty.speak(words, blocking=True) # Marty's speaker
my_marty.speak_on_computer(words) # Computer speaker; waits until finished
print(my_marty.get_language()) # Computer language nameSpeech settings persist until changed. Explicit voice, language and speed
arguments to speak/speak_on_computer override them for that call. Translation
returns text, not speech, and raises an error if its online request fails. In Blocks,
the matching calls use the existing browser extensions, and get_language reports
the editor's language instead of the computer's Python locale. Browser speech uses
the browser audio system, so it does not require a local FFmpeg installation.
- Update version: keep
setup.pyandmartypy/__init__.pyin sync and updateCHANGES.md. - Push changes: commit and push to GitHub.
- Publish: in GitHub Actions, manually run the "Publish to PyPI" workflow.