File size: 2,033 Bytes
9fb75c0
6fa0132
7615be3
 
 
 
 
9fb75c0
 
 
d33f75e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
741deae
 
d33f75e
 
 
 
 
 
 
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
---
title: "FairytaleDJ"
emoji: "๐Ÿ”ฎ"
colorFrom: "indigo"
colorTo: "purple"
sdk: "streamlit"
sdk_version: "1.19.0"
app_file: app.py
pinned: false
---

# FairytaleDJ ๐ŸŽต๐Ÿฐ๐Ÿ”ฎ

The app is on [hugging face spaces](https://huggingface.co/spaces/Francesco/FairytaleDJ) ๐Ÿค—

This app takes a user input and suggestes songs that matches 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 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](https://www.deeplake.ai/). 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`

```
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```

You will need the following `.env` file

```bash
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`