Аудио с URL-адреса не воспроизводится полностью

Я пытаюсь добавить текст в речь в свой проект в Unity 5.4.4f, и я использую API, который позволяет мне вводить, что сказать в строке URL, а затем возвращает аудиофайл, который я загружаю и играю.

Regex rgx = new Regex("\\s+");
string result = rgx.Replace(timeLeft + " minutes left", "+");
string url = "http://api.voicerss.org/?key=MY_API_KEY&hl=en-us&src=" + result;
Debug.Log(url);
WWW audioWWW = new WWW(url);
yield return audioWWW;
AudioClip audClip = audioWWW.GetAudioClip(false, false, AudioType.MPEG);
audSrc.clip = audClip;
audSrc.Play();

Он воспроизводит звук в течение 1 секунды, а затем останавливается.


person Community    schedule 19.05.2017    source источник
comment
Этот пост может быть полезен.   -  person    schedule 19.05.2017
comment
Я уже видел этот пост и пробовал, но это не сработало.   -  person    schedule 20.05.2017


Ответы (1)


Используемый вами сервер создает файл .mp3, и этот файл кажется сжатым. Проблема невозможности закончить воспроизведение звука или просто воспроизведение одной секунды возникает только с этим файлом.

Исправление заключается в использовании GetAudioClipCompressed, который, похоже, еще не задокументирован. Просто замените GetAudioClip на GetAudioClipCompressed и передайте ему 2 параметра.

public static AudioClip GetAudioClipCompressed(this WWW www, bool threeD, AudioType audioType);

После этого звук смог воспроизвести. Вот как выглядит полный код. Обратите внимание, что я удалил ключ API. Вы можете поставить это самостоятельно.

IEnumerator Start()
{
    Regex rgx = new Regex("\\s+");
    string result = rgx.Replace(timeLeft + " minutes left", "+");
    string url = "http://api.voicerss.org/?key=MY_API_KEY&hl=en-us&src=" + result;
    Debug.Log(url);
    WWW audioWWW = new WWW(url);
    yield return audioWWW;
    AudioClip audClip = audioWWW.GetAudioClipCompressed(false, AudioType.MPEG);
    audSrc.clip = audClip;
    audSrc.Play();
}
person Programmer    schedule 20.05.2017