Spaces:
Running
Running
import { AUDIO_API_BASE_URL } from '$lib/constants'; | |
export const getAudioConfig = async (token: string) => { | |
let error = null; | |
const res = await fetch(`${AUDIO_API_BASE_URL}/config`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err.detail; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
type OpenAIConfigForm = { | |
url: string; | |
key: string; | |
model: string; | |
speaker: string; | |
}; | |
export const updateAudioConfig = async (token: string, payload: OpenAIConfigForm) => { | |
let error = null; | |
const res = await fetch(`${AUDIO_API_BASE_URL}/config/update`, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
}, | |
body: JSON.stringify({ | |
...payload | |
}) | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err.detail; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const transcribeAudio = async (token: string, file: File) => { | |
const data = new FormData(); | |
data.append('file', file); | |
let error = null; | |
const res = await fetch(`${AUDIO_API_BASE_URL}/transcriptions`, { | |
method: 'POST', | |
headers: { | |
Accept: 'application/json', | |
authorization: `Bearer ${token}` | |
}, | |
body: data | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
error = err.detail; | |
console.log(err); | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const synthesizeOpenAISpeech = async ( | |
token: string = '', | |
speaker: string = 'alloy', | |
text: string = '', | |
model?: string | |
) => { | |
let error = null; | |
const res = await fetch(`${AUDIO_API_BASE_URL}/speech`, { | |
method: 'POST', | |
headers: { | |
Authorization: `Bearer ${token}`, | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ | |
input: text, | |
voice: speaker, | |
...(model && { model }) | |
}) | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res; | |
}) | |
.catch((err) => { | |
error = err.detail; | |
console.log(err); | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
interface AvailableModelsResponse { | |
models: { name: string; id: string }[] | { id: string }[]; | |
} | |
export const getModels = async (token: string = ''): Promise<AvailableModelsResponse> => { | |
let error = null; | |
const res = await fetch(`${AUDIO_API_BASE_URL}/models`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
error = err.detail; | |
console.log(err); | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const getVoices = async (token: string = '') => { | |
let error = null; | |
const res = await fetch(`${AUDIO_API_BASE_URL}/voices`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
error = err.detail; | |
console.log(err); | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |