{"id":27240822,"url":"https://github.com/horgix/tmadl","last_synced_at":"2025-04-10T19:55:58.560Z","repository":{"id":285253427,"uuid":"957521303","full_name":"Horgix/tmadl","owner":"Horgix","description":"TMA;DL (Too Much Audio, Didn't Listen) — A terminal/CLI meetings \u0026 discussions recordings processor using AI","archived":false,"fork":false,"pushed_at":"2025-04-06T01:16:57.000Z","size":135,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T06:06:36.080Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/Horgix.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}},"created_at":"2025-03-30T15:23:15.000Z","updated_at":"2025-04-06T01:17:00.000Z","dependencies_parsed_at":"2025-03-30T16:38:45.638Z","dependency_job_id":null,"html_url":"https://github.com/Horgix/tmadl","commit_stats":null,"previous_names":["horgix/tmadl"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Horgix%2Ftmadl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Horgix%2Ftmadl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Horgix%2Ftmadl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Horgix%2Ftmadl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Horgix","download_url":"https://codeload.github.com/Horgix/tmadl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248285456,"owners_count":21078294,"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":"2025-04-10T19:55:57.977Z","updated_at":"2025-04-10T19:55:58.544Z","avatar_url":"https://github.com/Horgix.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TMA;DL - Too Much Audio, Didn't Listen\n\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/Horgix/tmadl/build.yml)\n![GitHub License (MIT)](https://img.shields.io/github/license/Horgix/tmadl)\n\n`tmadl` is a meetings \u0026 discussions recordings processor.\n\nIt's a personal project trying to make it easier to process meetings and\ndiscussion recordings with IA from your terminal/CLI.\n\n## The gist of it\n\nThe workflow that enable TMA;DL is essentially:\n\n1. **Record** a meeting or discussion —  _no matter if it's through the native\n   GMeet feature, a local `ffmpeg` command (soon to be wrapped in `tmadl\n   record`), a recording made on your phone, etc._\n2. **Upload** the resulting audio file to S3 through `tmadl upload`\n3. _An AWS StepFunction (deployed through AWS SAM as provided in [the\n   `tmadl-transcription-audio-to-clean-txt`\n   directory](./tmadl-transcription-audio-to-clean-txt)) automatically kicks\n   in, transcribe the audio into text through AWS Transcribe and a couple\n   lambdas_\n4. **Summarize/interrogate** your transcrips using `tmadl ask` that queries AWS\n   Bedrock (Anthropic Claude), providing meaningful context and the transcript\n   in order to summarize it **the way you want**.\n\n## The CLI\n\n```\n$ ./target/debug/tmadl --help\n\nTMA;DL (Too Much Audio, Didn't Listen) — A terminal/CLI meetings \u0026 discussions recordings processor using AI\n\nUsage: tmadl [COMMAND]\n\nCommands:\n  record  Record a new meeting/conversation # Through ffmpeg. To be implemented\n  upload  Upload a local recording to S3\n  list    List all recordings (and their transcription statuses)\n  ask     Interrogate a transcription\n  help    Print this message or the help of the given subcommand(s)\n\nOptions:\n  -h, --help     Print help\n  -V, --version  Print version\n```\n\n## The StepFunction\n\n![TMA;DL audio transcription to clean txt through AWS\nStepFunction](./tmadl-transcription-audio-to-clean-txt/docs/stepfunction.png)\n\n## Internals\n\n- The awesome **`clap` Rust library** is used to handle the CLI processing\n  (commands/subcommands and their arguments/parameters)\n- **AWS S3** to store the meeting recordings (audio files)\n- **AWS Transcribe** to do the audio transcription to text\n- **AWS Bedrock** to do the transcriptions summarization on-demand\n\nTODO later add:\n\n- Sam for reaction on S3\n- Ratatui or other for the dynamic termui?\n\nhttps://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n- Uses the `InvokeModel` API from the Bedrock Runtime - _**not** the Converse\n  API or something else_\n- Claude message API format\nhttps://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html\n- High number of tokens + timeout to support long meetings\n\n\n```\nmagicalrecord: aliased to ffmpeg -f pulse -i virtual_output_for_recording_purpose.monitor -f pulse -i alsa_input.pci-0000_07_00.6.HiFi__Mic1__source -filter_complex \"[0:a]aresample=sample_rate=44100,volume=1[a0];[1:a]aresample=sample_rate=44100,volume=3[a1];[a0][a1]amix=inputs=2\"  -ac 2\n```\n\n```\npactl load-module module-null-sink sink_name=virtual_output_for_recording_purpose\npactl load-module module-loopback source=virtual_output_for_recording_purpose.monitor\n```\n\n- id+date must be unique\n- ID can be duplicate\n- Files will be name as date_id.whateverextension\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhorgix%2Ftmadl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhorgix%2Ftmadl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhorgix%2Ftmadl/lists"}