File size: 6,766 Bytes
4e70d0d
 
 
 
 
d4eb4c5
 
fc1bc87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0e4d29e
 
d4eb4c5
7d3c48f
19b4f7c
5adc22d
a92c97e
d4eb4c5
0e4d29e
5adc22d
a92c97e
d4eb4c5
a945a59
5adc22d
a92c97e
5adc22d
 
d4eb4c5
 
a945a59
d4eb4c5
 
4567551
 
8af8df5
 
a945a59
d4eb4c5
 
40f459d
6bd41b6
d4eb4c5
 
 
 
5419508
6bd41b6
 
4567551
d4eb4c5
 
9a74cb9
fc1bc87
 
 
 
 
 
4567551
 
 
 
8af8df5
 
9e0090a
d108c10
 
 
 
8af8df5
 
 
d108c10
8af8df5
0ebf5ef
4567551
 
 
 
fc1bc87
fc63e50
 
 
 
6bd41b6
 
fc1bc87
6bd41b6
 
d108c10
 
8af8df5
4567551
646a98b
4567551
646a98b
fc1bc87
6bd41b6
 
4567551
 
 
 
8af8df5
20ea335
d108c10
 
 
 
4567551
 
 
d108c10
4567551
20ea335
4567551
 
8af8df5
4567551
d4eb4c5
fc63e50
 
 
 
d4eb4c5
 
fc1bc87
 
8af8df5
 
 
fc1bc87
 
 
d4eb4c5
fc1bc87
d4eb4c5
b31d6fc
 
d4eb4c5
89e5ad5
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<!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 = "";  // Store the name as it's being formed
        let currentEmail = ""; // Store the email as it's being formed
        let isCapturingName = true;
        let isCapturingEmail = 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;  // Call the next function after speech ends
            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().toLowerCase();

                if (transcript === "next") {
                    recognition.stop(); // Stop recognition immediately
                    isCapturingName = false;
                    isCapturingEmail = true;
                    status.textContent = "Your name is captured. Now listening for your email...";
                    
                    // Ensure name input is finalized
                    nameInput.value = currentName.trim();

                    speak("Now, please tell me your email, letter by letter", function() {
                        startListeningForEmail(); // Start email capture
                    });

                    return; // Exit function to prevent "next" from being added to the name
                }

                // Append spoken letters to the name
                currentName += transcript + " "; // Space between letters for readability
                nameInput.value = currentName.trim(); // Display the updated name
            };

            recognition.onspeechend = function() {
                recognition.stop(); // Stop after input ends
            };
        }

        function startListeningForEmail() {
            const status = document.getElementById('status');
            const emailInput = document.getElementById('email');

            // Reset recognition for email input
            recognition = new webkitSpeechRecognition();
            recognition.continuous = false;
            recognition.interimResults = false;
            recognition.lang = 'en-US';

            status.textContent = "Listening for your email...";
            recognition.start();
            recognition.onresult = function(event) {
                const transcript = event.results[0][0].transcript.trim().toLowerCase();

                if (transcript === "next") {
                    recognition.stop(); // Stop recognition for email
                    isCapturingEmail = false;
                    status.textContent = 'Registration complete.';

                    // Ensure email input is finalized
                    emailInput.value = currentEmail.trim();

                    speak("Registration complete. Thank you!", function() {
                        setTimeout(() => location.reload(), 10000); // Refresh after 10 sec
                    });

                    return; // Exit function to prevent "next" from being added
                }

                // Append spoken letters to the email
                currentEmail += transcript + " "; 
                emailInput.value = currentEmail.trim();
            };

            recognition.onspeechend = function() {
                recognition.stop(); // Stop after input ends
            };
        }

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

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