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

纯JavaScript调用GCP Speech-to-Text API遇BadRequest错误求指导

纯JS实现GCP语音转文本的问题解决

结论:可以仅用纯前端JavaScript实现,不需要Node.js

一、GCP配置检查

  • 必须启用Speech-to-Text API:登录GCP控制台,进入API库找到Speech-to-Text API,确认状态为「已启用」——只有API密钥没用,不启用API直接调用肯定报错。
  • API密钥限制:如果是前端使用,不要设置IP限制(除非固定访问IP),建议设置HTTP引用限制,指定你的网站域名,防止密钥被盗用;同时确认密钥没有被限制调用Speech-to-Text API的权限(默认已启用的API对密钥开放,但最好核对)。
  • 配额检查:查看GCP控制台的「配额」页面,Speech-to-Text有免费额度,确认是否超出配额,超出也会返回错误。

二、BadRequest错误的核心排查点

这个错误90%以上是音频格式或请求参数不匹配导致的,重点检查:

  • 录制的音频格式兼容:MediaRecorder在不同浏览器默认输出格式不同(如Chrome默认webm/opus),而GCP API不支持这些格式。要么配置MediaRecorder录制为兼容格式(部分浏览器支持audio/wav;codecs=PCM,即LINEAR16编码),要么用纯JS音频库把录制的Blob转成FLAC/LINEAR16编码。
    // 示例:指定兼容的录制格式(需浏览器支持)
    const mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/wav;codecs=PCM' });
    
  • 请求参数与音频一致:调用API时,encoding、sampleRateHertz必须和录制的音频完全匹配。比如录制的是16kHz LINEAR16编码的WAV,请求体要这么写:
    const requestBody = {
      config: {
        encoding: 'LINEAR16',
        sampleRateHertz: 16000,
        languageCode: 'zh-CN' // 按实际语言调整,比如en-US
      },
      audio: {
        content: await blobToBase64(audioBlob) // 必须转成base64字符串
      }
    };
    
    // 辅助函数:Blob转base64
    function blobToBase64(blob) {
      return new Promise((resolve) => {
        const reader = new FileReader();
        reader.onloadend = () => resolve(reader.result.split(',')[1]);
        reader.readAsDataURL(blob);
      });
    }
    
  • 音频内容编码正确:API要求音频内容是base64编码的纯字符串,不能直接传Blob或二进制数据,必须按上面的方法转换。
  • 语言代码规范:languageCode必须符合GCP的标准格式,比如中文是zh-CN,不能写zh或cn,写错会触发BadRequest。

三、前端调用的额外注意事项

  • CORS设置:在GCP控制台的API密钥设置里,添加你的域名到「HTTP引用限制」,否则会出现跨域错误(虽然当前是BadRequest,但先确保CORS没问题)。
  • API调用方式:用fetch直接调用REST接口,示例:
    const apiKey = '你的API密钥';
    const response = await fetch(`https://speech.googleapis.com/v1/speech:recognize?key=${apiKey}`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(requestBody)
    });
    const result = await response.json();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:20:15