Spaces:
Running
Running
| title: AI-powered ASL text-to-video Generator | |
| emoji: 🐻 | |
| colorFrom: blue | |
| colorTo: yellow | |
| sdk: gradio | |
| sdk_version: 5.34.2 | |
| app_file: app.py | |
| pinned: false | |
| license: apache-2.0 | |
| Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference | |
| # AI-SL API | |
| Convert natural language English into American Sign Language (ASL) videos using AI! | |
| View our full repo for the AI-SL Project created for the **Berkeley AI Hackathon 2025** 🚀 here: [AI-SL Repo](https://github.com/deenasun/ai-sl) | |
|  | |
| ## Features | |
| ### Dual Input Support with Optional File Upload | |
| The app accepts both text input and file uploads with flexible options: | |
| - **Text Input**: Type or paste text directly into the interface (always available) | |
| - **File Upload**: Upload documents (PDF, TXT, DOCX, EPUB) | |
| ### Video Output Options | |
| The Gradio interface provides multiple ways for users to receive and download the generated ASL videos: | |
| #### 1. R2 Cloud Storage | |
| - Videos are automatically uploaded to Cloudflare R2 storage | |
| - Returns a public URL that users can download directly | |
| - Videos persist and can be shared via URL | |
| - Includes a styled download button in the interface | |
| #### 2. Base64 Encoding (Alternative) | |
| - Videos are embedded as base64 data directly in the response | |
| - No external storage required | |
| - Good for smaller videos or when you want to avoid cloud storage | |
| - Can be downloaded directly from the interface | |
| #### 3. Programmatic Access | |
| Users can access the video output programmatically using: | |
| ```python | |
| from gradio_client import Client | |
| # Connect to the running interface | |
| client = Client("http://localhost:7860") | |
| # Upload a document and get results | |
| result = client.predict( | |
| "path/to/document.pdf", | |
| api_name="/predict" | |
| ) | |
| # The result contains: (json_data, video_output) | |
| json_data, video_url = result | |
| # Download the video | |
| import requests | |
| response = requests.get(video_url) | |
| with open("asl_video.mp4", "wb") as f: | |
| f.write(response.content) | |
| ``` | |
| ## Example Usage | |
| ### Web Interface | |
| 1. Visit your Space URL | |
| 2. Choose input method: | |
| - **Text**: Type or paste text in the text box (always available) | |
| - **File**: Check "Enable file upload" and upload a document (optional) | |
| 3. Click "Submit" | |
| 4. Download the resulting video | |
| ### Programmatic Access with Optional File Upload | |
| ```python | |
| from gradio_client import Client | |
| # Connect to your hosted app | |
| from gradio_client import Client, handle_file | |
| client = Client("deenasun/ai-sl-api") | |
| # Text input only (file upload disabled) | |
| result = client.predict( | |
| text="Hello world! This is a test.", # Text input | |
| file=None, # File input (None since disabled) | |
| api_name="/predict" | |
| ) | |
| # File input only (file upload enabled) | |
| result = client.predict( | |
| text="", # Text input (empty) | |
| file=handle_file("document.pdf"), # File input | |
| api_name="/predict" | |
| ) | |
| # Both inputs (text takes priority) | |
| result = client.predict( | |
| "Quick text", # Text input | |
| "document.pdf", # File input | |
| api_name="/predict" | |
| ) | |
| ``` | |
| See `example_usage.py` and `example_usage_dual_input.py` for complete examples of how to: | |
| - Download videos from URLs | |
| - Process base64 video data | |
| - Use the interface programmatically | |
| - Perform further video processing | |
| - Handle both text and file inputs | |
| - Use optional file upload functionality | |
| ## Requirements | |
| - Python 3.7+ | |
| - Required packages listed in `requirements.txt` | |
| - Cloudflare R2 credentials (for cloud storage option) | |
| - Supabase credentials for video database | |
| ## Setup | |
| 1. Install dependencies: `pip install -r requirements.txt` | |
| 2. Set up environment variables in `.env` file | |
| 3. Run the interface: `python app.py` | |
| ## Video Processing | |
| Once you have the video file, you can: | |
| - Upload to YouTube, Google Drive, or other services | |
| - Analyze with OpenCV for computer vision tasks | |
| - Convert to different formats | |
| - Extract frames for further processing | |
| - Add subtitles or overlays | |