我正在将录音发送到 OpenAI Whisper API,但无法让移动录音接受过去几秒钟的数据,我不知道为什么。桌面录音功能非常好,但每当我在手机上尝试时,转录只能得到一两个单词。
curl --request POST \
--url https://api.openai.com/v1/audio/transcriptions \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@C:\Users\katra\Desktop\audio.wav' \
--form model=whisper-1
如果有人能告诉我该怎么做,那就太棒了,我已经被难住了,根本找不到任何有这个问题的人。
刚刚遇到这个问题,问题是您正在以多部分表单格式和/或 base64 编码发送数据。看起来像所附图片 ,这就是您的多部分表单的样子 。因此,在将其发送给 Whisper 之前,您需要对其进行解码,然后解析多部分表单以获取 web-kit 表单边界之后的所有内容。因此,您可以使用名为 cgi 的内置 python 库来提取音频。
cgi.FieldStorage(fp=BytesIO(base64.b64decode(event["body"])), headers={'content-type': content_type}, environ={'REQUEST_METHOD': 'POST'})
是我用过的。然而,这是在 lambda 函数中,所以当然你不会有“事件”
这是我使用的 lambda 代码片段
content_type = event["headers"]["content-type"]
form_data = cgi.FieldStorage(fp=BytesIO(base64.b64decode(event["body"])), headers={'content-type': content_type}, environ={'REQUEST_METHOD': 'POST'})
if "audio" not in form_data:
print("Error: No audio data received.") # Logging error for no audio data
return {
'statusCode': 400,
'headers': {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Methods': 'OPTIONS,POST'
},
'body': json.dumps('No audio data received.')
}
# Extracting audio data from parsed form data
audio_data = form_data["audio"].file.read()