-
Notifications
You must be signed in to change notification settings - Fork 0
/
secretlab.py
124 lines (103 loc) · 3.64 KB
/
secretlab.py
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
import streamlit as st
import streamlit.components.v1 as components
# from gtts import gTTS
# from pydub import AudioSegment
# from pydub.playback import play
# def text_to_speech(text):
# tts = gTTS(text=text, lang='en')
# audio_file = 'output.mp3'
# tts.save(audio_file)
# sound = AudioSegment.from_mp3(audio_file)
# play(sound)
def speak(text):
# JavaScript code for text-to-speech using the Web Speech API
js = f"""
<script>
var msg = new SpeechSynthesisUtterance();
msg.text = "{text}";
msg.lang = 'en-US';
window.speechSynthesis.speak(msg);
</script>
"""
# Use Streamlit's components.html to execute the JavaScript code
components.html(js, height=0, width=0)
# def speak(text):
# # JavaScript to choose a female voice, assuming one is available among the English voices
# js = f"""
# <script>
# function speakText() {{
# var msg = new SpeechSynthesisUtterance();
# msg.text = "{text}";
# msg.lang = 'en-US';
# // Get the list of available voices
# var voices = window.speechSynthesis.getVoices();
# // Attempt to find a female voice among the English voices
# // This is a heuristic approach and might not always accurately select a female voice
# var femaleVoice = voices.find(voice => voice.lang.startsWith('en-') && voice.name.toLowerCase().includes('female'));
# // If a female voice is found, use it
# if (femaleVoice) {{
# msg.voice = femaleVoice;
# }}
# window.speechSynthesis.speak(msg);
# }}
# // Due to the asynchronous nature of voice loading, attempt to speak after ensuring voices are loaded
# if (speechSynthesis.onvoiceschanged !== undefined) {{
# speechSynthesis.onvoiceschanged = speakText;
# }} else {{
# setTimeout(speakText, 500);
# }}
# </script>
# """
# # Execute the JavaScript code
# st.markdown(js, unsafe_allow_html=True)
# Apply custom CSS styles
# Apply custom CSS styles
st.markdown(
"""
<style>
/* Define large words */
.large-text {
font-size: 36px;
}
/* Apply "My Little Pony" theme */
body {
background-color: #FFD5E5 !important; /* Pink background */
}
h1 {
color: #7F00FF; /* Violet header */
}
h2 {
color: #FF69B4; /* Pink header */
}
p {
color: #800080; /* Purple text */
}
</style>
""",
unsafe_allow_html=True
)
# def main():
col1, col2 = st.columns([1,2])
col1.title("Yong Yee's Secret Lab!")
col1.image('https://static.wikia.nocookie.net/dog-man/images/1/1e/70D96475-8848-4A44-B573-98C7B9C54203.jpg', caption='Secret Lab')
picture = col2.camera_input("My Secret Lab Security Camera")
# if picture:
# st.image(picture)
# Define the correct 4-digit code
correct_code = col2.text_input('Yong Yee Secret Number',type="password")
# correct_code = "1234"
# Create input widget for the user to enter the code
entered_code = col2.text_input("Enter the 4-digit code:")
# Check if the entered code matches the correct code
if col2.button("Submit"):
if entered_code == correct_code:
# If the codes match, play success sound and display balloons
st.success("Correct! Please enter!")
speak("Correct! Please enter!")
# play_sound("success_sound.mp3") # Replace with your success sound file path
st.balloons()
else:
# If the codes do not match, display error message and play error sound
st.error("Wrong. Hahahahahaha!")
speak("Wrong. Hahahahahaha!")
# play_sound("error_sound.mp3") # Replace with your error sound file path