diff --git a/app/Classes/ApiManager/VoiceConversionApi.ts b/app/Classes/ApiManager/VoiceConversionApi.ts index f4d9fe514f..e9a27ad2bf 100644 --- a/app/Classes/ApiManager/VoiceConversionApi.ts +++ b/app/Classes/ApiManager/VoiceConversionApi.ts @@ -1,12 +1,12 @@ import { ApiManager, ApiResponse } from "./ApiManager"; interface VoiceConversionParams { - autoPredictF0: boolean; - creatorSetVisibility: string; - isStorytellerDemo: boolean; - overrideF0Method: string; + autoPredictF0?: boolean; + creatorSetVisibility?: string; + isStorytellerDemo?: boolean; + overrideF0Method?: string; sourceMediaUploadToken: string; - transpose: number; + transpose?: number; uuidIdempotencyToken: string; voiceConversionModelToken: string; } diff --git a/app/api.tsx b/app/api.tsx index 34abfae170..fbcf8a4a73 100644 --- a/app/api.tsx +++ b/app/api.tsx @@ -18,7 +18,7 @@ export const apiHost = "https://api.storyteller.ai"; //V2V // export const listV2V = `${apiHost}/v1/voice_conversion/model_list`; -export const inferV2V = `${apiHost}/v1/voice_conversion/inference`; +// export const inferV2V = `${apiHost}/v1/voice_conversion/inference`; export const uploadAudioV2V = `${apiHost}/v1/media_uploads/upload_audio`; // User Media diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageVoiceToVoice.tsx b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageVoiceToVoice.tsx index f4410b7bcf..8e5d03ab33 100644 --- a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageVoiceToVoice.tsx +++ b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/pageVoiceToVoice.tsx @@ -1,20 +1,14 @@ import { useCallback } from "react"; import { v4 as uuidv4 } from "uuid"; - -import { V2VState } from "../../../../models/voice"; import { faChevronRight, faRightLeft } from "@fortawesome/pro-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { - EnqueueVoiceConversionRequest, - EnqueueVoiceConversionResponse, -} from "./typesImported"; -import { GenerateVoiceConversion } from "./utilities"; -import { H4, H6, Button, Label, UploadAudioComponent } from "~/components"; - -import { AudioTabPages } from "~/pages/PageEnigma/enums"; -import { addToast, startPollingActiveJobs } from "~/signals"; import { ToastTypes } from "~/enums"; +import { AudioTabPages } from "~/pages/PageEnigma/enums"; +import { V2VState } from "~/pages/PageEnigma/models/voice"; +import { VoiceConversionApi } from "~/Classes/ApiManager/VoiceConversionApi"; +import { addToast, startPollingActiveJobs } from "~/signals"; +import { H4, H6, Button, Label, UploadAudioComponent } from "~/components"; export const PageVoicetoVoice = ({ changePage, @@ -25,7 +19,7 @@ export const PageVoicetoVoice = ({ v2vState: V2VState; setV2VState: (newState: V2VState) => void; }) => { - const requestV2V = useCallback(() => { + const requestV2V = useCallback(async () => { const modelToken = v2vState.voice ? v2vState.voice.weight_token : undefined; if (!modelToken) { addToast(ToastTypes.ERROR, "Please first pick a voice"); @@ -35,25 +29,21 @@ export const PageVoicetoVoice = ({ addToast(ToastTypes.ERROR, "Please upload a voice clip to convert from"); return; } - const request: EnqueueVoiceConversionRequest = { - uuid_idempotency_token: uuidv4(), - voice_conversion_model_token: modelToken, - source_media_upload_token: v2vState.inputFileToken, + const request = { + uuidIdempotencyToken: uuidv4(), + voiceConversionModelToken: modelToken, + sourceMediaUploadToken: v2vState.inputFileToken, }; - - GenerateVoiceConversion(request).then( - (res: EnqueueVoiceConversionResponse) => { - console.log(request, res); - if (res && res.inference_job_token) { - startPollingActiveJobs(); - changePage(AudioTabPages.LIBRARY); - return; - } - addToast( - ToastTypes.ERROR, - res.error_reason || "Unknown Error in Generating Voice Conversions", - ); - }, + const v2vApi = new VoiceConversionApi(); + const response = await v2vApi.ConvertVoice(request); + if (response.success && response.data) { + startPollingActiveJobs(); + changePage(AudioTabPages.LIBRARY); + return; + } + addToast( + ToastTypes.ERROR, + response.errorMessage || "Unknown Error in Generating Voice Conversions", ); }, [v2vState, changePage]); diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/typesImported.ts b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/typesImported.ts deleted file mode 100644 index 3b6ef86c0c..0000000000 --- a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/typesImported.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface EnqueueVoiceConversionRequest { - uuid_idempotency_token: string; - voice_conversion_model_token: string; - source_media_upload_token: string; - - // Optional args - // auto_predict_f0?: boolean, - // override_f0_method?: EnqueueVoiceConversionFrequencyMethod, - // transpose?: number, -} - -export interface EnqueueVoiceConversionResponse { - success: boolean; - inference_job_token?: string; - error_reason?: string; -} diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/utilities.ts b/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/utilities.ts deleted file mode 100644 index d3e3b85d0f..0000000000 --- a/app/pages/PageEnigma/comps/SidePanelTabs/itemTabs/AudioTab/utilities.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { inferV2V } from "~/api"; -import { - EnqueueVoiceConversionRequest, - EnqueueVoiceConversionResponse, -} from "./typesImported"; - -export function GenerateVoiceConversion( - request: EnqueueVoiceConversionRequest, -): Promise { - return fetch(inferV2V, { - method: "POST", - headers: { - Accept: "application/json", - "Content-Type": "application/json", - }, - body: JSON.stringify(request), - credentials: "include", - }) - .then((res) => res.json()) - .then((res) => { - if (!res) { - return { success: false }; - } - - if (res && "success" in res) { - return res; - } else { - return { success: false }; - } - }) - .catch(() => { - return { success: false }; - }); -}