Hello I have a Unity C# class that I need you to make me an editor window script for, I want it to be able to be found in tools > Seed_VC. I want the window to display a logo from Resources and allow the user to edit all of the parameters inside that window please leave nothing out. And as for the handling of input audio files I want you to handle those as audio clips from unity. I want you to also save the resulting file inside of unity and give the user in the window the ability to select which asset folder to save it in. Please also provide a 'CONVERT' button in the bottom of the window that kicks off the generation ty.

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;

public class AudioConverter : MonoBehaviour
{
    // The user can set this URL to whatever the API endpoint is
    public string serverUrl = "http://localhost:8000/convert";

    public int QualityValue = 10;

    [Serializable]
    public class ConversionResponse
    {
        public string windows_path;
        public string file_path;
    }

    /// <summary>
    /// Converts audio files by uploading them and related parameters to the server URL.
    /// </summary>
    /// <param name="Vox1_path">Path to source audio file</param>
    /// <param name="Vox2_path">Path to reference audio file</param>
    public async Task ConvertStuff(string Vox1_path, string Vox2_path)
    {
        if (!File.Exists(Vox1_path))
        {
            Debug.LogError("Source file does not exist: " + Vox1_path);
            return;
        }
        if (!File.Exists(Vox2_path))
        {
            Debug.LogError("Reference file does not exist: " + Vox2_path);
            return;
        }

        byte[] sourceAudioBytes;
        byte[] referenceAudioBytes;

        try
        {
            sourceAudioBytes = File.ReadAllBytes(Vox1_path);
            referenceAudioBytes = File.ReadAllBytes(Vox2_path);
        }
        catch (Exception ex)
        {
            Debug.LogError($"Failed to read audio files: {ex.Message}");
            return;
        }

        List<IMultipartFormSection> formData = new List<IMultipartFormSection>
        {
            new MultipartFormFileSection("source_file", sourceAudioBytes, "source.wav", "audio/wav"),
            new MultipartFormFileSection("reference_file", referenceAudioBytes, "reference.wav", "audio/wav"),

            // Server parameters:
            new MultipartFormDataSection("diffusion_steps", QualityValue.ToString()),
            new MultipartFormDataSection("length_adjust", "1.0"),
            new MultipartFormDataSection("inference_cfg_rate", "0.7"),
            new MultipartFormDataSection("auto_f0_adjust", "true"),
            new MultipartFormDataSection("pitch_shift", "0")
        };

        UnityWebRequest request = UnityWebRequest.Post(serverUrl, formData);

        try
        {
            var operation = request.SendWebRequest();

            while (!operation.isDone)
                await Task.Yield();

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.LogError($"Server error: {request.error}");
                return;
            }

            string result = request.downloadHandler.text;

            try
            {
                ConversionResponse conversionResponse = JsonUtility.FromJson<ConversionResponse>(result);

                string filePath = conversionResponse.windows_path ?? conversionResponse.file_path;

                if (string.IsNullOrEmpty(filePath))
                {
                    Debug.LogError("Server response does not contain 'windows_path' or 'file_path'");
                    return;
                }

                Debug.Log("File saved to: " + filePath);
            }
            catch (Exception ex)
            {
                Debug.LogError("Failed to parse server response: " + ex.Message);
            }
        }
        catch (Exception ex)
        {
            Debug.LogError("Error sending request: " + ex.Message);
        }
        finally
        {
            request.Dispose();
        }
    }
}