{"id":20317313,"url":"https://github.com/botbahlul/vosk-powered-live-subtitle","last_synced_at":"2025-04-11T17:42:56.049Z","repository":{"id":60589067,"uuid":"544048850","full_name":"botbahlul/VOSK-Powered-LIVE-SUBTITLE","owner":"botbahlul","description":"ANDROID APP that can RECOGNIZE ANY LIVE AUDIO/VIDEO STREAMING (using VOSK Speech Recognition API) then TRANSLATE (using ANDROID MLKIT TRANSLATE API) and display it as LIVE CAPTION / LIVE SUBTITLE","archived":false,"fork":false,"pushed_at":"2024-05-05T16:59:59.000Z","size":97721,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T13:45:44.855Z","etag":null,"topics":["android","auto-caption","auto-subtitle","java","live-subtitle","mlkit-translate","speech-recognition","voice-recognition","vosk"],"latest_commit_sha":null,"homepage":"","language":"Java","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/botbahlul.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-10-01T14:03:37.000Z","updated_at":"2024-11-17T19:29:11.000Z","dependencies_parsed_at":"2024-05-05T18:35:06.251Z","dependency_job_id":null,"html_url":"https://github.com/botbahlul/VOSK-Powered-LIVE-SUBTITLE","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botbahlul%2FVOSK-Powered-LIVE-SUBTITLE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botbahlul%2FVOSK-Powered-LIVE-SUBTITLE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botbahlul%2FVOSK-Powered-LIVE-SUBTITLE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botbahlul%2FVOSK-Powered-LIVE-SUBTITLE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/botbahlul","download_url":"https://codeload.github.com/botbahlul/VOSK-Powered-LIVE-SUBTITLE/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248451666,"owners_count":21105912,"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":["android","auto-caption","auto-subtitle","java","live-subtitle","mlkit-translate","speech-recognition","voice-recognition","vosk"],"created_at":"2024-11-14T18:30:54.086Z","updated_at":"2025-04-11T17:42:56.030Z","avatar_url":"https://github.com/botbahlul.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VOSK-Powered-LIVE-SUBTITLE\n\nANDROID APP that can RECOGNIZE ANY LIVE AUDIO/VIDEO STREAMING (powered by VOSK Speech Recognition API) then TRANSLATE (powered by ANDROID MLKIT TRANSLATE) and display them as SUBTITLES\n\n\nhttps://user-images.githubusercontent.com/88623122/193421588-a7a6cf3d-c241-44fe-b29b-2bac910dd1e2.mp4\n\nUPDATE NOTES : I SUGGEST NOT TO USE THIS VARIANT ANYMORE, PLEASE USE VARIANT 3 AT :\nhttps://github.com/botbahlul/VOSK-Powered-Live-Subtitle-V3\n\nThis app has PROS \u0026 CONS compared to other Speech Recognition APIs like those free Android Developer Speech Recognition, IBM WATSON, and PREMIUM GOOGPLE SPEECH API\n\nPROS:\nIt's FREE, FULL DUPLEX (CAN DIRECTLY LISTEN TO ANY AUDIO/VIDEO MEDIA PLAYERS inlcuding WEB BROWSERS!) and has a quietly good enough accuracy\n\nCONS:\nIt's currently only support 20 languages and NEED BIG STORAGE to store those all LANGUAGE MODELS\n\nNOTES:\nGitgub doesn't support big files upload, so I can only upload English model to this git, but you can try complete compiled apk in Realese page (about 1.4GB size!)\n\nTo complete this source code with another language models please download those SMALL MODELS from VOSK website https://alphacephei.com/vosk/models then extract them into models/src/main/assets folders with FOLDERS NAME in ISO CODES like en-US, ca-ES, de-DE, etc, just as they writen in models/build.gradle.\n\n```\napply plugin: 'com.android.library'\n\nandroid {\n    compileSdkVersion 32\n    defaultConfig {\n        minSdkVersion 23\n        targetSdkVersion 32\n    }\n    buildFeatures {\n        buildConfig = false\n    }\n    sourceSets {\n        main {\n            assets.srcDirs += \"$buildDir/generated/assets\"\n        }\n    }\n    compileOptions {\n        sourceCompatibility JavaVersion.VERSION_1_8\n        targetCompatibility JavaVersion.VERSION_1_8\n    }\n}\n\ntasks.register('genUUID') {\n    def uuid0 = UUID.randomUUID().toString()\n    def odir0 = file(\"$buildDir/generated/assets/en-US\")\n    def ofile0 = file(\"$odir0/uuid\")\n    doLast {\n        mkdir odir0\n        ofile0.text = uuid0\n    }\n\n    def uuid1 = UUID.randomUUID().toString()\n    def odir1 = file(\"$buildDir/generated/assets/zh-CN\")\n    def ofile1 = file(\"$odir1/uuid\")\n    doLast {\n        mkdir odir1\n        ofile1.text = uuid1\n    }\n\n    def uuid2 = UUID.randomUUID().toString()\n    def odir2 = file(\"$buildDir/generated/assets/ru-RU\")\n    def ofile2 = file(\"$odir2/uuid\")\n    doLast {\n        mkdir odir2\n        ofile2.text = uuid2\n    }\n\n    def uuid3 = UUID.randomUUID().toString()\n    def odir3 = file(\"$buildDir/generated/assets/fr-FR\")\n    def ofile3 = file(\"$odir3/uuid\")\n    doLast {\n        mkdir odir3\n        ofile3.text = uuid3\n    }\n\n    def uuid4 = UUID.randomUUID().toString()\n    def odir4 = file(\"$buildDir/generated/assets/de-DE\")\n    def ofile4 = file(\"$odir4/uuid\")\n    doLast {\n        mkdir odir4\n        ofile4.text = uuid4\n    }\n\n    def uuid5 = UUID.randomUUID().toString()\n    def odir5 = file(\"$buildDir/generated/assets/es-ES\")\n    def ofile5 = file(\"$odir5/uuid\")\n    doLast {\n        mkdir odir5\n        ofile5.text = uuid5\n    }\n\n    def uuid6 = UUID.randomUUID().toString()\n    def odir6 = file(\"$buildDir/generated/assets/pt-PT\")\n    def ofile6 = file(\"$odir6/uuid\")\n    doLast {\n        mkdir odir6\n        ofile6.text = uuid6\n    }\n\n    def uuid7 = UUID.randomUUID().toString()\n    def odir7 = file(\"$buildDir/generated/assets/tr-TR\")\n    def ofile7 = file(\"$odir7/uuid\")\n    doLast {\n        mkdir odir7\n        ofile7.text = uuid7\n    }\n\n    def uuid8 = UUID.randomUUID().toString()\n    def odir8 = file(\"$buildDir/generated/assets/vi-VN\")\n    def ofile8 = file(\"$odir8/uuid\")\n    doLast {\n        mkdir odir8\n        ofile8.text = uuid8\n    }\n\n    def uuid9 = UUID.randomUUID().toString()\n    def odir9 = file(\"$buildDir/generated/assets/it-IT\")\n    def ofile9 = file(\"$odir9/uuid\")\n    doLast {\n        mkdir odir9\n        ofile9.text = uuid9\n    }\n\n    def uuid10 = UUID.randomUUID().toString()\n    def odir10 = file(\"$buildDir/generated/assets/nl-NL\")\n    def ofile10 = file(\"$odir10/uuid\")\n    doLast {\n        mkdir odir10\n        ofile10.text = uuid10\n    }\n\n    def uuid11 = UUID.randomUUID().toString()\n    def odir11 = file(\"$buildDir/generated/assets/ca-ES\")\n    def ofile11 = file(\"$odir11/uuid\")\n    doLast {\n        mkdir odir11\n        ofile11.text = uuid11\n    }\n\n    def uuid12 = UUID.randomUUID().toString()\n    def odir12 = file(\"$buildDir/generated/assets/fa-IR\")\n    def ofile12 = file(\"$odir12/uuid\")\n    doLast {\n        mkdir odir12\n        ofile12.text = uuid12\n    }\n\n    def uuid13 = UUID.randomUUID().toString()\n    def odir13 = file(\"$buildDir/generated/assets/uk-UA\")\n    def ofile13 = file(\"$odir13/uuid\")\n    doLast {\n        mkdir odir13\n        ofile13.text = uuid13\n    }\n\n    def uuid14 = UUID.randomUUID().toString()\n    def odir14 = file(\"$buildDir/generated/assets/kk-KZ\")\n    def ofile14 = file(\"$odir14/uuid\")\n    doLast {\n        mkdir odir14\n        ofile14.text = uuid14\n    }\n\n    def uuid15 = UUID.randomUUID().toString()\n    def odir15 = file(\"$buildDir/generated/assets/sv-SE\")\n    def ofile15 = file(\"$odir15/uuid\")\n    doLast {\n        mkdir odir15\n        ofile15.text = uuid15\n    }\n\n    def uuid16 = UUID.randomUUID().toString()\n    def odir16 = file(\"$buildDir/generated/assets/ja-JP\")\n    def ofile16 = file(\"$odir16/uuid\")\n    doLast {\n        mkdir odir16\n        ofile16.text = uuid16\n    }\n\n    def uuid17 = UUID.randomUUID().toString()\n    def odir17 = file(\"$buildDir/generated/assets/eo-EO\")\n    def ofile17 = file(\"$odir17/uuid\")\n    doLast {\n        mkdir odir17\n        ofile17.text = uuid17\n    }\n\n    def uuid18 = UUID.randomUUID().toString()\n    def odir18 = file(\"$buildDir/generated/assets/hi-IN\")\n    def ofile18 = file(\"$odir18/uuid\")\n    doLast {\n        mkdir odir18\n        ofile18.text = uuid18\n    }\n\n    def uuid19 = UUID.randomUUID().toString()\n    def odir19 = file(\"$buildDir/generated/assets/cs-CZ\")\n    def ofile19 = file(\"$odir19/uuid\")\n    doLast {\n        mkdir odir19\n        ofile19.text = uuid19\n    }\n\n    def uuid20 = UUID.randomUUID().toString()\n    def odir20 = file(\"$buildDir/generated/assets/pl-PL\")\n    def ofile20 = file(\"$odir20/uuid\")\n    doLast {\n        mkdir odir20\n        ofile20.text = uuid20\n    }\n\n}\n\npreBuild.dependsOn(genUUID)\n```\n\n![image](https://user-images.githubusercontent.com/88623122/193415122-a183547c-0c78-4be0-9ce0-18b8d11fa548.png)\n\nIf you need a MANAGABLE STORAGE SPACE USED BY VOSK MODELS (you can dinamically DOWNLOAD and DELETE models in your phone storage), you can try this git https://github.com/botbahlul/VOSK-Powered-LIVE-SUBTITLE-V2\n\nCheck my other SPEECH RECOGNITIION + TRANSLATE PROJECTS https://github.com/botbahlul?tab=repositories\n\nBuy me coffee : https://sociabuzz.com/botbahlul/tribe\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbotbahlul%2Fvosk-powered-live-subtitle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbotbahlul%2Fvosk-powered-live-subtitle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbotbahlul%2Fvosk-powered-live-subtitle/lists"}