mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-11 04:16:55 +00:00
API2.6/ V2V enqueue endpoint updated (#508)
v2v enqueue endpoint updated Co-authored-by: wil <wil@storyteller.ai>
This commit is contained in:
1 parent
118e4d5a3c
commit
7516ec9c05
5 files changed
+26
-86
No files matched your search
@@ -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
@@ -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 };
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user