Spaces:
Running
Running
File size: 2,517 Bytes
d7e88bd 8c2ce4e cf54dc1 8c2ce4e | 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 | const BASE_URL = "https://anabaena-vaaksiddhi.hf.space";
export async function inputWord({ text, audio, character = "BOLT", language = "english", mood = "instruction" }) {
const form = new FormData();
if (text) form.append("text", text);
if (audio) {
// Convert blob to wav file for backend
const wavBlob = new Blob([audio], { type: "audio/webm" });
form.append("audio", wavBlob, "recording.webm");
}
form.append("character", character);
form.append("language", language);
form.append("mood", mood);
const res = await fetch(`${BASE_URL}/input-word`, { method: "POST", body: form });
return res.json();
}
export async function evaluateAttempt({ audio, targetWord, character, language, condition, attemptNumber, sessionId, childId, attemptHistory }) {
const form = new FormData();
form.append("audio", audio, "recording.wav");
form.append("target_word", targetWord);
form.append("character", character || "BOLT");
form.append("language", language || "english");
form.append("condition", condition || "autism");
form.append("attempt_number", attemptNumber || 1);
if (sessionId) form.append("session_id", sessionId);
if (childId) form.append("child_id", childId);
form.append("attempt_history", JSON.stringify(attemptHistory || []));
const res = await fetch(`${BASE_URL}/evaluate`, { method: "POST", body: form });
return res.json();
}
export async function getPhonemeCard(phoneme) {
const res = await fetch(`${BASE_URL}/phoneme-card/${phoneme}`);
return res.json();
}
export async function getCharacters() {
const res = await fetch(`${BASE_URL}/characters`);
return res.json();
}
export async function playbackCompare({ childAudio, targetWord, character, language }) {
const form = new FormData();
form.append("child_audio", childAudio, "recording.wav");
form.append("target_word", targetWord);
form.append("character", character || "BOLT");
form.append("language", language || "english");
const res = await fetch(`${BASE_URL}/playback-compare`, { method: "POST", body: form });
return res.json();
}
export function base64ToBlob(base64, mime = "audio/wav") {
const bytes = atob(base64);
const arr = new Uint8Array(bytes.length);
for (let i = 0; i < bytes.length; i++) arr[i] = bytes.charCodeAt(i);
return new Blob([arr], { type: mime });
}
export function playBase64Audio(base64) {
const blob = base64ToBlob(base64);
const url = URL.createObjectURL(blob);
const audio = new Audio(url);
audio.play();
return audio;
}
|