senju logo

ๅƒๆ‰‹ Senju

๐ŸŽ‹ Poetry in Motion ๐ŸŽŽ

A web service for Haiku generation from text or from images and Haiku sharing


Code Coverage Tests Status License Release
Python Versions Powered by Flask AI PyTorch
## ๐ŸŒŠ Overview Senju (ๅƒๆ‰‹, "thousand hands") is a web service for haiku poetry generation and sharing, with image-to-haiku functionality. ## โœจ Features - **๐ŸŽ AI-Powered Haiku Generation**: Create beautiful three-line haiku poetry from text prompts - **๐Ÿ–ผ๏ธ Image-to-Haiku**: Turn uploaded images into poetic haiku (experimental) - **๐Ÿ” Browse Existing Haiku**: Gallery view of previously generated poetry - **๐Ÿ’พ Persistent Storage**: All generated haiku are stored for future retrieval - **๐Ÿ–ฅ๏ธ Web Interface**: Clean, efficient, minimalist user experience for human interaction - **๐Ÿ‘‚ Accessibility**: Text-to-speech integration for haikus ## ๐Ÿ”ง Installation ```bash # Clone the repository git clone https://github.com/senju1337/senju.git cd senju docker compose up ``` Docker desktop users on windows might need to change the line seperator from CRLF to LF of the file `entrypoint.sh` ### ๐Ÿ“‹ Dependencies - Python - Flask - TinyDB - PyTorch - Transformers - Pillow See `pyproject.toml` for a complete list of dependencies. #### Text To Speech The speech synthesis uses the functionalities of your Operating System. Depending on your System, you might need to install additional software to use speech synthesis. On Debian GNU/Linux, you need to do the following: ```bash apt install espeakup speech-dispatcher ``` Senju uses [`window.speechSynthesis`](https://developer.mozilla.org/en-US/docs/Web/API/Window/speechSynthesis) for TTS. ## ๐Ÿฏ Architecture Senju is built around several key components: - **Flask Application**: Core web framework providing routing and template rendering - **Haiku Generator**: Interfaces with a machine learning model for poetry creation - **Image Recognition**: Vision-language model for extracting descriptions from images - **Storage Manager**: TinyDB-based persistence layer for haiku retrieval and storage ## ๐Ÿ“ Documentation Senju is documented with sphinx. The documentation of the latest release is available on [github-pages](https://senju1337.github.io/senju/). It can be generated like this (after installing the dependencies, see above): ```bash cd docs bash auto_docu.sh # now open the documentation with a web browser of your choice firefox ./build/html/ ``` ## ๐Ÿงช Testing ```bash # Run tests pytest # Run tests with coverage bash coverage.sh ``` ## ๐Ÿ“œ License Distributed under the GPL-3 License. See `LICENSE` for more information. ## ๐Ÿ™ Acknowledgements - [Ollama](https://ollama.ai/) for providing the AI backend - [BLIP](https://github.com/salesforce/BLIP) for the image captioning model - [PyTorch](https://pytorch.org/) and [Transformers](https://huggingface.co/docs/transformers/index) for ML infrastructure - [Flask](https://flask.palletsprojects.com/) for the web framework - [TinyDB](https://tinydb.readthedocs.io/) for the document database
Purple petals rise
Defying fragile beauty
Fiercely breathing life