{"id":13811857,"url":"https://github.com/anthonychu/captionr","last_synced_at":"2025-04-13T03:20:32.476Z","repository":{"id":34486960,"uuid":"177517436","full_name":"anthonychu/captionr","owner":"anthonychu","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-03T18:32:32.000Z","size":3206,"stargazers_count":62,"open_issues_count":20,"forks_count":38,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-26T20:21:21.270Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://anthonychu.ca/post/realtime-captioning-translation-cognitive-services-signalr-azure-functions/","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/anthonychu.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}},"created_at":"2019-03-25T05:02:00.000Z","updated_at":"2025-01-13T18:09:42.000Z","dependencies_parsed_at":"2023-01-15T07:30:48.485Z","dependency_job_id":null,"html_url":"https://github.com/anthonychu/captionr","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/anthonychu%2Fcaptionr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonychu%2Fcaptionr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonychu%2Fcaptionr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anthonychu%2Fcaptionr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anthonychu","download_url":"https://codeload.github.com/anthonychu/captionr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248658331,"owners_count":21140925,"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":[],"created_at":"2024-08-04T04:00:36.825Z","updated_at":"2025-04-13T03:20:32.452Z","avatar_url":"https://github.com/anthonychu.png","language":"C#","funding_links":[],"categories":["C#"],"sub_categories":[],"readme":"# CaptionR\n\nServerless real-time captioning and translation using:\n\n* Microsoft Azure Cognitive Services - [Speech-to-Text JavaScript SDK](https://www.npmjs.com/package/microsoft-cognitiveservices-speech-sdk)\n* [Vue.js](https://vuejs.org/)\n* [Azure Functions](https://docs.microsoft.com/azure/azure-functions/?WT.mc_id=captionr-github-antchu)\n* [Azure SignalR Service](https://docs.microsoft.com/azure/azure-signalr/?WT.mc_id=captionr-github-antchu)\n\n## Resources\n\n### Demo\n\n[![CaptionR Demo](https://img.youtube.com/vi/YLtXoGk8A1c/0.jpg)](https://www.youtube.com/watch?v=YLtXoGk8A1c)\n\n### Blog Post\n\n[Real-time Speech-to-Text and Translation with Cognitive Services, Azure Functions, and SignalR Service](https://anthonychu.ca/post/realtime-captioning-translation-cognitive-services-signalr-azure-functions/)\n\n### Architecture\n\n![Project architecture](media/architecture.png)\n\n## Project setup\n\nThe app has 2 main projects:\n* Vue.js frontend in `src/vueapp`\n* Azure Functions backend in `src/functions-javascript` (C# and Java also available)\n\n### Azure resources\n\nYou'll also need to create a couple of free resources on Azure to get started:\n\n#### Azure Speech Services - free tier\n\n```bash\naz cognitiveservices account create -n $SPEECH_SERVICE_NAME -g $RESOURCE_GROUP_NAME --kind SpeechServices --sku F0 -l westus\naz cognitiveservices account keys list -n $SPEECH_SERVICE_NAME -g $RESOURCE_GROUP_NAME\n```\n\n`F0` is the free SKU. You can also create it in the [portal](https://portal.azure.com/?WT.mc_id=captionr-github-antchu#create/Microsoft.CognitiveServicesSpeechServices).\n\n#### Azure SignalR Service - free tier\n\n```bash\naz signalr create -n $SIGNALR_NAME -g $RESOURCE_GROUP_NAME --sku Free_DS2 -l westus\naz signalr key list -n $SIGNALR_NAME -g $RESOURCE_GROUP_NAME\n```\n\nYou can also create it using the [portal](https://portal.azure.com/?WT.mc_id=captionr-github-antchu#create/Microsoft.SignalRGalleryPackage).\n\n### Vue.js app\n\nInstall npm packages and start the Vue.js dev server:\n\n```bash\nnpm install\nnpm run serve\n```\n\n### Azure Function app\n\nCreate a file named local.settings.json (copy from local.settings.sample.json). Fill in the SignalR Service connection string.\n\nWith the [Azure Functions Core Tools](https://docs.microsoft.com/azure/azure-functions/functions-run-local?WT.mc_id=captionr-github-antchu#install-the-azure-functions-core-tools) installed, run the function app:\n\n(JavaScript)\n\n```bash\nfunc extensions install\nfunc start\n```\n\n## More information\n\nCheck out the [blog post](https://anthonychu.ca/post/realtime-captioning-translation-cognitive-services-signalr-azure-functions/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonychu%2Fcaptionr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanthonychu%2Fcaptionr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanthonychu%2Fcaptionr/lists"}