{"id":31911504,"url":"https://github.com/aryankumarofficial/speech-segmentation-web-app","last_synced_at":"2026-05-04T13:36:19.923Z","repository":{"id":317430358,"uuid":"1066737484","full_name":"AryanKumarOfficial/Speech-Segmentation-Web-App","owner":"AryanKumarOfficial","description":"Interactive FastAPI web app for segmenting speech into clips with timestamps, using ffmpeg and Python.","archived":false,"fork":false,"pushed_at":"2025-09-30T19:50:55.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-30T21:27:27.231Z","etag":null,"topics":["audio-processing","docker","fastapi","ffmpeg","python","render-deploy","speech-segmentation","webapp"],"latest_commit_sha":null,"homepage":"https://speech-segmentation-web-app.onrender.com/","language":"HTML","has_issues":true,"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/AryanKumarOfficial.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-29T22:21:31.000Z","updated_at":"2025-09-30T20:10:46.000Z","dependencies_parsed_at":"2025-09-30T21:27:28.673Z","dependency_job_id":null,"html_url":"https://github.com/AryanKumarOfficial/Speech-Segmentation-Web-App","commit_stats":null,"previous_names":["aryankumarofficial/speech-segmentation-web-app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/AryanKumarOfficial/Speech-Segmentation-Web-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AryanKumarOfficial%2FSpeech-Segmentation-Web-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AryanKumarOfficial%2FSpeech-Segmentation-Web-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AryanKumarOfficial%2FSpeech-Segmentation-Web-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AryanKumarOfficial%2FSpeech-Segmentation-Web-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AryanKumarOfficial","download_url":"https://codeload.github.com/AryanKumarOfficial/Speech-Segmentation-Web-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AryanKumarOfficial%2FSpeech-Segmentation-Web-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016282,"owners_count":26085827,"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-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["audio-processing","docker","fastapi","ffmpeg","python","render-deploy","speech-segmentation","webapp"],"created_at":"2025-10-13T17:10:19.679Z","updated_at":"2025-10-13T17:10:20.836Z","avatar_url":"https://github.com/AryanKumarOfficial.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Speech Segmentation Web App\n\nInteractive FastAPI experience for the assignment in `assignment.md`. Paste the provided FileBin video (or any supported audio/video URL) and the app will:\n\n- download the media\n- extract mono 16 kHz audio\n- detect speech activity ranges\n- export the detected speech segments as individual clips\n- expose all artefacts (timestamps JSON, extracted audio, segment files) for download\n\n### Prerequisites\n\n- Python 3.10+ (tested on 3.13)\n- `ffmpeg` available on the system path (required by `pydub` / `moviepy`)\n\nCreate a virtual environment (recommended) and install dependencies:\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate  # Windows: .venv\\Scripts\\activate\npip install --upgrade pip\npip install -r requirements.txt\n```\n\n\u003e **Note:** The requirements include `audioop-lts`, a shim that restores the standard-library `audioop` module on Python builds (3.13+) where it was removed. No extra setup is needed beyond installing the requirements.\n\n### Run the web server\n\n```bash\npython main.py\n```\n\nThen open [http://localhost:8000](http://localhost:8000) and paste the assignment video URL (`https://filebin.net/1ycdsglo8k2szpj8`).\n\n### No URL yet? Try the demo\n\nIf you just want to explore the interface, use the built-in demo workflow:\n\n1. Launch the server (`python main.py`) and open the UI.\n2. Click **Run demo walkthrough**.\n3. The backend synthesises a short audio file, generates timestamps, and exports three sample segments.\n\nYou can download the demo artefacts like normal, and they are also stored under `output/demo_\u003cjob_id\u003e/` for inspection. Replace the demo with a real URL whenever you have the assignment media handy.\n\n### Docker (optional)\n\nA container recipe is provided for reproducible runs:\n\n```bash\ndocker build -t speech-segmentation .\ndocker run --rm -p 8000:8000 speech-segmentation\n```\n\nNavigate to [http://localhost:8000](http://localhost:8000) to interact with the UI as usual.\n\n### Output\n\nEach request is isolated in `output/\u003cjob_id\u003e/` and contains:\n\n- downloaded source file\n- `extracted_audio.wav`\n- `speech_timestamps.json`\n- `segmented_clips/segment_XXX.wav`\n\nThe frontend shows the timestamps in-table and provides direct download links for every artefact. All files are also served under `/output/\u003cjob_id\u003e/` so they can be accessed programmatically.\n\n### Troubleshooting\n\n- **`ModuleNotFoundError: No module named 'audioop'`** – ensure dependencies were installed from `requirements.txt`. If you are using a custom environment, explicitly install `audioop-lts`.\n- **Missing `ffmpeg` binary** – install via your package manager (`sudo apt install ffmpeg`, `brew install ffmpeg`, etc.).\n- **Large downloads** – the processing runs synchronously; very large media may take a minute or two to finish. The status message in the UI updates once segments are available.\n\n### Validation\n\nThe app modules compile successfully:\n\n```bash\npython -m compileall app\n```\n\n### Credits\n\nBuilt with care by [Aryan](https://github.com/aryankumarofficial) to support the speech-segmentation assignment workflow. Connect on [LinkedIn](https://www.linkedin.com/in/aryankumarofficial) or explore more projects on the [portfolio site](https://aryankumarofficial.tech).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryankumarofficial%2Fspeech-segmentation-web-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faryankumarofficial%2Fspeech-segmentation-web-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryankumarofficial%2Fspeech-segmentation-web-app/lists"}