| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- export async function rvc(
- audio: Blob,
- rvc_url: string,
- model_name: string,
- index_path: string,
- f0up_key: number,
- f0method: string,
- index_rate: string,
- filter_radius: number,
- resample_sr: number,
- rms_mix_rate: number,
- protect: number,
- ) {
- try {
- // Read the Blob data as ArrayBuffer
- const arrayBuffer = await new Response(audio).arrayBuffer();
- // Convert ArrayBuffer to Blob with audio/wav MIME type
- const wavBlob = new Blob([arrayBuffer], { type: 'audio/wav' });
- const params = {
- model_name: model_name,
- index_path: index_path,
- f0up_key: f0up_key.toString(),
- f0method: f0method,
- index_rate: index_rate,
- filter_radius: filter_radius.toString(),
- resample_sr: resample_sr.toString(),
- rms_mix_rate: rms_mix_rate.toString(),
- protect: protect.toString(),
- };
- const formData = new FormData();
- formData.append('input_file', wavBlob);
- const url = new URL(rvc_url);
- Object.entries(params).forEach(([key, value]) => {
- url.searchParams.append(key, value);
- });
- const res = await fetch(url.toString(), {
- method: 'POST',
- body: formData
- });
- const data = (await res.arrayBuffer()) as any;
- return { audio: data };
- } catch (error) {
- console.error('Error in rvc:', error);
- throw error;
- }
- }
|