# talk-summarizer
Python library to summarize talks. Turn a video file into a PDF report with a summary of each section of the talk.
`summarize_talk.py` - operates on a talk/lecture where there is a video of the speaker and slides.
- uses `ffmpeg` to extract the audio from the video
- uses `whisper` to transcribe the audio
- uses `OpenCV` to identify slide transitions and extract slides
- uses `OpenAI` to summarize each section
## Installation
Install this library using `pip`:
pip install talk-summarizer
## Usage
```bash
python talk_summarizer/summarize_talk.py \
--output_dir output \
--video_file video.mp4 \
--no-summarize \
--whisper_model tiny
```
## Development
To contribute to this library, first checkout the code. Then create a new virtual environment:
cd talk-summarizer
python -m venv venv
source venv/bin/activate
Now install the dependencies and test dependencies:
pip install -r requirements.txt
To run the tests:
pytest
Install pre-commit hooks:
pre-commit install
# Set API keys
Make sure your `OPENAI_API_KEY` is set as an environment variable in either your `.bashrc` or `.zshrc` file. For example:
```bash
export OPENAI_API_KEY=sk-1234...
```
# TODO
- [ ] get output directory working (ffmpeg not working with output directory)
- [ ] create different tasks like `transcribe` (video --> audio, transcript, overall summary). Right now `summarize_talk` works on a video (video with slides --> audio, slide images, transcript, section summaries, overall summary, report)
- [ ] add more unit tests
- [ ] use `pyproject.toml` instead of `setup.py`
Raw data
{
"_id": null,
"home_page": "https://github.com/lawwu/talk-summarizer",
"name": "talk-summarizer",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "",
"keywords": "",
"author": "Lawrence Wu",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/fe/8c/18ed19b2b26b23eea538613e9c207bd5b0699fb8ba329a5e1a9963c5f8d4/talk-summarizer-0.0.1.tar.gz",
"platform": null,
"description": "# talk-summarizer\n\nPython library to summarize talks. Turn a video file into a PDF report with a summary of each section of the talk.\n\n`summarize_talk.py` - operates on a talk/lecture where there is a video of the speaker and slides.\n\n- uses `ffmpeg` to extract the audio from the video\n- uses `whisper` to transcribe the audio\n- uses `OpenCV` to identify slide transitions and extract slides\n- uses `OpenAI` to summarize each section\n\n## Installation\n\nInstall this library using `pip`:\n\n pip install talk-summarizer\n\n## Usage\n\n```bash\npython talk_summarizer/summarize_talk.py \\\n --output_dir output \\\n --video_file video.mp4 \\\n --no-summarize \\\n --whisper_model tiny\n```\n\n## Development\n\nTo contribute to this library, first checkout the code. Then create a new virtual environment:\n\n cd talk-summarizer\n python -m venv venv\n source venv/bin/activate\n\nNow install the dependencies and test dependencies:\n\n pip install -r requirements.txt\n\nTo run the tests:\n\n pytest\n\nInstall pre-commit hooks:\n\n pre-commit install\n\n\n\n\n\n# Set API keys\n\nMake sure your `OPENAI_API_KEY` is set as an environment variable in either your `.bashrc` or `.zshrc` file. For example:\n\n```bash\nexport OPENAI_API_KEY=sk-1234...\n```\n\n\n# TODO\n\n- [ ] get output directory working (ffmpeg not working with output directory)\n- [ ] create different tasks like `transcribe` (video --> audio, transcript, overall summary). Right now `summarize_talk` works on a video (video with slides --> audio, slide images, transcript, section summaries, overall summary, report)\n- [ ] add more unit tests\n- [ ] use `pyproject.toml` instead of `setup.py`\n",
"bugtrack_url": null,
"license": "Apache License, Version 2.0",
"summary": "Python library to summarize talks",
"version": "0.0.1",
"project_urls": {
"CI": "https://github.com/lawwu/talk-summarizer/actions",
"Changelog": "https://github.com/lawwu/talk-summarizer/releases",
"Homepage": "https://github.com/lawwu/talk-summarizer",
"Issues": "https://github.com/lawwu/talk-summarizer/issues"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ff9f55f3ada88bc3e0831c9fcfa238a5333cd6fa69f5707ce98712f1ebd1cb4e",
"md5": "3eb22ad244085995d72dac38430267c2",
"sha256": "6101978dd5011f7acb1c39fd8ace2ffffcaf2bf3ace62c222d369f10c3ec4065"
},
"downloads": -1,
"filename": "talk_summarizer-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3eb22ad244085995d72dac38430267c2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 10358,
"upload_time": "2023-05-19T06:37:54",
"upload_time_iso_8601": "2023-05-19T06:37:54.165793Z",
"url": "https://files.pythonhosted.org/packages/ff/9f/55f3ada88bc3e0831c9fcfa238a5333cd6fa69f5707ce98712f1ebd1cb4e/talk_summarizer-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fe8c18ed19b2b26b23eea538613e9c207bd5b0699fb8ba329a5e1a9963c5f8d4",
"md5": "0131b62909c8948d1eec9164c2416b70",
"sha256": "5a2bad62c742e83b8853c718f2dfce9f8259e65e3a2befec68e53f611a0e644e"
},
"downloads": -1,
"filename": "talk-summarizer-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "0131b62909c8948d1eec9164c2416b70",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 10135,
"upload_time": "2023-05-19T06:37:56",
"upload_time_iso_8601": "2023-05-19T06:37:56.394102Z",
"url": "https://files.pythonhosted.org/packages/fe/8c/18ed19b2b26b23eea538613e9c207bd5b0699fb8ba329a5e1a9963c5f8d4/talk-summarizer-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-19 06:37:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lawwu",
"github_project": "talk-summarizer",
"github_not_found": true,
"lcname": "talk-summarizer"
}