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 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
丕羽5 小时前
【Pytorch】基本语法
人工智能·pytorch·python
bryant_meng5 小时前
【python】Distribution
开发语言·python·分布函数·常用分布
鱼满满记5 小时前
1.6K+ Star!GenAIScript:一个可自动化的GenAI脚本环境
人工智能·ai·github
m0_594526306 小时前
Python批量合并多个PDF
java·python·pdf
工业互联网专业6 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
vue.js·hadoop·python·flask·毕业设计·源码·课程设计
钱钱钱端6 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman
慕卿扬6 小时前
基于python的机器学习(二)—— 使用Scikit-learn库
笔记·python·学习·机器学习·scikit-learn
manfulshark7 小时前
OPENAI官方prompt文档解析
ai·prompt
Json____7 小时前
python的安装环境Miniconda(Conda 命令管理依赖配置)
开发语言·python·conda·miniconda