{"id":22191796,"url":"https://github.com/bigbluebutton/speech_to_text","last_synced_at":"2026-02-28T17:32:22.998Z","repository":{"id":45108825,"uuid":"193533246","full_name":"bigbluebutton/speech_to_text","owner":"bigbluebutton","description":null,"archived":false,"fork":false,"pushed_at":"2023-06-13T21:02:47.000Z","size":4723,"stargazers_count":6,"open_issues_count":5,"forks_count":7,"subscribers_count":9,"default_branch":"master","last_synced_at":"2026-01-06T16:52:51.213Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/bigbluebutton.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}},"created_at":"2019-06-24T15:38:54.000Z","updated_at":"2024-08-12T19:50:23.000Z","dependencies_parsed_at":"2024-02-03T01:41:38.383Z","dependency_job_id":"b8953838-9ea8-45b8-bc6d-d8329ad533cb","html_url":"https://github.com/bigbluebutton/speech_to_text","commit_stats":{"total_commits":101,"total_committers":3,"mean_commits":"33.666666666666664","dds":0.1188118811881188,"last_synced_commit":"fe8f7068ca4883c01642e2c26f1b1321cc1ef745"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/bigbluebutton/speech_to_text","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fspeech_to_text","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fspeech_to_text/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fspeech_to_text/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fspeech_to_text/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bigbluebutton","download_url":"https://codeload.github.com/bigbluebutton/speech_to_text/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigbluebutton%2Fspeech_to_text/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29944767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T13:49:17.081Z","status":"ssl_error","status_checked_at":"2026-02-28T13:48:50.396Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-12-02T12:17:48.755Z","updated_at":"2026-02-28T17:32:22.979Z","avatar_url":"https://github.com/bigbluebutton.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpeechToText\n\nWelcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/speech_to_text`. To experiment with that code, run `bin/console` for an interactive prompt.\n\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'speech_to_text'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install speech_to_text\n\n## Usage\nBigBlueButton provides various captions services.\nUse following command to access the different services.\n\nSTEP 1. Video to Audio\n\nYou have to convert video to audio using following command\nfor example,your video is inside \"/home/abc/xyz/video.mp4\" and you want audio in other directory \"/home/bbb/audio.mp3\"\n```ruby\nSpeechToText::Util.video_to_audio(video_file_path:\"/home/abc/xyz\",\n                                  video_name:\"video\",\n                                  video_content_type: \"mp4\",\n                                  audio_file_path:\"/home/bbb\",\n                                  audio_name:\"audio\",\n                                  audio_content_type:\"mp3\",\n                                  start_time: '0',\n                                  duration: '20')\n\n#start_time and duration are optional parameters\n```\nSTEP 2. Get array using any service given below\n\nThen based on the service you can execute one of the following command.\n\n=\u003eif service = ibm, execute following commands\n```ruby\n#example values\naudio_file_path = \"/home/bbb\"\napikey = \"\u003capikey\u003e\" #provided by IBM\naudio = \"audio\"\ncontent_type = \"mp3\"\nlanguage_code = \"en-US\" #check this for language_code: https://github.com/silentflameCR/text-track-service\njob_id = SpeechToText::IbmWatsonS2T.create_job(audio_file_path:\"/home/bbb\",\n                                                apikey:\"\u003capikey\u003e\",\n                                                audio:\"audio\",\n                                                content_type:\"mp3\",\n                                                language_code:\"en-US\")\n\ndata = SpeechToText::IbmWatsonS2T.check_job(job_id,apikey)\nmyarray = SpeechToText::IbmWatsonS2T.create_array_watson(data[\"results\"][0])\n```\n\n=\u003eif service = google,\n\nExecute following command in order to set environment\n```ruby\nSpeechToText::GoogleS2T.set_environment(\"\u003cgoogle_auth_file\u003e\")\n```\nAfter setting environment, execute following commands to get google transcription\nbucket_name could be any string\n```ruby\n#example value\n  audio_file_path = \"/home/bbb\"\n  audio_name = \"audio\"\n  audio_content_type = \"mp3\"\n  bucket_name = \"mybucket\"\n  language_code = \"en-US\" #check this for language_code:https://github.com/silentflameCR/text-track-service\n\nfile = SpeechToText::GoogleS2T.google_storage(audio_file_path,audio_name,audio_content_type,bucket_name)\noperation_name = SpeechToText::GoogleS2T.create_job(audio_name,audio_content_type,bucket_name,language_code)\ndata = SpeechToText::GoogleS2T.check_status(operation_name)\nmyarray = SpeechToText::GoogleS2T.create_array_google(data[\"results\"])\nSpeechToText::GoogleS2T.delete_google_storage(bucket_name,audio_name,audio_content_type)\n```\n\n=\u003eif service = mozilla_deepspeech\n\n```ruby\n#example values\n audio = \"/home/bbb/audio.wav\" #audio should be in wav format\n server_url = \"http://localhost:4000\"\n\n#function will make a http post request to server_url/deepspeech/createjob\njobID = SpeechToText::MozillaDeepspeechS2T.create_job(audio,server_url,jobdetails_json)\n\n#function will make a http get request to server_url/deepspeech/checkstatus/\"\u003cjobID\u003e\"\nstatus = SpeechToText::MozillaDeepspeechS2T.checkstatus(jobID,server_url)\n\n#only if status == \"completed\"\ndata = SpeechToText::MozillaDeepspeechS2T.order_transcript(jobID,server_url)\nmyarray = SpeechToText::MozillaDeepspeechS2T.create_mozilla_array(data)\n```\n\n=\u003eif service = speechmatics\n\n```ruby\n#example values\n  audio_file_path = \"/home/bbb\"\n  audio_name = \"audio\"\n  audio_content_type = \"mp3\"\n  userID = \"12345\"  #provided by speechmetics\n  authKey = \"\u003cauthKey\u003e\" #provided by speechmatics\n  jobID_json_file = \"/home/bbb/audio/jobid.json\" #method will create json file with job details\n  model = \"en-US\" #check this for model:https://github.com/silentflameCR/text-track-service\n\njobID = SpeechToText::SpeechmaticsS2T.create_job(audio_file_path,audio_name,audio_content_type,userID,authKey,model,jobID_json_file)\nwait_time = SpeechToText::SpeechmaticsS2T.check_job(userID,jobID,authKey)\n#if wait_time is nil\ndata = SpeechToText::SpeechmaticsS2T.get_transcription(userID,jobID,authKey)\nmyarray = SpeechToText::SpeechmaticsS2T.create_array_speechmatic data\n```\n\n=\u003eif service = 3playmedia,\n\n```ruby\n#example values,\n  audio = \"/home/bbb/audio.mp3\"\n  name = \"test1\"\n  api_Key = \"\u003ca_id_Key\u003e\" #provided by 3playmedia\n  turnaround_level_id = 5 #could be any number between 1 to 6. simply means the level of priority. 1 means lowest priority.\n  output_format_id = 139 #use 139 for vtt file and 7 for srt file\n  jobID_json_file = \"/home/bbb/audio/jobid.json\" #method will create json file with job details\n  vtt_file = \"/home/bbb/vttfile.vtt\"\n\njob_id = SpeechToText::ThreePlaymediaS2T.create_job(api_key,audio_file,name,jobID_json_file)\ntranscript_id = SpeechToText::ThreePlaymediaS2T.order_transcript(api_key,job_id,turnaround_level_id)\nstatus = SpeechToText::ThreePlaymediaS2T.check_status(api_key,transcript_id)\nSpeechToText::ThreePlaymediaS2T.get_vttfile(api_key,output_format_id,transcript_id,vtt_file)\n```\n\n\nFinal step:\nonce you get the myarray, you can execute command to create vtt file\n\n```ruby\n#example values\nvtt_file_path = \"/home/bbb\"\nvtt_file_name = \"vttfile.vtt\"\n\nSpeechToText::Util.write_to_webvtt(vtt_file_path: \"vtt_file_path\", vtt_file_name: \"vtt_file_name\", myarray: myarray, start_time: \"5\")\n```\n\nNOTE: if you choose 3playmedia then you don't need to create myarray, you will directly get the vtt file\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.\n\nTo install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).\n\nNOTE : After your changes execute this commands\n1. Build your gem file : 'gem build speech_to_text.gemspec'\n2. Install your gem file : 'gem install speech_to_text-0.1.2.gem'                  //replace the version number\n3. 'bundle install'                                                                //optional command\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/speech_to_text.\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigbluebutton%2Fspeech_to_text","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbigbluebutton%2Fspeech_to_text","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigbluebutton%2Fspeech_to_text/lists"}