You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UnityWebRequest在Android端无法加载URL音频问题求助

解决Unity Android端UnityWebRequest加载Google TTS音频失败的问题

嘿,我帮你排查下这个问题——PC端正常但Android端跑不起来,大概率是踩了Unity Android网络或者Google接口限制的坑,我给你拆解下原因和解决方案:

1. Google TTS接口的User-Agent拦截

首先,Google的translate_tts接口会校验请求的User-Agent,PC端UnityWebRequest的默认UA能通过,但Android端的默认UA会被Google识别为非合法客户端,直接拒绝请求。这是最常见的原因!

你需要在请求里手动设置一个模拟移动端浏览器的UA,比如:

www.SetRequestHeader("User-Agent", "Mozilla/5.0 (Linux; Android 10; SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36");

2. Android网络权限与安全配置

别漏了检查Unity的Android权限设置:

  • 打开Player Settings → Android → Other Settings,确保Internet Access设置为Require(默认应该是,但有时候会被误改)。
  • 如果遇到SSL证书验证错误(比如提示“certificate unknown”),可以临时用一个自定义证书处理器跳过验证(注意:仅用于测试,上线项目必须解决证书问题):
// 需要额外写一个证书处理类
public class IgnoreCertificateHandler : CertificateHandler {
    protected override bool ValidateCertificate(byte[] certificateData) {
        return true;
    }
}

// 在请求里添加
www.certificateHandler = new IgnoreCertificateHandler();

3. 音频格式兼容性问题

你指定的AudioType.MPEG理论上支持MP3,但Android端有时候对格式更敏感,你可以试试换成AudioType.MP3,不过这个问题出现的概率比前面两个低,先解决UA和权限问题再说。

修复后的完整代码

把上面的修改整合进去,代码大概是这样:

IEnumerator DownloadTheAudio() {
    string url = "https://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=32&client=tw-ob&q=cat&tl=En-gb";
    using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.MPEG)) {
        // 设置移动端UA,绕过Google拦截
        www.SetRequestHeader("User-Agent", "Mozilla/5.0 (Linux; Android 10; SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36");
        // 可选:测试时忽略证书验证
        www.certificateHandler = new IgnoreCertificateHandler();
        
        yield return www.SendWebRequest();
        
        if(www.isNetworkError || www.isHttpError) {
            Debug.LogError("音频加载失败:" + www.error);
        } else {
            AudioClip source = DownloadHandlerAudioClip.GetContent(www);
            if(source != null) {
                _audio.clip = source;
                _audio.Play();
            } else {
                Debug.LogError("无法解析下载的音频内容");
            }
        }
    }
}

// 用于跳过SSL证书验证的类(仅测试用)
public class IgnoreCertificateHandler : CertificateHandler {
    protected override bool ValidateCertificate(byte[] certificateData) {
        return true;
    }
}

额外提醒

Google的translate_tts是未公开的API,随时可能被封禁或者调整接口规则,如果你是做上线项目,建议改用官方公开的TTS服务(比如Google Cloud Text-to-Speech、国内的百度/阿里云TTS等),避免后续出问题。另外,如果在国内测试,Android端可能需要配置代理才能访问Google服务,PC端的代理不会自动同步到Android模拟器/真机哦。

内容的提问来源于stack exchange,提问作者DBDBDB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:15:50