{"id":14971556,"url":"https://github.com/notyusheng/transcribe-translate","last_synced_at":"2026-02-14T13:03:28.403Z","repository":{"id":255136200,"uuid":"848649820","full_name":"NotYuSheng/Transcribe-Translate","owner":"NotYuSheng","description":"Local web app for transcription and translation services for audio and video using Whisper models","archived":false,"fork":false,"pushed_at":"2024-12-22T03:03:44.000Z","size":9362,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-31T21:11:29.890Z","etag":null,"topics":["docker","full-stack","nodejs","react","reactjs","self-hosted","speech-to-text","transcribe","translate","whisper"],"latest_commit_sha":null,"homepage":"https://transcribe-translate-frontend.onrender.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NotYuSheng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-28T06:36:14.000Z","updated_at":"2024-12-22T03:02:25.000Z","dependencies_parsed_at":"2024-08-28T07:55:02.447Z","dependency_job_id":"0c0e364e-70bb-4aec-a1fd-20b853f91937","html_url":"https://github.com/NotYuSheng/Transcribe-Translate","commit_stats":{"total_commits":165,"total_committers":4,"mean_commits":41.25,"dds":0.509090909090909,"last_synced_commit":"4a4c5b6c1962a32e513bef30608d16c1f2d878c8"},"previous_names":["notyusheng/local-whisper"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FTranscribe-Translate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FTranscribe-Translate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FTranscribe-Translate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotYuSheng%2FTranscribe-Translate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotYuSheng","download_url":"https://codeload.github.com/NotYuSheng/Transcribe-Translate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238366757,"owners_count":19460177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","full-stack","nodejs","react","reactjs","self-hosted","speech-to-text","transcribe","translate","whisper"],"created_at":"2024-09-24T13:45:22.520Z","updated_at":"2025-10-26T16:30:47.913Z","avatar_url":"https://github.com/NotYuSheng.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transcribe-Translate\n\n\u003c!--\n\u003cdiv align=\"center\"\u003e\n\n  [![GitHub last commit](https://img.shields.io/github/last-commit/NotYuSheng/Transcribe-Translate?color=red)](#)\n  [![Sphinx Documentation](https://img.shields.io/badge/Sphinx-Documentation-informational)](https://notyusheng.github.io/Transcribe-Translate/)\n  [![Render Deployment](https://img.shields.io/badge/Render-Frontend%20Deployment-yellow)](https://transcribe-translate-frontend.onrender.com/)\n\n\u003c/div\u003e\n--\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#\"\u003e\u003cimg alt=\"last-commit\" src=\"https://img.shields.io/github/last-commit/NotYuSheng/Transcribe-Translate?color=red\"\u003e\u003c/a\u003e\n  \u003c!--\u003ca href=\"https://notyusheng.github.io/Transcribe-Translate/\"\u003e\u003cimg alt=\"Sphinx Documentation\" src=\"https://img.shields.io/badge/Sphinx-095079?style=flat\u0026logo=Sphinx\u0026logoColor=white\"\u003e\u003c/a\u003e--\u003e\n  \u003ca href=\"https://transcribe-translate-frontend.onrender.com/\"\u003e\u003cimg alt=\"Render Deployment\" src=\"https://img.shields.io/badge/Render-white?style=flat\u0026logo=render\u0026logoColor=black\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"sample-files/Shrunk-DEMO.png\" alt=\"Partial demo img\" style=\"width: 75%; max-width: 50px; height: auto;\" /\u003e\n\u003c/div\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eFull Page Sample\u003c/summary\u003e\n  \u003cbr\u003e\n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"sample-files/Full-DEMO.png\" alt=\"Full demo img\" style=\"width: 75%; max-width: 50px; height: auto;\" /\u003e\n  \u003c/div\u003e\n\u003c/details\u003e\n\n## Host requirements\n- **Docker**: [[Installation Guide](https://docs.docker.com/engine/install/)]\n- **Docker Compose**: [[Installation Guide](https://docs.docker.com/compose/install/)]\n- Compatibile with Linux and Windows Host\n- Ensure port 8000 is not already in use\n- Project can be ran on either CPU or GPU\n\n## Model requirements\nThe following table outlines the recommended hardware requirements for each Whisper model based on typical usage scenarios. Please ensure that your system meets or exceeds these specifications for optimal performance.\n\n| Model      | Size (GB) | Minimum RAM (GB) | Recommended RAM (GB) | GPU Memory (VRAM) (GB) | Notes                                              |\n|------------|:----------:|:----------------:|:--------------------:|:----------------------:|---------------------------------------------------|\n| `tiny`     | ~0.07      | 2                | 4                    | 1                      | Suitable for lightweight tasks and low resource usage. |\n| `base`     | ~0.14      | 4                | 6                    | 2                      | Good for basic transcription and smaller workloads. |\n| `small`    | ~0.46      | 6                | 8                    | 4                      | Ideal for moderate tasks, offering a balance between performance and accuracy. |\n| `medium`   | ~1.5       | 8                | 12                   | 8                      | Recommended for larger tasks with higher accuracy demands. |\n| `large-v2` | ~2.88      | 10               | 16                   | 10                     | Best for high-performance tasks and large-scale transcription. |\n| `large-v3` | ~2.88      | 12               | 16+                  | 10+                    | Highest accuracy and resource usage. Ideal for GPU-accelerated environments. |\n\n\u003e [!TIP]\n\u003e For models running on GPU, using CUDA-enabled GPUs with sufficient VRAM is recommended to significantly improve performance. CPU-based inference may require additional RAM and processing time.\n\n\u003e [!WARNING]\n\u003e By default, `base`, `base.en`, \u0026 `large-v3` models are loaded. Models can be configured from the `backend/Dockerfile`. However, `base` model must not be removed as it is statically configured to be the default model.\n\n## Supported formats\n\n### Import Options:\n- Audio: `.mp3`, `.wav`, `.flac`, `.m4a`, etc.\n- Video: `.mp4`, `.mkv`, `.avi`, `.mov`, etc.\n\n### Export Options: \n- Users can export the results in `.txt`, `.json`, `.srt`, or `.vtt` formats.\n\n## Usage\n\u003e [!NOTE]\n\u003e Project will run on GPU by default. To run on CPU, use the `docker-compose.cpu.yml` instead\n\n1.  Clone this repository and navigate to project folder\n```\ngit clone https://github.com/NotYuSheng/Transcribe-Translate.git\ncd Transcribe-Translate\n```\n\n2.  Build the Docker images:\n```\ndocker-compose build\n```\n\n3.  Run images\n```\ndocker-compose up -d\n```\n\n4.  Access webpage from host\n```\n\u003chost-ip\u003e:8000\n```\n\n## Configuration Details\n### User Concurrency\nThe application backend is configured to handle **4 concurrent** users using the `--workers` option in the `backend/Dockerfile`.\n```\nCMD [\"uvicorn\", \"main:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\", \"--timeout-keep-alive\", \"600\", \"--workers\", \"4\"]\n```\n\n### Large File Uploads\nThe app supports file uploads of up to **5GB**. This is configured by setting `client_max_body_size` in the `nginx/nginx.conf`.\n```\nclient_max_body_size 5G;\n```\n\n### Timeout Settings\nTo accommodate large uploads and longer processing times by providing **10 mins** keep alive setting in `backend/Dockerfile` with the following timeout settings in `nginx/nginx.conf`.\n```\nCMD [\"uvicorn\", \"main:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\", \"--timeout-keep-alive\", \"600\", \"--workers\", \"4\"]\n```\n```\nproxy_read_timeout 600s;\nproxy_connect_timeout 600s;\nproxy_send_timeout 600s;\nsend_timeout 600s;\n```\n\n## Additional Notes\n\u003e [!CAUTION]\n\u003e Project is intended to be use in a local network by trusted user, therefore there is **no rate limit configured and the project is vulnerable to request floods**. Consider switching to `slowapi` if this is unacceptable.\n\n\u003e [!TIP]\n\u003e For transcribing English inputs, `.en` version of the models are recommended\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotyusheng%2Ftranscribe-translate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotyusheng%2Ftranscribe-translate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotyusheng%2Ftranscribe-translate/lists"}