OpenAI Whisper 无法处理过去几秒的 IOS 录音

问题描述 投票:0回答:1

我正在将录音发送到 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

如果有人能告诉我该怎么做,那就太棒了,我已经被难住了,根本找不到任何有这个问题的人。

speech-to-text openai-api whisper
1个回答
0
投票

刚刚遇到这个问题,问题是您正在以多部分表单格式和/或 base64 编码发送数据。看起来像所附图片 base-encoded-image,这就是您的多部分表单的样子 multi-part form。因此,在将其发送给 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()
© www.soinside.com 2019 - 2024. All rights reserved.