MSL-Project / README.md
Zeqhx
Deploy Malaysian Sign Language Recognition API
5322ae1
metadata
title: Malaysian Sign Language Recognition API
emoji: 🀟
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
license: apache-2.0

Malaysian Sign Language (MSL) Recognition API

Real-time sign language recognition using MediaPipe landmarks and LSTM neural network.

🎯 Features

  • Real-time Recognition: Process video frames in real-time
  • 11 Gestures: Recognizes 11 common Malaysian Sign Language gestures
  • High Accuracy: 87.5% test accuracy
  • REST API: Easy integration with any frontend
  • Session Management: Maintains frame sequences per user

πŸ€– Supported Gestures

Gesture Meaning
minum drink
berjalan walk
berlari run
bola ball
dari from
hi hello
jangan don't
mohon please
pen pen
teh tarik pulled tea
tolong help

πŸš€ Quick Start

API Endpoints

1. Health Check

GET https://YOUR-SPACE-URL.hf.space/health

2. Predict Gesture

POST https://YOUR-SPACE-URL.hf.space/predict
Content-Type: application/json

{
  "frame": "base64_encoded_image",
  "session_id": "unique_user_id"
}

3. Get Supported Gestures

GET https://YOUR-SPACE-URL.hf.space/gestures

πŸ“– How to Use

Python Example

import requests
import base64

# Read and encode frame
with open("frame.jpg", "rb") as f:
    frame_b64 = base64.b64encode(f.read()).decode()

# Make prediction
response = requests.post(
    "https://YOUR-SPACE-URL.hf.space/predict",
    json={"frame": frame_b64, "session_id": "user_123"}
)

result = response.json()
print(f"Gesture: {result['gesture']}")
print(f"Confidence: {result['confidence']:.2%}")

JavaScript Example

// Capture from webcam
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
context.drawImage(videoElement, 0, 0, 640, 480);
const frameB64 = canvas.toDataURL('image/jpeg').split(',')[1];

// Send to API
fetch('https://YOUR-SPACE-URL.hf.space/predict', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    frame: frameB64,
    session_id: 'user_123'
  })
})
.then(res => res.json())
.then(data => {
  console.log(`Gesture: ${data.gesture}`);
  console.log(`Confidence: ${data.confidence}`);
});

πŸ—οΈ Architecture

  • Frontend: Captures webcam frames
  • Preprocessing: MediaPipe extracts 258 landmark features
  • Model: 2-layer LSTM (64 hidden units)
  • Output: Gesture classification with confidence scores

πŸ“Š Model Performance

  • Test Accuracy: 87.5%
  • Training Set: 561 sequences
  • Validation Set: 81 sequences
  • Test Set: 161 sequences
  • Sequence Length: 30 frames

πŸ”§ Technical Details

  • Framework: FastAPI + PyTorch
  • Feature Extraction: MediaPipe Holistic (v0.10.21)
  • Input Features: 258 (33Γ—4 pose + 21Γ—3 left hand + 21Γ—3 right hand)
  • Model Architecture: LSTM β†’ Dropout β†’ Dense β†’ Softmax
  • Confidence Threshold: 50%

πŸ“ API Documentation

Interactive API documentation is available at:

https://YOUR-SPACE-URL.hf.space/docs

⚑ Performance

  • Latency: ~100-200ms per frame (CPU)
  • Sequence Requirement: 30 frames for prediction
  • Frame Rate: Supports 15-30 FPS

🀝 Integration

This API is designed to be integrated with a web application. Check out the companion frontend repository for a complete implementation.

πŸ“œ License

Apache 2.0

πŸ™ Acknowledgments

Built with:


Note: Replace YOUR-SPACE-URL with your actual Hugging Face Space URL after deployment.