API2.6/ V2V enqueue endpoint updated (#508)

v2v enqueue endpoint updated

Co-authored-by: wil <wil@storyteller.ai>
This commit is contained in:
wilandwil authored and GitHub committed 2024-06-20 11:49:19 -04:00
1 parent 118e4d5a3c
commit 7516ec9c05
5 files changed
+26 -86

No files matched your search

+5 -5
View File
@@ -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;
}
+1 -1
View File
@@ -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
@@ -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]);
@@ -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;
}
@@ -1,34 +0,0 @@
import { inferV2V } from "~/api";
import {
EnqueueVoiceConversionRequest,
EnqueueVoiceConversionResponse,
} from "./typesImported";
export function GenerateVoiceConversion(
request: EnqueueVoiceConversionRequest,
): Promise<EnqueueVoiceConversionResponse> {
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 };
});
}