I'm getting this error when I try to run my unity code only on android

INFO:     192.168.240.1:50563 - "POST /v1/tts HTTP/1.1" 200 OK
Traceback (most recent call last):
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/kui/asgi/exceptions.py", line 27, in wrapper
    return await endpoint()
           ^^^^^^^^^^^^^^^^
  File "/home/meow/fish-speech/tools/api_server.py", line 40, in passthrough
    return await endpoint()
           ^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/kui/asgi/views.py", line 29, in wrapper
    return await function()
           ^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/kui/asgi/parameters.py", line 119, in callback_with_auto_bound_params
    result = await result
             ^^^^^^^^^^^^
  File "/home/meow/fish-speech/tools/server/views.py", line 127, in tts
    fake_audios = next(inference(req, engine))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/fish-speech/tools/server/inference.py", line 18, in inference_wrapper
    for result in engine.inference(req):
                  ^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/torch/utils/_contextlib.py", line 36, in generator_context
    response = gen.send(None)
               ^^^^^^^^^^^^^^
  File "/home/meow/fish-speech/fish_speech/inference_engine/__init__.py", line 55, in inference
    prompt_tokens, prompt_texts = self.load_by_hash(
                                  ^^^^^^^^^^^^^^^^^^
  File "/home/meow/fish-speech/fish_speech/inference_engine/reference_loader.py", line 92, in load_by_hash
    self.encode_reference(
  File "/home/meow/fish-speech/fish_speech/inference_engine/vq_manager.py", line 37, in encode_reference
    reference_audio_content = self.load_audio(reference_audio, sample_rate)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/fish-speech/fish_speech/inference_engine/reference_loader.py", line 122, in load_audio
    waveform, original_sr = torchaudio.load(audio_buffer, backend=self.backend)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/torchaudio/_backend/utils.py", line 205, in load
    return backend.load(uri, frame_offset, num_frames, normalize, channels_first, format, buffer_size)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/torchaudio/_backend/soundfile.py", line 27, in load
    return soundfile_backend.load(uri, frame_offset, num_frames, normalize, channels_first, format)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/torchaudio/_backend/soundfile_backend.py", line 221, in load
    with soundfile.SoundFile(filepath, "r") as file_:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/soundfile.py", line 690, in __init__
    self._file = self._open(file, mode_int, closefd)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/meow/anaconda3/envs/fish-speech/lib/python3.12/site-packages/soundfile.py", line 1265, in _open
    raise LibsndfileError(err, prefix="Error opening {0!r}: ".format(self.name))
soundfile.LibsndfileError: Error opening <_io.BytesIO object at 0x7f8ad17198f0>: Format not recognised.
INFO:     192.168.240.1:50566 - "POST /v1/tts HTTP/1.1" 500 Internal Server Error

here is my script that makes this error basically

using System.Collections.Generic;
using System.IO;
using TMPro;
using UnityEngine;
using Michsky.UI.Reach;

public class LOADSAVE : MonoBehaviour
{
    public string FinalPath;
    public TMP_InputField AgentName;
    public TMP_InputField AgentPerson;
    public Michsky.UI.Reach.Dropdown SelectedAgent;
    public string RefVoice;
    public TMP_InputField Transcription;
    public FastAPIAudioTranscriber TRANSCRIBER;
    public string baseFolder = string.Empty;
    public string agentFolderName = string.Empty;
    public string agentFolderPath = string.Empty;

    private string wavFileType;

    private AudioClip recordingClip;
    private bool isRecording = false;
    private const int recordingFreq = 44100; // common freq for WAV
    private float maxRecordingDuration = 60f; // seconds

    void Start()
    {
        // Setup persistent base folder + extension for wav files
        baseFolder = Path.Combine(Application.persistentDataPath, "Agent Presets");

        // NativeFilePicker wants extension *without* the dot:
        wavFileType = NativeFilePicker.ConvertExtensionToFileType("wav");
    }

    public void LoadFileVoice()
    {
        NativeFilePicker.PickFile((path) =>
        {
            if (string.IsNullOrEmpty(path))
            {
                Debug.Log("Operation cancelled");
                // TODO: Show cancel UI popup/message if needed
                return;
            }

            Debug.Log($"Selected file: {path}");
            FinalPath = path;
            RefVoice = path;

            try
            {
                // Sanitize and check inputs
                string agentNameText = SanitizeFileName(string.IsNullOrEmpty(AgentName.text) ? "DefaultAgent" : AgentName.text);

                string baseFolderPath = Path.Combine(Application.persistentDataPath, "Agent Presets");
                string agentFolder = Path.Combine(baseFolderPath, agentNameText);

                if (!Directory.Exists(agentFolder))
                    Directory.CreateDirectory(agentFolder);

                string destFilePath = Path.Combine(agentFolder, "Agent_Voice.wav");

                // Copy the selected WAV file to agent folder
                File.Copy(path, destFilePath, true);

                Debug.Log($"Voice file copied to: {destFilePath}");

                TRANSCRIBER.audioFilePath = destFilePath;

                // TODO: Show UI confirmation popup

            }
            catch (System.Exception ex)
            {
                Debug.LogError($"Failed to copy voice file: {ex.Message}");
                // TODO: Show error UI popup
            }

        }, new string[] { wavFileType });
    }

    /// <summary>
    /// Save a file from a given path to a user selectable export location.
    /// </summary>
    /// <param name="filePath">The full path of the file to be exported</param>
    public void SaveFile(string filePath)
    {
        if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath))
        {
            Debug.LogError("SaveFile: Input file path is invalid or file does not exist");
            return;
        }

        string tempPath = Path.Combine(Application.temporaryCachePath, "test.wav");

        try
        {
            byte[] bytes = File.ReadAllBytes(filePath);
            File.WriteAllBytes(tempPath, bytes);

            NativeFilePicker.ExportFile(tempPath, (success) =>
            {
                Debug.Log("File export success: " + success);
                // TODO: Show feedback popup depending on success
            });
        }
        catch (System.Exception ex)
        {
            Debug.LogError($"SaveFile: Failed to export file: {ex}");
            // TODO: Show error popup
        }
    }

    public void SaveAgentTranscription()
    {
        try
        {
            string agentNameText = SanitizeFileName(string.IsNullOrEmpty(AgentName.text) ? "DefaultAgent" : AgentName.text);

            string baseFolderPath = Path.Combine(Application.persistentDataPath, "Agent Presets");
            if (!Directory.Exists(baseFolderPath))
                Directory.CreateDirectory(baseFolderPath);

            string agentFolder = Path.Combine(baseFolderPath, agentNameText);
            if (!Directory.Exists(agentFolder))
                Directory.CreateDirectory(agentFolder);

            string filePath = Path.Combine(agentFolder, "Agent_Transcription.txt");

            File.WriteAllText(filePath, Transcription.text);

            Debug.Log($"Transcription saved successfully at: {filePath}");
            // TODO: Show UI confirmation

        }
        catch (System.Exception ex)
        {
            Debug.LogError($"Failed to save transcription: {ex}");
            // TODO: Show error UI popup
        }
    }

    public void SaveFileAgent()
    {
        try
        {
            string agentNameText = SanitizeFileName(string.IsNullOrEmpty(AgentName.text) ? "DefaultAgent" : AgentName.text);

            string baseFolderPath = Path.Combine(Application.persistentDataPath, "Agent Presets");
            if (!Directory.Exists(baseFolderPath))
                Directory.CreateDirectory(baseFolderPath);

            string agentFolder = Path.Combine(baseFolderPath, agentNameText);
            if (!Directory.Exists(agentFolder))
                Directory.CreateDirectory(agentFolder);

            string fileName = SanitizeFileName(agentNameText + "_INFO") + ".txt";
            string filePath = Path.Combine(agentFolder, fileName);

            List<string> lines = new List<string>
            {
                AgentName.text,
                AgentPerson.text,
            };

            File.WriteAllLines(filePath, lines);

            Debug.Log($"Agent info file saved successfully at: {filePath}");
        }
        catch (System.Exception ex)
        {
            Debug.LogError($"Failed to save file: {ex}");
            // TODO: Show error UI popup
        }
    }

    public void LoadAgentsInDrop()
    {
        string baseFolderPath = Path.Combine(Application.persistentDataPath, "Agent Presets");

        if (!Directory.Exists(baseFolderPath))
        {
            Debug.LogWarning($"Agent Presets folder does not exist at: {baseFolderPath}");
            return;
        }

        SelectedAgent.items.Clear();

        string[] agentFolders = Directory.GetDirectories(baseFolderPath);

        if (agentFolders.Length == 0)
        {
            Debug.Log("No agent folders found in Agent Presets.");
            return;
        }

        foreach (string folderPath in agentFolders)
        {
            string folderName = Path.GetFileName(folderPath);
            SelectedAgent.CreateNewItem(folderName);
        }
    }

    public void RecordAgentVoice()
    {
        // This is a simple toggle example for recording audio on button press to release

        if (!isRecording)
        {
            if (string.IsNullOrEmpty(AgentName.text))
            {
                Debug.LogWarning("AgentName is empty. Please enter a valid agent name before recording.");
                return;
            }

            Debug.Log("Started recording...");

            // Start microphone recording
            recordingClip = Microphone.Start(null, false, (int)maxRecordingDuration, recordingFreq);
            isRecording = true;
        }
        else
        {
            Debug.Log("Stopped recording.");

            if (!Microphone.IsRecording(null))
            {
                Debug.LogWarning("Microphone is not recording currently.");
                isRecording = false;
                return;
            }

            int length = Microphone.GetPosition(null);
            Microphone.End(null);

            if (length <= 0)
            {
                Debug.LogError("Recorded audio length is 0.");
                isRecording = false;
                return;
            }

            // Create a new clip with the recorded length
            float[] samples = new float[recordingClip.samples * recordingClip.channels];
            recordingClip.GetData(samples, 0);

            AudioClip clippedClip = AudioClip.Create(recordingClip.name, length, recordingClip.channels, recordingClip.frequency, false);
            float[] clippedSamples = new float[length * recordingClip.channels];
            System.Array.Copy(samples, clippedSamples, clippedSamples.Length);
            clippedClip.SetData(clippedSamples, 0);

            // Save the audio clip as WAV to the agent folder
            try
            {
                string baseFolderPath = Path.Combine(Application.persistentDataPath, "Agent Presets");
                string agentFolderName = SanitizeFileName(AgentName.text);
                string agentFolderPath = Path.Combine(baseFolderPath, agentFolderName);

                if (!Directory.Exists(agentFolderPath))
                    Directory.CreateDirectory(agentFolderPath);

                string filePath = Path.Combine(agentFolderPath, "Agent_Voice.wav");

                // Convert and save AudioClip to WAV file (you'll need a helper function)
                SaveWavFile(filePath, clippedClip);

                Debug.Log($"Recording saved to: {filePath}");
            }
            catch (System.Exception ex)
            {
                Debug.LogError($"Failed to save recorded voice: {ex.Message}");
            }

            isRecording = false;
        }
    }

    /// <summary>
    /// Helper method to save AudioClip to WAV file - you need to implement or use existing WAV utility
    /// This is a stub to remind you this function must exist.
    /// </summary>
    /// <param name="filePath"></param>
    /// <param name="clip"></param>
    private void SaveWavFile(string filePath, AudioClip clip)
    {
        // You need to implement this using your preferred WAV writer
        // Example implementation can be found online, e.g. https://gist.github.com/darktable/2317063
        // or use third party libraries

        // Placeholder: logs and no actual save
        Debug.LogWarning("SaveWavFile not implemented! Audio not saved: " + filePath);
    }

    private string SanitizeFileName(string filename)
    {
        foreach (char c in Path.GetInvalidFileNameChars())
            filename = filename.Replace(c.ToString(), "");
        return filename;
    }
}