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

Angular中调用谷歌翻译TTS实现文本转语音遇404错误求助

解决方案:谷歌翻译TTS接口404错误修复

问题原因

谷歌翻译的TTS接口已更新验证逻辑,旧的client=tw-ob参数已被废弃,导致请求返回404。

修复步骤

1. 替换Client参数

将接口URL中的client=tw-ob替换为client=gtx或client=webapp,这两个是当前有效的客户端标识。

修改后的基础代码示例:

playVoice() {
  let audio = new Audio();
  audio.src = `https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=gtx&q=test`;
  audio.load();
  audio.play();
}

2. 更可靠的Fetch播放方式(推荐)

直接使用Audio对象可能因请求头缺失被拦截,改用Fetch API获取音频Blob后再播放,可模拟浏览器请求头避免限制:

async function playVoice() {
  const text = 'test';
  const encodedText = encodeURIComponent(text);
  const url = `https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=gtx&q=${encodedText}`;
  
  try {
    const response = await fetch(url, {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
      }
    });
    
    if (!response.ok) throw new Error('音频请求失败');
    
    const blob = await response.blob();
    const audioUrl = URL.createObjectURL(blob);
    const audio = new Audio(audioUrl);
    await audio.play();
    URL.revokeObjectURL(audioUrl); // 释放临时资源
  } catch (error) {
    console.error('语音播放失败:', error);
  }
}

3. 处理文本长度限制

谷歌TTS单请求支持的文本长度约为200字符,超过该长度时需要拆分文本分批请求,再合并音频片段播放。

生产环境建议

谷歌翻译TTS属于未公开的内部API,随时可能变更或限制访问。如果是生产环境应用,建议使用官方的Google Cloud Text-to-Speech服务,或其他公开稳定的TTS服务,确保服务长期稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:10:38