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

Node.js+Angular对接谷歌Text-To-Speech返回音频无法播放问题

问题根因

你将后端返回的二进制MP3音频错误地以text格式解析,得到的乱码内容被Audio构造函数识别为相对路径,浏览器自动拼接当前域名发起无效请求,同时无法解析非法媒体资源,因此抛出报错。

修复方案

1. 修改Angular服务请求配置

将HttpClient的响应类型从text改为blob,正确接收二进制音频数据:

public textToSpeech(txt: string) {
  let httpParams: HttpParams = new HttpParams()
    .set('txt', txt)
  return this.http.get('//localhost:3030/api/tts', { params: httpParams, responseType: 'blob' })
}

2. 调整组件播放逻辑

拿到Blob响应后,生成可被Audio识别的临时资源地址再实例化播放,同时可新增内存释放逻辑避免泄漏:

onButtonClick() {
  this.speechService.textToSpeech('testing')
  .subscribe(res => {
    const audioUrl = URL.createObjectURL(res);
    this.audio = new Audio(audioUrl);
    this.audio.play();
    // 音频播放结束后释放内存
    this.audio.onended = () => {
      URL.revokeObjectURL(audioUrl);
    };
  })
}

可选后端优化(非必须)

如果需要更符合在线播放的响应语义,可以将后端接口的Content-disposition配置从attachment改为inline,不修改也不影响现有功能。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:15:00