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

请求提供JavaScript代码:将AJAX返回的RIFF/WAVE二进制代码转为.wav文件

解决AJAX获取RIFF/WAVE二进制数据转可播放可保存WAV文件的问题

你的核心问题是AJAX请求默认将响应解析为文本,导致二进制音频数据被错误编码破坏,无法直接使用。以下是修正后的完整实现代码,包含播放和本地保存功能:

$.ajax({
    url: "http://216.48.183.26/convert",
    type: "POST",
    contentType: "application/json",
    // 关键配置:指定响应为二进制Blob类型,避免数据损坏
    xhrFields: {
        responseType: 'blob'
    },
    data: JSON.stringify({
        "text": "My Name is Usman Tahir. I am living in Lahore, Pakistan. Thank You.",
        "voice": "gabby_reading",
        "seed": 3,
        "rate": 16000
    }),

    success: function (audioBlob) {
        // 生成可播放的音频实例
        const audioUrl = URL.createObjectURL(audioBlob);
        const audio = new Audio(audioUrl);
        // 注意:浏览器可能限制自动播放,需用户交互后触发(比如绑定按钮点击事件)
        audio.play().catch(err => console.log("播放失败:", err));

        // 生成下载链接,允许用户保存到本地
        const downloadBtn = document.createElement('a');
        downloadBtn.href = audioUrl;
        downloadBtn.download = 'voice-output.wav';
        downloadBtn.textContent = '点击下载音频文件';
        document.body.appendChild(downloadBtn);
    },

    error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR);
        console.log(textStatus);
        console.log(errorThrown);
    }
});

关键说明

  1. 移除无效请求头:删掉了headers: { 'Access-Control-Allow-Origin': '*' },这个是服务器端需要配置的响应头,客户端设置无意义,反而可能引发请求异常。
  2. 指定响应类型:添加xhrFields: { responseType: 'blob' },强制浏览器将响应作为二进制Blob对象处理,避免文本解析破坏音频数据结构。
  3. Blob转可用URL:使用URL.createObjectURL()将Blob转换为浏览器可识别的临时URL,既可以用于Audio元素播放,也可以作为下载链接的地址。

注意事项

  • 浏览器自动播放限制:多数现代浏览器禁止未经过用户交互的自动播放,建议将播放逻辑绑定到按钮点击等用户操作事件上。
  • CORS验证:确保目标服务器已正确配置Access-Control-Allow-Origin等跨域响应头,否则请求会被浏览器拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:35:34