{"id":20003305,"url":"https://github.com/tompaana/hls-transcription-sample","last_synced_at":"2025-05-04T15:34:52.565Z","repository":{"id":79870582,"uuid":"127413337","full_name":"tompaana/hls-transcription-sample","owner":"tompaana","description":"Sample demonstrating how to transcribe/live-subtitle HTTP Live Streaming media.","archived":false,"fork":false,"pushed_at":"2018-03-30T16:26:57.000Z","size":27,"stargazers_count":10,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-08T08:05:55.151Z","etag":null,"topics":["c-sharp","hls","http-live-streaming","transcription"],"latest_commit_sha":null,"homepage":null,"language":"C#","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/tompaana.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":"2018-03-30T10:06:13.000Z","updated_at":"2023-10-11T17:35:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"b53553ee-2209-4255-b1f3-e3a945da5bc6","html_url":"https://github.com/tompaana/hls-transcription-sample","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tompaana%2Fhls-transcription-sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tompaana%2Fhls-transcription-sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tompaana%2Fhls-transcription-sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tompaana%2Fhls-transcription-sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tompaana","download_url":"https://codeload.github.com/tompaana/hls-transcription-sample/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252357358,"owners_count":21735128,"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":["c-sharp","hls","http-live-streaming","transcription"],"created_at":"2024-11-13T05:25:04.233Z","updated_at":"2025-05-04T15:34:52.549Z","avatar_url":"https://github.com/tompaana.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"HTTP Live Stream (HLS) Transcriber Sample\n=========================================\n\nThis sample demonstrates how to transcribe/live-subtitle\n[HTTP Live Streaming (HLS)](https://en.wikipedia.org/wiki/HTTP_Live_Streaming) media.\nThe project is developed for .NET Framework 4.7.1, but should be compatible with versions \u003e= 4.6.\nThe audio extraction and format detection is implemented using\n[NAudio library](https://github.com/naudio/NAudio). The transciption is done with\n[Bing Speech API](https://azure.microsoft.com/en-us/services/cognitive-services/speech/).\n\n## Getting started ##\n\n1. Open the [HLSSample.sln](/HLSSample.sln) solution file with Visual Studio\n2. Select the start-up project (`HSLConsoleTest.NETFramework` or `HSLWPFTest.NETFramework`):\n   Right-click the project name in **Solution Explorer** and select **Set as StartUp Project**\n3. Insert the **playlist URL** (`.m3u8` file) as the value of `PlaylistUrl` string constant:\n    * To [Program.cs file](/HLSConsoleTest.NETFramework/Program.cs#L11) in the console app \n    * To [MainWindow.xaml.cs file](/HLSWPFTest.NETFramework/MainWindow.xaml.cs#L17) in the WPF app\n4. Insert the **Bing Speech API** subscription key to enable transcription (can be omitted but so will then be the transcription)\n5. Run and enjoy\n\n## Implementation ##\n\nThe solution consists of three projects:\n1. [HSTools.NETFramework](/HLSTools.NETFramework),\n2. [HSLConsoleTest.NETFramework](/HLSConsoleTest.NETFramework) and\n3. [HSLWPFTest.NETFramework](/HLSWPFTest.NETFramework).\n\n**HSLTools.NETFramework** is a class library project containing the main functionality whilst the\ntwo other (demo apps) serve as examples on how to use the aforementioned library.\n\n### HSLTools ###\n\nThe **HSLTools** class library implements the following features:\n* Loading and parsing HTTP Live Stream playlists (`.m3u8` files)\n* Downloading `.ts` files into memory\n* Extracting audio from `.ts` files utilizing [NAudio library](https://github.com/naudio/NAudio)\n* Saving binary files on local disk\n* Transcribing audio (bytes) with [Bing Speech API](https://azure.microsoft.com/en-us/services/cognitive-services/speech/)\n\nThe main class of the library is [HLSProcessor](/HLSTools.NETFramework/HLSProcessor.cs).\nSee the two demo application projects (HLSConsoleTest and HLSWPFTest) to learn how to use the class\nlibrary.\n\n### HLSConsoleTest and HLSWPFTest projects ###\n\n**HLSConsoleTest** processes the given playlist and displays the audio transcription in the\nconsole window. **HLSWPFTest** plays and displays the video files in the playlist with\nsubtitles, which are produced by transcribing the audio in the media.\n\n## What's missing? ##\n\nThis is not a production-ready piece of code, but rather a proof-of-concept.\nStuff missing/to consider:\n* Universal Windows applications are not supported - please support/contribute to the awesome\n  [NAudio project](https://github.com/naudio/NAudio) in order to enable UWP compatibility.\n* The media chunks are processed as they come (via the playlist). Thus, if/when the audio in\n  the chunk is terminated in the middle of a word, the transcription is incomplete\n  * \"TODO\" item here: Refactor/break the chunks in pieces based on the silent bits in the audio\n* The [MediaElement](https://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement(v=vs.110).aspx)\n  in WPF applications does not support HTTP Live Stream out-of-the-box - the quick and dirty\n  approach taken here is to save the `.ts` files onto local disk and to feed the `MediaElement` the\n  local URIs.\n\n## Credits ##\n\nThis project was one of the outcomes of a short hackfest and was developed by the following\nfantastic team of people (in alphabetical order):\n* [Wagner Alves](https://github.com/keyrox)\n* [Toby Bradshaw](https://github.com/tobybrad)\n* [João Goncalves](https://github.com/goncalvesj)\n* [Tomi Paananen](https://github.com/tompaana)\n* [Anita Ramanan](https://github.com/anraman)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftompaana%2Fhls-transcription-sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftompaana%2Fhls-transcription-sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftompaana%2Fhls-transcription-sample/lists"}