您的位置:首页 > 健康 > 美食 > OpenAI Whisper API (InvalidRequestError)

OpenAI Whisper API (InvalidRequestError)

2024/12/28 21:36:31 来源:https://blog.csdn.net/suiusoar/article/details/141790383  浏览:    关键词: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 中使用,这样没有任何问题。下面是展示此过程的代码。”

@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.

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

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) # workedreturn 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 之前,我们必须为缓冲区指定一个文件名。”

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com