Error: Cannot create FMOD::Sound instance for clip "" (FMOD error: End of file unexpectedly reached while trying to read essential data (truncated data?). )UnityEngine.WWW:GetAudioClip (bool,bool,UnityEngine.AudioType)

카테고리 없음 2022. 10. 2. 00:12
반응형

https://answers.unity.com/questions/1822383/fmod-error-unsupported-file-or-audio-format-when-s.html

 

FMOD error: Unsupported file or audio format when setting AuioSource.clip - Unity Answers

 

answers.unity.com

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

//https://foxtrotin.tistory.com/132
public class TTSManager : MonoBehaviour
{
    public AudioSource audioSource;
    private Coroutine routine;

    // Start is called before the first frame update
    void Start()
    {
        audioSource = gameObject.GetComponent<AudioSource>();
    }

    public void PlaySound(string word)
    {
        if (this.routine != null) StopCoroutine(this.routine);
        this.routine = StartCoroutine(DownloadTheAudio(word));
    }

    IEnumerator DownloadTheAudio(string word)
    {
        if (string.IsNullOrEmpty(word)) yield break;

        string url =
            string.Format("https://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=32&client=tw-ob&q={0}&tl=En-gb", word);

        //using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.OGGVORBIS))
        using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.MPEG))
        {
            yield return www.SendWebRequest();

            if (www.result == UnityWebRequest.Result.ConnectionError)
            {
                Debug.Log(www.error);
            }
            else
            {
                /*
                 * Error: Cannot create FMOD::Sound instance for clip "" (FMOD error: Unsupported file or audio format. )
UnityEngine.Networking.DownloadHandlerAudioClip:GetContent (UnityEngine.Networking.UnityWebRequest)
TTSManager/<DownloadTheAudio>d__4:MoveNext () (at Assets/Scripts/TTSManager.cs:42)
UnityEngine.SetupCoroutine:InvokeMoveNext (System.Collections.IEnumerator,intptr)

                 */
                try
                {
                    AudioClip myClip = DownloadHandlerAudioClip.GetContent(www);
                    audioSource.PlayOneShot(myClip);
                }
                catch (Exception e)
                {
                    Debug.Log(e.Message);
                }
                
            }
        }
    }
}
반응형
: