File size: 2,080 Bytes
eadfc59 6fd136c eadfc59 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
---
title: Play My Emotions
emoji: ๐ต
colorFrom: '#FF5733'
colorTo: '#FFC300'
sdk: docker
sdk_version: 1.0.0
app_file: app.py
pinned: false
---
# Play My Emotions ๐ต๐ฐ๐ฎ
![Live Demo](PlayMyEmotions.jpeg)
The app is on [Hugging Face Spaces](https://huggingface.co/spaces/DjPapzin/PlayMyEmotions) ๐ค
This app takes a user input and suggests songs that match its emotions/vibes.
Made with [DeepLake](https://www.deeplake.ai/) ๐ and [LangChain](https://python.langchain.com/en/latest/index.html) ๐ฆโ๏ธ
We also used [Upstash](https://upstash.com/) to store user inputs/emotions and recommended songs.
## How it works
The application follows a sequence of steps to deliver Disney songs matching the user's emotions:
- **User Input**: The application starts by collecting the user's emotional state through a text input.
- **Emotion Encoding**: The user-provided emotions are then fed to a Language Model (LLM). The LLM interprets and encodes these emotions.
- **Similarity Search**: These encoded emotions are utilized to perform a similarity search within our [vector database](Deep Lake Vector Store in LangChain). This database houses Disney songs, each represented as emotional embeddings.
- **Song Selection**: From the pool of top matching songs, the application randomly selects one. The selection is weighted, giving preference to songs with higher similarity scores.
- **Song Retrieval**: The selected song's embedded player is displayed on the webpage for the user. Additionally, the LLM-interpreted emotional state associated with the chosen song is displayed.
## Run it
Clone this repo.
Create a `venv`:
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
You will need the following `.env` file:
```
OPENAI_API_KEY=<OPENAI_API_KEY>
ACTIVELOOP_TOKEN=<ACTIVELOOP_TOKEN>
ACTIVELOOP_ORG_ID=zuppif
UPSTASH_URL=<UPSTASH_URL>
UPSTASH_PASSWORD=<UPSTASH_PASSWORD>
```
If you don't want to use upstash set the `USE_STORAGE=False`
Then
```
streamlit run app.py
```
Then navitage to `http://192.168.1.181:8501` |