OpenAI Whisper API (InvalidRequestError)

题意: OpenAI Whisper API(无效请求错误)

问题背景:

I'm trying to use OpenAI Whisper API to transcribe my audio files. When I run it by opening my local audio files from disk, it worked perfectly. Now I'm developing a FastAPI endpoint to receive an audio file from the client and transcribe it.

"我正在尝试使用 OpenAI Whisper API 来转录我的音频文件。当我通过从磁盘打开本地音频文件运行它时,它工作得非常好。现在我正在开发一个 FastAPI 端点,用于接收客户端的音频文件并进行转录。"

However, when I try to use the same file received by FastAPI endpoint directly, it will reject the file, claiming the file received is in invalid format.

"然而,当我尝试直接使用由 FastAPI 端点接收到的相同文件时,API 会拒绝该文件,并声称接收到的文件格式无效。"

I tried to read and write the received file to the disk directly from the endpoint. Then opening the file from disk and using it in Whisper API, it works without any issues. Below is the code that shows it.

"我尝试直接从端点读取和写入接收到的文件到磁盘。然后从磁盘打开文件并在 Whisper API 中使用,这样没有任何问题。下面是展示此过程的代码。"

python 复制代码
@app.post("/audio")
async def summarise_audio(file:UploadFile):
    audio =await file.read()

    with open("testy.wav",'wb') as f:
        f.write(audio)
    x = open("testy.wav",'rb')
    transcript = openai.Audio.transcribe("whisper-1",x) # worked
    # transcript = openai.Audio.transcribe("whisper-1",file.file) # did not work 
    return transcript

How would I go to solve this problem, could there be an issue with the file format received by FastAPI endpoint?

"我该如何解决这个问题?FastAPI 端点接收到的文件格式可能存在问题吗?"

问题解决:

Okay, after spending about 12 hours on this problem, I found a workaround for OpenAI Whisper API for it to accept the file.

"好吧,在这个问题上花了大约 12 个小时后,我找到了一个解决方法,使 OpenAI Whisper API 能够接受该文件。"

Granted I am not well versed in file reading and binary content, so if anyone has better solution than me, I would love to see the solution.

"我承认我不太擅长文件读取和二进制内容处理,所以如果有人有比我更好的解决方案,我很想看到这个解决方案。"

python 复制代码
import io
@app.post("/audio")
async def summarise_audio(file:UploadFile):
    audio =await file.read()
    
    buffer = io.BytesIO(audio)

    buffer.name = 'testy.wav'
    transcript = openai.Audio.transcribe("whisper-1",buffer) # worked
    
    return transcript

I have to read the file content and then convert it into a file-like buffer using io.BytesIO. Here, passing in the buffer directly to OpenAI Whisper API would not work as the buffer does not have a file name. So we have to specify a name for the buffer before passing it into the OpenAI Whisper API.

"我必须读取文件内容,然后使用 `io.BytesIO` 将其转换为类似文件的缓冲区。这里直接将缓冲区传递给 OpenAI Whisper API 是行不通的,因为缓冲区没有文件名。因此,在将其传递给 OpenAI Whisper API 之前,我们必须为缓冲区指定一个文件名。"

相关推荐
蚕豆哥1 小时前
【2026马年重启】我的 Primavera P6/Unifier 技术笔记,继续更新!
ai·oracle·项目管理·unifier·p6·进度管理·甲骨文
玄同7651 小时前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae
小瑞瑞acd2 小时前
【小瑞瑞精讲】卷积神经网络(CNN):从入门到精通,计算机如何“看”懂世界?
人工智能·python·深度学习·神经网络·机器学习
闲人编程2 小时前
使用FastAPI和WebSocket构建高性能实时聊天系统
websocket·网络协议·网络编程·fastapi·持久化·实时聊天·codecapsule
CoderJia程序员甲2 小时前
GitHub 热榜项目 - 日榜(2026-02-06)
人工智能·ai·大模型·github·ai教程
火车叼位2 小时前
也许你不需要创建.venv, 此规范使python脚本自备依赖
python
火车叼位2 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
孤狼warrior2 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Katecat996633 小时前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
带刺的坐椅3 小时前
Claude Code Skills,Google A2A Skills,Solon AI Skills 有什么区别?
java·ai·solon·a2a·claudecode·skills