File size: 4,673 Bytes
e294914
cab263c
d022aab
7c29ee2
1581bbf
e294914
 
d5436e0
 
 
f8dfb0f
d63135e
e294914
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d022aab
 
7c29ee2
 
 
 
 
 
42b403c
e294914
 
 
 
 
 
 
 
7c29ee2
 
e294914
 
 
0f596d3
e294914
0f596d3
 
 
8a5897f
 
0f596d3
e294914
 
 
4affef3
 
d834bcd
 
 
 
d5436e0
e294914
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83cf282
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# version - ArcticMonkeys:30.07.24

# python core libraries
import re
import psutil
# streamlit
import streamlit as st
# components from other authors
from streamlit_mic_recorder import mic_recorder
# core modules
from audio_processing.A2T import A2T
from audio_processing.T2A import T2A
from llm.utils.chat import Conversation
# utils modules
from utils.keywords import keywords
from utils.prompt_toggle import select_prompt, load_prompts
from utils.documentation import Documentation

# TODO: 
#     * Зробити в utils можливість для використання різних промптів -> Done
#     * Додати як робив на HF хто на  фото -> agent
#     * Додати можливіть малюнками вирішувати мат проблеми -> agent
#     * Додати моливість створювати/редагувати докменти(pdf, docx) -> agent 

prompts = load_prompts()
doc = Documentation()
chat = Conversation()
t2a = T2A()

def remove_labels_with_regex(text: str):
    pattern = r'^(Human:|AI:|Chelsea:)\s*'
    cleaned_text = re.sub(pattern, '', text, flags=re.MULTILINE)
    return cleaned_text


def main():
    try:
        mic = mic_recorder(start_prompt="Record", stop_prompt="Stop", just_once=True, use_container_width=True)
        if mic is not None:
            a2t = A2T(mic["bytes"])
            text = a2t.predict()

            prompt = select_prompt(input_text=text, prompts=prompts, keywords=keywords)
            print(f"Prompt:\n{prompt}")
            output_from_chat = chat.chatting(prompt=prompt if prompt is not None else text)
            response = remove_labels_with_regex(text=output_from_chat)
            t2a.autoplay(response)

            if response:
                st.markdown(f"Your input: {text}")
                st.markdown(f"Chelsea response: {response}")
                
                prompt = None
                response = None
            
            print(f"Prompt: {prompt}, response: {response}")
                
    except Exception as e:
        print(f"An error occurred in main finction, reasone is: {e}")
        doc.execution()

if __name__ == "__main__":
    print(f"Total Memory: {psutil.virtual_memory().total / (1024**3):.2f} GB")
    print(f"Available Memory: {psutil.virtual_memory().available / (1024**3):.2f} GB")
    print(f"CPU Cores: {psutil.cpu_count()}")
    print(f"CPU Usage: {psutil.cpu_percent()}%")
    main()
    footer="""
        <style>
            /* Common styles for the footer */
            .footer {
                position: fixed;
                left: 0;
                bottom: 0;
                width: 100%;
                height: 60px; /* Set a fixed height for consistency */
                font-size: 14px; /* Adjust font size for readability */
                text-align: center;
                padding: 15px 0; /* Reduced padding */
                transition: color 0.3s, background-color 0.3s;
            }
        
            .footer p {
                margin: 0; /* Remove default margins */
                font-size: 18px; /* Adjust font size as needed */
            }
        
            a:link, a:visited {
                text-decoration: dotted;
                color: inherit; /* Use current text color */
            }
        
            a:hover, a:active {
                background: linear-gradient(to right, #ffe44d, #ffdd1a, #ffd700, #ffd900);
                -webkit-text-fill-color: transparent;
                -webkit-background-clip: text;
            }
        
            .footer a:hover {
                color: #ff4500; /* Different hover color */
            }
        
            /* Light mode styles */
            @media (prefers-color-scheme: light) { 
                a:link, a:visited {
                    color: #0056b3; /* Blue color for links */
                }
        
                .footer a:hover {
                    color: #ff4500; /* Hover color for light mode */
                }
            }
        
            /* Dark mode styles */
            @media (prefers-color-scheme: dark) {        
                a:link, a:visited {
                    color: #ffd700; /* Gold color for links in dark mode */
                }
        
                .footer a:hover {
                    color: #ffa500; /* Hover color for dark mode */
                }
            }
        </style>
        
        <div class="footer">
            <p>Please support the project on <a href="https://buymeacoffee.com/cineai" target="_blank">Buy Me a Coffee</a></p>
        </div>
        """
    # st.markdown(footer,unsafe_allow_html=True)