File size: 8,394 Bytes
8713346
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12229cf
 
 
 
8713346
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f7269bb
 
 
 
 
 
 
 
 
 
 
8713346
 
 
f7269bb
 
8713346
 
 
 
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
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Audio Input with Tabs and Features</title>
  <style>
    .loading {
      display: none !important;
    }
  </style>
</head>
<body style="font-family: 'Source Sans Pro', sans-serif; background-color: #f9fafb; color: #333; display: flex; flex-direction: column; align-items: center; height: 100vh; margin: 0;">

  <div style="width: 100%; max-width: 900px; background: #fff; padding: 1.5rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); flex: 1;">

    <!-- Tabs -->
    <div style="display: flex; border-bottom: 2px solid #e9ecef; margin-bottom: 1rem;">
      <button id="singleAudioTab" class="tab active" style="flex: 1; text-align: center; padding: 1rem; background: transparent; border: none; border-bottom: 3px solid #007bff; font-weight: bold; cursor: pointer; color: #007bff;">Single Audio Stream</button>
      <button id="multistreamTab" class="tab" style="flex: 1; text-align: center; padding: 1rem; background: transparent; border: none; border-bottom: 3px solid transparent; font-weight: bold; cursor: pointer; color: #6c757d;">Multistream Demo</button>
    </div>

    <!-- Language Selection -->
    <div style="margin-bottom: 1rem; text-align: center; display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap;">
      <label style="display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border: 1px solid #ced4da; border-radius: 4px; cursor: pointer;">
        <input type="radio" name="language" value="en" checked style="margin: 0;" />
        <img src="https://flagcdn.com/us.svg" alt="US Flag" style="width: 20px; height: 14px;" /> English
      </label>
      <label style="display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border: 1px solid #ced4da; border-radius: 4px; cursor: pointer;">
        <input type="radio" name="language" value="de" style="margin: 0;" />
        <img src="https://flagcdn.com/de.svg" alt="Germany Flag" style="width: 20px; height: 14px;" /> German
      </label>
      <label style="display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border: 1px solid #ced4da; border-radius: 4px; cursor: pointer;">
        <input type="radio" name="language" value="fr" style="margin: 0;" />
        <img src="https://flagcdn.com/fr.svg" alt="France Flag" style="width: 20px; height: 14px;" /> French
      </label>
    </div>

    <!-- Single Audio Stream Content -->
    <div id="singleAudioContent" class="tab-content loading">
      <div style="display: flex; gap: 1.5rem;">
        <!-- Input Section -->
        <div style="flex: 1; display: flex; flex-direction: column; gap: 1rem;">
          <div style="font-size: 1rem; font-weight: bold; padding: 0.5rem 1rem; background-color: #f8f9fa; border-radius: 8px; display: flex; align-items: center; gap: 0.5rem; color: #6c757d;">
            <span style="line-height: 1;">🎵</span> Input
          </div>

          <!-- Drag and Drop / File Upload -->
          <div id="dropzone" style="border: 2px dashed #ced4da; border-radius: 8px; padding: 2rem; text-align: center; color: #6c757d; cursor: pointer; background-color: #f8f9fa; transition: background-color 0.3s, border-color 0.3s; position: relative;">
            <input type="file" id="fileInput" accept="audio/*" style="position: absolute; top: 0; left: 0; opacity: 0; width: 100%; height: 100%; cursor: pointer;" />
            <p style="margin: 0;">Drop Audio Here<br>- or -<br>Click to Upload</p>
          </div>

          <!-- Record Microphone Button -->
          <button id="recordBtn" style="padding: 0.5rem 1rem; border: 1px solid #e9ecef; border-radius: 4px; background-color: #fff; color: #d9534f; cursor: pointer; font-size: 1rem;">
            <span style="font-size: 0.8rem; border-radius: 50%; background-color: #d9534f; width: 10px; height: 10px; display: inline-block;"></span>
            Use Microphone
          </button>
        </div>

        <!-- Output Section -->
        <div style="flex: 1; display: flex; flex-direction: column; gap: 1rem;">
          <div style="font-size: 1rem; font-weight: bold; padding: 0.5rem 1rem; background-color: #f8f9fa; border-radius: 8px; color: #6c757d;">Transcript</div>
          <textarea id="results" placeholder="Output will appear here..." readonly style="flex: 1; padding: 0.75rem; font-size: 1rem; border: 1px solid #ced4da; border-radius: 8px; resize: none; background-color: #f8f9fa;"></textarea>
          <audio id="audioPlayback" controls style="display: none; margin-top: 1rem; width: 100%;"></audio>
        </div>
      </div>
    </div>

    <!-- Multistream Demo Content -->
    <div id="multistreamContent" class="tab-content loading" style="display: none;">
      <div style="text-align: center; padding: 1rem;">
        <button id="playAllBtn" style="padding: 0.75rem 1.5rem; background-color: #007bff; color: #fff; border: none; border-radius: 4px; cursor: pointer; font-size: 1rem;">Play All Streams</button>
      </div>
      <div style="display: flex; flex-wrap: wrap; gap: 1rem;">
        <div class="audio-container" style="flex: 1; min-width: 250px;">
          <audio id="audio1" controls style="width: 100%;"></audio>
          <textarea id="transcript1" readonly placeholder="Transcript for Audio 1" 
            style="width: 100%; height: 4rem; margin-top: 0.5rem; font-size: 0.9rem; padding: 0.5rem; 
            border: 1px solid #ced4da; border-radius: 4px; resize: none;"></textarea>
        </div>
        
        <div class="audio-container" style="flex: 1; min-width: 250px;">
          <audio id="audio2" controls style="width: 100%;"></audio>
          <textarea id="transcript2" readonly placeholder="Transcript for Audio 2" 
            style="width: 100%; height: 4rem; margin-top: 0.5rem; font-size: 0.9rem; padding: 0.5rem; 
            border: 1px solid #ced4da; border-radius: 4px; resize: none;"></textarea>
        </div>
      
        <div class="audio-container" style="flex: 1; min-width: 250px;">
          <audio id="audio3" controls style="width: 100%;"></audio>
          <textarea id="transcript3" readonly placeholder="Transcript for Audio 3" 
            style="width: 100%; height: 4rem; margin-top: 0.5rem; font-size: 0.9rem; padding: 0.5rem; 
            border: 1px solid #ced4da; border-radius: 4px; resize: none;"></textarea>
        </div>
      
        <div class="audio-container" style="flex: 1; min-width: 250px;">
          <audio id="audio4" controls style="width: 100%;"></audio>
          <textarea id="transcript4" readonly placeholder="Transcript for Audio 4" 
            style="width: 100%; height: 4rem; margin-top: 0.5rem; font-size: 0.9rem; padding: 0.5rem; 
            border: 1px solid #ced4da; border-radius: 4px; resize: none;"></textarea>
        </div>
      
        <div class="audio-container" style="flex: 1; min-width: 250px;">
          <audio id="audio5" controls style="width: 100%;"></audio>
          <textarea id="transcript5" readonly placeholder="Transcript for Audio 5" 
            style="width: 100%; height: 4rem; margin-top: 0.5rem; font-size: 0.9rem; padding: 0.5rem; 
            border: 1px solid #ced4da; border-radius: 4px; resize: none;"></textarea>
        </div>
      </div>
    </div>

    <div id="status">Loading...</div>

  </div>

  <!-- Footer Section -->
  <div style="width: 100%; max-width: 900px; margin-top: 1.5rem; background: #fff; padding: 1.5rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); text-align: left; font-size: 0.9rem; color: #6c757d;">
    <h3>Welcome to Kroko</h3>

    <strong>
    This demo uses older versions of our models. We're working on a new one—stay tuned!
  </strong>
  <div style="margin-top: 8px; font-weight: normal;">
    In the meantime, you can:
    <ul style="margin: 6px 0 0 16px; padding: 0;">
      <li><a href="https://kroko.ai/" target="_blank">Visit our website</a></li>
      <li><a href="https://github.com/kroko-ai/kroko-onnx" target="_blank">Explore our GitHub repo</a></li>
      <li><a href="https://discord.gg/JT7wdtnK79" target="_blank">Join our community</a> to get the latest updates first</li>
    </ul>
  </div>

  </div>

  <script src="./sherpa-onnx-asr.js"></script>
  <script src="./app-asr.js"></script>
</body>
</html>