Spoken To Signed Translation
a text-to-gloss-to-pose-to-video pipeline for spoken to signed language translation
Install / Use
npx skills add sign-language-processing/spoken-to-signed-translationInstalls into whichever agent you are using.
README
Gloss-Based Pipeline for Spoken to Signed Language Translation
a text-to-gloss-to-pose-to-video pipeline for spoken to signed language translation.
-
Demos available for:
-
Paper available on arxiv, presented at AT4SSL 2023.

Install
pip install spoken-to-signed
Then, to download a lexicon, run:
download_lexicon \
--name <signsuisse> \
--directory <path_to_directory>
Usage
For language codes, we use the IANA Language Subtag Registry. Our pipeline provides multiple scripts.
To quickly demo it using a dummy lexicon, either open it in Colab:
<a target="_blank" href="https://colab.research.google.com/drive/1UtBmfBIhUa2EdLMnWJr0hxAOZelQ50_9?usp=sharing"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a>or run it locally with some installation steps first:
git clone https://github.com/ZurichNLP/spoken-to-signed-translation
cd spoken-to-signed-translation
pip install .
text_to_gloss_to_pose \
--text "Kleine Kinder essen Pizza in Zürich." \
--glosser "simple" \
--lexicon "assets/dummy_lexicon" \
--spoken-language "de" \
--signed-language "sgg" \
--pose "quick_test.pose"
Text-to-Gloss Translation
This script translates input text into gloss notation.
text_to_gloss \
--text <input_text> \
--glosser <simple|spacylemma|rules|nmt> \
--spoken-language <de|fr|it> \
--signed-language <sgg|ssr|slf>
Text-to-Gloss-to-Pose Translation
This script translates input text into gloss notation, then converts the glosses into a pose file.
text_to_gloss_to_pose \
--text <input_text> \
--glosser <simple|spacylemma|rules|nmt> \
--lexicon <path_to_directory> \
--spoken-language <de|fr|it> \
--signed-language <sgg|ssr|slf> \
--pose <output_pose_file_path>.pose
Words missing from the lexicon are fingerspelled letter-by-letter by default;
pass --disable-fingerspelling to skip them instead.
Add --coverage-info to print how each token was matched, color-coded in the terminal
(green: lexicon, yellow: language backup, orange: fingerspelling, red: unmatched),
or --coverage-stats <file.json> to save the same per-token information as JSON.
Text-to-Gloss-to-Pose-to-Video Translation
This script translates input text into gloss notation, converts the glosses into a pose file, and then transforms the pose file into a video.
Note: Video generation requires the
pose-to-videopackage with pix2pix and upscaler:pip install 'pose-to-video[pix2pix,simple_upscaler] @ git+https://github.com/sign-language-processing/pose-to-video'
text_to_gloss_to_pose_to_video \
--text <input_text> \
--glosser <simple|spacylemma|rules|nmt> \
--lexicon <path_to_directory> \
--spoken-language <de|fr|it> \
--signed-language <sgg|ssr|slf> \
--video <output_video_file_path>.mp4
Methodology
The pipeline consists of three main components:
-
Text-to-Gloss Translation
Transforms the input (spoken language) text into a sequence of glosses.
- Simple lemmatizer,
- Spacy lemmatizer: more accurate, but slower lemmatization, covering fewer languages than
simple, - Rule-based word reordering and dropping component and
- Neural machine translation system.
- Gloss-to-Pose Conversion
- Lookup: Uses a lexicon of signed languages to convert the sequence of glosses into a sequence of poses.
- Pose Concatenation: The poses are then cropped, concatenated, and smoothed, creating a pose representation for the input sentence.
-
Pose-to-Video Generation
Transforms the processed pose video back into a synthesized video using an image translation model.
Supported Languages
| Language | IANA Code | Glossers Supported | Lexicon Data Source |
|-----------------------------|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------|
| Swiss German Sign Language | sgg | simple, spacylemma, rules, nmt | SignSuisse (de) |
| Swiss French Sign Language | ssr | simple, spacylemma | SignSuisse (fr) |
| Swiss Italian Sign Language | slf | simple, spacylemma | SignSuisse (it) |
| German Sign Language | gsg | simple, spacylemma, nmt | WordNet (Coming Soon) |
| British Sign Language | bfi | simple, spacylemma, nmt | WordNet (Coming Soon) |
Online Playgrounds
We have two available:
- sign.mt is a web interface of a translation system.
- research.sign.mt is an overview of sign language processing literature.
Citation
If you find this work useful, please cite our paper:
@inproceedings{moryossef2023baseline,
title={An Open-Source Gloss-Based Baseline for Spoken to Signed Language Translation},
author={Moryossef, Amit and M{\"u}ller, Mathias and G{\"o}hring, Anne and Jiang, Zifan and Goldberg, Yoav and Ebling, Sarah},
booktitle={2nd International Workshop on Automatic Translation for Signed and Spoken Languages (AT4SSL)},
year={2023},
month={June},
url={https://github.com/ZurichNLP/spoken-to-signed-translation},
note={Available at: \url{https://arxiv.org/abs/2305.17714}}
}
Related Skills
qqbot-channel
385.5kQQ channel management skill. Use qqbot_channel_api for explicit QQ channel-management requests; confirm write, delete, and bulk actions before calling authenticated QQ Open Platform endpoints.
docs-writer
106.4kAlways use this skill when the task involves writing, reviewing, or editing files in the `/docs` directory or any `.md` files in the repository.
cpp
40.5kGuide Cursor to write modern C++ and CMake code with clear structure, RAII, const-correctness, and safe error handling.
gamemaker-gml
40.5kGameMaker Language (GML) rules for scripts, objects, events, rooms, data structures, and performance-minded game code
Languages
Security Score
Audited on Jul 31, 2026
