You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenAI API转录Telegram OGG语音文件时遇400错误求助

解决OpenAI语音转录API识别OGG文件失败的问题

你遇到的400错误是因为传递给API的file参数是单纯的bytes对象,OpenAI无法通过它识别文件格式——即使OGG在支持列表里,API也需要通过文件名扩展名来判断格式。

修复方案

将读取到的bytes内容包装成带文件名的类文件对象,让API能识别格式:

import io
import aiofiles
from openai import AsyncOpenAI

async def transcribe_voice_message(file_path):
    """OpenAI Speech To Text request"""
    client = AsyncOpenAI(api_key=openai_api_key)
    try:
        async with aiofiles.open(file_path, 'rb') as f:
            file_content = await f.read()
            # 用BytesIO封装bytes内容,并指定含扩展名的文件名
            audio_file = io.BytesIO(file_content)
            audio_file.name = "audio.ogg"
            transcription = await client.audio.transcriptions.create(
                model="whisper-1", 
                file=audio_file
            )
        return transcription.text
    except Exception as e:
        logger.error(f"Open API error: {e}")
        return ""

关键说明

  • OpenAI的转录API要求file参数是类文件对象(具备read()方法),并且需要通过文件名的扩展名来识别音频格式。单纯的bytes对象没有文件名信息,导致API无法判断格式。
  • 通过io.BytesIO包装bytes内容,并设置name属性为带.ogg扩展名的文件名,就能让API正确识别文件格式,完成转录。

如果之前尝试转MP3后仍报错,要确认转换后的文件是有效的MP3格式,而不是仅修改文件名——可以用ffmpeg等工具进行格式转换:

ffmpeg -i input.ogg output.mp3

内容的提问来源于stack exchange,提问作者Антон Кокорин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:57:09