File size: 2,977 Bytes
4e70d0d
 
 
 
 
cb0a021
4e70d0d
 
 
cb0a021
 
 
 
 
 
 
 
 
a945a59
cb0a021
a945a59
cb0a021
4e70d0d
 
a945a59
 
 
 
 
 
af08bbe
a945a59
 
 
 
af08bbe
a945a59
 
 
 
 
 
 
af08bbe
a945a59
 
 
 
 
 
 
4e70d0d
 
a945a59
4e70d0d
 
 
 
 
 
 
 
a945a59
 
 
 
 
4e70d0d
a945a59
 
 
 
4e70d0d
a945a59
 
 
4e70d0d
a945a59
 
 
4e70d0d
 
a945a59
4e70d0d
 
 
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
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Biryani Hub</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
    <div class="container">
        <h1>Biryani Hub</h1>

        <label for="name">Name</label>
        <input type="text" id="name" placeholder="Your name will appear here..." readonly>

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

        <p class="instructions">Voice interaction in progress...</p>

        <audio id="audio-player" autoplay></audio>
    </div>

    <script>
        async function startVoiceInteraction() {
            let audioPlayer = document.getElementById("audio-player");

            // Step 1: Welcome Message
            audioPlayer.src = "/static/welcome.mp3";
            audioPlayer.play();
            await new Promise(resolve => setTimeout(resolve, 2000));

            // Step 2: Ask for Name
            audioPlayer.src = "/static/ask_name.mp3";
            audioPlayer.play();
            await new Promise(resolve => setTimeout(resolve, 3000));

            let name = await recordAndProcessAudio();
            document.getElementById("name").value = name;

            // Step 3: Ask for Email
            audioPlayer.src = "/static/ask_email.mp3";
            audioPlayer.play();
            await new Promise(resolve => setTimeout(resolve, 3000));

            let email = await recordAndProcessAudio();
            document.getElementById("email").value = email;

            // Step 4: Thank You Message
            audioPlayer.src = "/static/thank_you.mp3";
            audioPlayer.play();
        }

        async function recordAndProcessAudio() {
            let stream = await navigator.mediaDevices.getUserMedia({ audio: true });
            let mediaRecorder = new MediaRecorder(stream);
            let audioChunks = [];

            mediaRecorder.ondataavailable = event => {
                audioChunks.push(event.data);
            };

            return new Promise(resolve => {
                mediaRecorder.onstop = async () => {
                    let audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
                    let formData = new FormData();
                    formData.append("audio", audioBlob, "input.wav");

                    let response = await fetch("/process_audio", {
                        method: "POST",
                        body: formData
                    });

                    let result = await response.json();
                    resolve(result.text || "Error capturing speech");
                };

                mediaRecorder.start();
                setTimeout(() => mediaRecorder.stop(), 4000);
            });
        }

        window.onload = startVoiceInteraction;
    </script>
</body>
</html>