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

iPhone浏览器调用OpenAI Whisper API无法完整转录音频

解决iPhone浏览器中Whisper API仅转录音频开头内容的问题

可能的原因及解决方案

1. 音频编码格式兼容性问题

iPhone浏览器录制的Blob可能并非标准MP3编码,即便你指定了type: "audio/mp3",实际编码参数(如比特率、采样率)可能不符合Whisper API的要求,导致转录截断。

解决方法:

  • 改用WAV格式发送音频(无压缩格式,兼容性更强):
    修改文件创建代码:
    const audioFile = new File([recordedBlob], "audio.wav", {
      type: "audio/wav",
    });
    
    同时确保录制时使用WAV格式初始化MediaRecorder:
    const mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/wav' });
    

2. Blob转File时的数据截断

iPhone浏览器在处理Blob转File的过程中可能出现数据丢失,虽然本地播放正常,但实际发送给API的文件不完整。

解决方法:

  • 先将Blob转为ArrayBuffer再创建File,确保数据完整性:
    const getTranscript = async (recordedBlob) => {
      try {
        const arrayBuffer = await recordedBlob.arrayBuffer();
        const audioFile = new File([arrayBuffer], "audio.wav", { type: "audio/wav" });
        const transcript = await openai.audio.transcriptions.create({
          model: "whisper-1",
          file: audioFile,
          response_format: "text",
        });
        return transcript;
      } catch (err) {
        return Promise.reject(err);
      }
    };
    

3. OpenAI JS库的兼容性问题

在iPhone浏览器中,openai-js库对File对象的自动处理可能存在兼容性bug,导致发送的文件不完整。

解决方法:

  • 手动构建FormData直接调用API,绕过库的自动处理:
    const getTranscript = async (recordedBlob) => {
      try {
        const arrayBuffer = await recordedBlob.arrayBuffer();
        const audioFile = new File([arrayBuffer], "audio.wav", { type: "audio/wav" });
        const formData = new FormData();
        formData.append("file", audioFile);
        formData.append("model", "whisper-1");
        formData.append("response_format", "text");
    
        const response = await fetch("https://api.openai.com/v1/audio/transcriptions", {
          method: "POST",
          headers: {
            Authorization: `Bearer ${YOUR_OPENAI_API_KEY}`,
          },
          body: formData,
        });
    
        if (!response.ok) {
          throw new Error(`请求失败:${response.status} ${response.statusText}`);
        }
    
        return await response.text();
      } catch (err) {
        return Promise.reject(err);
      }
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:54:58