| 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; |
| }; |
|
|