File size: 5,816 Bytes
4e70d0d
 
 
 
 
d4eb4c5
 
fc1bc87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0e4d29e
 
d4eb4c5
7d3c48f
19b4f7c
5adc22d
a92c97e
d4eb4c5
0e4d29e
5adc22d
a92c97e
d4eb4c5
a945a59
5adc22d
a92c97e
5adc22d
 
d4eb4c5
 
a945a59
d4eb4c5
 
4578b35
d4eb4c5
450cc5e
a945a59
d4eb4c5
 
40f459d
6bd41b6
d4eb4c5
 
 
 
5419508
6bd41b6
 
fc1bc87
d4eb4c5
 
9a74cb9
fc1bc87
 
 
 
 
 
 
0ebf5ef
4578b35
 
 
 
 
 
0ebf5ef
9e0090a
8211617
4578b35
 
9e0090a
 
0ebf5ef
fc1bc87
6bd41b6
 
fc1bc87
6bd41b6
 
fc1bc87
6bd41b6
 
32a8151
450cc5e
8863e3e
 
 
 
 
 
 
 
 
 
 
 
d4eb4c5
 
 
fc1bc87
 
4578b35
fc1bc87
 
 
d4eb4c5
fc1bc87
d4eb4c5
b31d6fc
 
d4eb4c5
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Biryani Hub Registration</title>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Roboto', sans-serif;
            background: linear-gradient(135deg, #f4c542, #ff8f6a); /* Light gradient background */
            margin: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            text-align: center;
        }
        .container {
            background: lightblue;
            padding: 40px 50px;
            border-radius: 10px;
            width: 400px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
        }
        h1 {
            font-size: 30px;
            font-weight: bold;
            color: #ff6a00; /* Bright orange for title */
        }
        label {
            font-size: 18px;
            margin-top: 20px;
            display: block;
            text-align: left;
        }
        input[type="text"] {
            width: 100%;
            padding: 10px;
            font-size: 16px;
            border: 1px solid #ccc;
            border-radius: 5px;
            margin-top: 8px;
        }
        .info {
            margin-top: 20px;
            font-size: 16px;
            color: #ff6a00;
            font-weight: bold;
        }
        .status {
            font-size: 14px;
            color: gray;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Welcome to Biryani Hub</h1>
        
        <!-- Name Input Field -->
        <label for="name">Your Name</label>
        <input type="text" id="name" placeholder="Your name will appear here..." readonly>

        <!-- Email Input Field -->
        <label for="email">Your Email</label>
        <input type="text" id="email" placeholder="Your email will appear here..." readonly>

        <!-- Info Message for Listening -->
        <p class="info" id="infoMessage">Listening will start automatically...</p>

        <!-- Status Message -->
        <p class="status" id="status">Initializing...</p>
    </div>

    <script>
        let recognition;
        let currentName = "";  // Variable to store the name as it's being formed
        let isNameCaptured = false;
        let isEmailCaptured = false;

        if ('webkitSpeechRecognition' in window) {
            recognition = new webkitSpeechRecognition();
            recognition.continuous = false;  // Stop after capturing each input
            recognition.interimResults = false;
            recognition.lang = 'en-US';
        } else {
            alert("Speech Recognition API is not supported in this browser.");
        }

        function speak(text, callback) {
            const speech = new SpeechSynthesisUtterance(text);
            speech.onend = callback;  // Once the speech ends, call the next function
            window.speechSynthesis.speak(speech);
        }

        function startListeningForName() {
            const status = document.getElementById('status');
            const nameInput = document.getElementById('name');
            status.textContent = "Listening for your name...";
            recognition.start();
            recognition.onresult = function(event) {
                const transcript = event.results[0][0].transcript.trim();
                
                // Capture the individual letter spoken
                currentName += transcript; // Append the current letter to the name
                nameInput.value = currentName; // Display the updated name input

                // Optionally, speak out the name as it's being typed
                speak(transcript, null); // Say the captured letter
                
                // If the user says "next", stop and move to email
                if (transcript.toLowerCase() === "next") {
                    recognition.stop();
                    isNameCaptured = true;
                    status.textContent = "Your name is captured. Now listening for your email...";
                    speak("Now, please tell me your email", startListeningForEmail);
                }
            };
        }

        function startListeningForEmail() {
            const status = document.getElementById('status');
            const emailInput = document.getElementById('email');
            status.textContent = "Listening for your email...";
            recognition.start();
            recognition.onresult = function(event) {
                let transcript = event.results[0][0].transcript.trim();
                
                // Replace "at" with "@" for email
                transcript = transcript.replace(/\bat\b/g, '@').trim();

                // Clean any spaces around the email
                const cleanedEmail = transcript.replace(/\s+/g, '');

                emailInput.value = cleanedEmail; // Set the email field with cleaned input
                status.textContent = 'Registration complete.';

                // After registration, refresh the page after 20 seconds
                setTimeout(() => location.reload(), 20000); // Refresh after 20 seconds
                isEmailCaptured = true;  // Mark email as captured
            };
        }

        function startProcess() {
            speak("Welcome to Biryani Hub", function() {
                speak("Tell me your name, letter by letter, and say 'next' when you're done", startListeningForName);
            });
        }

        window.onload = function () {
            setTimeout(startProcess, 4000);  // Start process after 4 seconds
        };
    </script>
</body>
</html>