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

Google Apps Script调用GCP文本转语音返回text格式如何保存为MP3

问题根因

GCP Text-to-Speech的synthesize接口返回的是JSON结构,音频内容存放在audioContent字段中,为base64编码的字符串,而非直接返回二进制MP3流,所以你之前直接对响应对象调用getBlob、getAs等方法都无法得到正确的音频文件。

正确实现代码

function gcp_text_to_speech(){
  var payload = {
    'input':{
      'text':'I\'ve added the event to your calendar.'
    },
    'voice':{
      'languageCode':'en-gb',
      'name':'en-GB-Standard-A',
      'ssmlGender':'FEMALE'
    },
    'audioConfig':{
      'audioEncoding':'MP3'
    }
  };

  var response = UrlFetchApp.fetch(
    "https://texttospeech.googleapis.com/v1/text:synthesize", {
      method: "POST",
      headers: {
        "Authorization" : "Bearer " + getService().getAccessToken()
      },
      contentType: "application/json",
      payload: JSON.stringify(payload),
      muteHttpExceptions: true
    });  

  // 解析响应JSON获取base64格式的音频内容
  const responseJson = JSON.parse(response.getContentText());
  const base64AudioContent = responseJson.audioContent;
  // 解码base64为二进制字节
  const audioBinary = Utilities.base64Decode(base64AudioContent);
  // 生成指定MIME类型的MP3 Blob
  const mp3Blob = Utilities.newBlob(audioBinary, 'audio/mpeg', '语音合成结果.mp3');
  // 保存到Google Drive,也可替换为DriveApp.createFile(mp3Blob)无需启用高级API
  const saveResult = Drive.Files.insert({title: "语音合成结果.mp3"}, mp3Blob);
}

补充说明

  • 不需要调用getAs方法做格式转换,直接通过Utilities.newBlob指定MIME类型audio/mpeg即可生成可正常播放的MP3文件,该格式为Google Apps Script官方支持的Blob类型。
  • 如果你没有启用Drive高级API,将最后一行保存代码替换为DriveApp.createFile(mp3Blob)即可完成存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:57:03