tan-ad / SignWave

An easy-to-use program that transcribes text or audio files into a sign language animation. JamHacks7 2023 Best Overall and Best use of GitHub.
MIT License
61 stars 2 forks source link

SignWave

License GitHub repo size JamHacks7

An easy-to-use program that transcribes text or audio files into a sign language animation.

image

Inspiration

Given how much society has advanced technologically, the fact that there still isn't enough attention given to making communication more accessible for the deaf community is inexcusable. One of our teammates spoke of his first-hand experience with this issue, as his grandfather is a deaf individual who communicates primarily through sign language and visual cues. That's when we had the idea of automating translation to sign language, similar to closed captions on videos. As a result, we have created SignWave, an accessible and convenient translator from English to American Sign Language (ASL).

What it does and how it can be used

SignWave can take two types of input: audio files and text. If an audio file is given, SignWave produces a transcript of the words spoken in the audio file. If a text input is given and presents an animation of the transcript in sign language and continues to the next step. When a text input is given, the process is bypassed and the program produces an animation of the text in sign language. While useful as a sign language equivalent of closed captions, SignWave also extends as an educational tool. Those looking to learn sign language can use SignWave to teach themselves how to sign various phrases using both the speech-to-sign and text-to-sign functionalities.

Installation

Requirements:

Instructions:

  1. Clone the repository
    $ git clone https://github.com/tan-ad/SignWave.git
  2. Set up Python virtual environment
    $ python -m venv myenv
  3. Install required dependencies
  4. Run the app.py file
    $ python app.py

How we built it

Our program has three main steps:

We used OpenAI's Whisper API to recognize and convert speech to text. Once in text form, we used ASL Sign Language Dictionary to collect video demonstrations of various words in sign language. For each video, we tracked the hand joints using MediaPipe Hand Landmarker, which gave us the 3D coordinate of each hand joint at each frame of the video. We then created a dictionary, mapping each word to a multidimensional array of coordinates. This then allows us to use three.js to animate the hands as a set of points and edges. Finally, we wrapped it all together into a pleasant and usable interface using HTML, JS, and CSS.

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for SignWave

Contact us