{"id":18516571,"url":"https://github.com/brlin-tw/media-to-whisper.cpp-subtitles","last_synced_at":"2026-05-05T11:34:06.533Z","repository":{"id":261192754,"uuid":"883509085","full_name":"brlin-tw/media-to-whisper.cpp-subtitles","owner":"brlin-tw","description":"Converting user-specified media files to subtitles using the Whisper.cpp utility.","archived":false,"fork":false,"pushed_at":"2024-11-10T02:14:00.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-22T22:05:41.595Z","etag":null,"topics":["bash","ffmpeg","whisper-cpp"],"latest_commit_sha":null,"homepage":"https://gitlab.com/brlin/media-to-whisper.cpp-subtitles","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brlin-tw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSES/AGPL-3.0-or-later.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-05T04:52:58.000Z","updated_at":"2024-11-10T02:04:37.000Z","dependencies_parsed_at":"2025-05-15T03:01:09.559Z","dependency_job_id":null,"html_url":"https://github.com/brlin-tw/media-to-whisper.cpp-subtitles","commit_stats":null,"previous_names":["brlin-tw/media-to-whisper.cpp-subtitles"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/brlin-tw/media-to-whisper.cpp-subtitles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brlin-tw%2Fmedia-to-whisper.cpp-subtitles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brlin-tw%2Fmedia-to-whisper.cpp-subtitles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brlin-tw%2Fmedia-to-whisper.cpp-subtitles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brlin-tw%2Fmedia-to-whisper.cpp-subtitles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brlin-tw","download_url":"https://codeload.github.com/brlin-tw/media-to-whisper.cpp-subtitles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brlin-tw%2Fmedia-to-whisper.cpp-subtitles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266785532,"owners_count":23983829,"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","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bash","ffmpeg","whisper-cpp"],"created_at":"2024-11-06T16:02:59.019Z","updated_at":"2026-05-05T11:34:06.494Z","avatar_url":"https://github.com/brlin-tw.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# media-to-whisper.cpp-subtitles\n\nConverting user-specified media files to subtitles using the Whisper.cpp utility.\n\n\u003chttps://gitlab.com/brlin/media-to-whisper.cpp-subtitles\u003e  \n[![The GitLab CI pipeline status badge of the project's `main` branch](https://gitlab.com/brlin/media-to-whisper.cpp-subtitles/badges/main/pipeline.svg?ignore_skipped=true \"Click here to check out the comprehensive status of the GitLab CI pipelines\")](https://gitlab.com/brlin/media-to-whisper.cpp-subtitles/-/pipelines) [![GitHub Actions workflow status badge](https://github.com/brlin-tw/media-to-whisper.cpp-subtitles/actions/workflows/check-potential-problems.yml/badge.svg \"GitHub Actions workflow status\")](https://github.com/brlin-tw/media-to-whisper.cpp-subtitles/actions/workflows/check-potential-problems.yml) [![pre-commit enabled badge](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white \"This project uses pre-commit to check potential problems\")](https://pre-commit.com/) [![REUSE Specification compliance badge](https://api.reuse.software/badge/gitlab.com/brlin/media-to-whisper.cpp-subtitles \"This project complies to the REUSE specification to decrease software licensing costs\")](https://api.reuse.software/info/gitlab.com/brlin/media-to-whisper.cpp-subtitles)\n\n## Prerequisites\n\nYou need to have the following software installed and it's command available in the command search PATHs:\n\n* [GNU core utilities](https://www.gnu.org/software/coreutils/)  \n  For determining the absolute path of the utility and the available threads to do the subtitle inference.\n* [whisper.cpp](https://github.com/ggerganov/whisper.cpp)  \n  For inferencing the subtitles from the media's audio tracks.\n\n  By default it uses [the unofficial snap distribution](https://snapcraft.io/whisper-cpp) of Whisper.cpp.\n* [FFmpeg](https://www.ffmpeg.org/)  \n  For converting the input media into formats that can be consumed by whisper.cpp.\n\n## Usage\n\nRefer to the following instructions to use this application:\n\n1. Download the application's release package from [the Releases page](https://gitlab.com/brlin/media-to-whisper.cpp-subtitles/-/releases).\n1. Extract the downloaded application release package using your preferred archive manipulation utility.\n1. Launch your preferred text terminal emulator application.\n1. Refer to [the Environment variables that can change the utility's behaviors section](#environment-variables-that-can-change-the-utilitys-behaviors) for environment variables that can change the utility's behaviors according to your preference and run the utility by running the following command:\n\n    ```bash\n    _ENV_VAR_NAME1_=_env_var_value1_ _ENV_VAR_NAME2_=_env_var_value2_... \\\n        /path/to/media-to-whisper.cpp-subtitles/transcribe-media-to-subtitles.sh \\\n        _input_media_1_ _input_media_2_...\n    ```\n\n   The generated subtitles files will be saved in the same directory with the input files.\n\n## Environment variables that can change the utility's behaviors\n\nThe following environment variables can change the utility's behaviors according to your preference, use these environment variables to optimize your workload:\n\n### GGML_MODEL\n\nThe whisper.cpp model file to infer the subtitles.\n\n**Supported values:**\n\n* (Absolute path of the model file you want to use)\n* (Relative path of the model file you want to use)\n\n**Default value:** `ggml-medium.bin`\n\n### TRANSCRIBE_THREADS\n\nThe thread count for doing the subtitle transcribe task.\n\n**Supported values:**\n\n* `auto`: Automatically determine the optimal transcribe thread count while taken [the `TRANSCRIBE_THREADS_NEGATIVE_OFFSET` environment variable](#transcribe_threads_negative_offset) into consideration\n* (A natural number of user-specified thread count)\n\n**Default value:** `auto`\n\n### TRANSCRIBE_THREADS_NEGATIVE_OFFSET\n\nWhen [the `TRANSCRIBE_THREADS` environment variable](#transcribe_threads) is set to `auto`, this environment variable determines the negative offset that will be applied to the transcribe thread count to allow user to adapt it to their system's optimal settings.\n\n**Supported values:**\n\n(A non-negative number that will be deducted from the detected thread count available to the process)\n\n**Default value:**\n\n`1` (Deduct one from the detected available thread count, on a 8 total CPU thread system the optimal transcribe thread count will be determined to be `7`)\n\n### WHISPERCPP_MAIN\n\nSpecify the base command of the Whisper.cpp main program.  This environment variable allows users to use a different Whisper.cpp distribution other than the snap.\n\n**Supported values:**\n\n* The path of a valid Whisper.cpp main program.\n* The base command of a valid Whisper.cpp main program, if it is in the command search PATHs.\n\n**Default value:** `whisper-cpp-main`\n\nUse [the unofficial snap distribution](https://snapcraft.io/whisper-cpp)'s main app command.\n\n## Licensing\n\nUnless otherwise noted(individual file's header/[REUSE.toml](REUSE.toml)), this product is licensed under [the 3.0 version of the GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html), or any of its more recent versions of your preference.\n\nThis work complies to [the REUSE Specification](https://reuse.software/spec/), refer the [REUSE - Make licensing easy for everyone](https://reuse.software/) website for info regarding the licensing of this product.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrlin-tw%2Fmedia-to-whisper.cpp-subtitles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrlin-tw%2Fmedia-to-whisper.cpp-subtitles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrlin-tw%2Fmedia-to-whisper.cpp-subtitles/lists"}