OpenAI Whisper调用transcriptions.create()返回None的问题求助
可能的原因及排查方案
1. 网络/代理配置问题
若运行环境需要代理访问OpenAI API但未正确配置客户端代理,请求可能静默失败并返回None。可在初始化客户端时添加代理配置:
from openai import OpenAI client = OpenAI( api_key="MYAPIKEY", base_url="https://api.openai.com/v1", proxy="http://your-proxy-address:port" # 替换为实际代理地址 )
同时可通过curl直接调用API验证网络连通性:
curl https://api.openai.com/v1/audio/transcriptions \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: multipart/form-data" \ -F file="@speech.mp3" \ -F model="whisper-1" \ -F response_format="verbose_json"
若curl能正常返回结果,说明问题出在Python客户端配置上。
2. OpenAI库版本兼容性
部分版本可能存在已知bug,建议安装最新稳定版:
pip install --upgrade openai
需确保版本在1.0.0以上(v1.x版本才支持client.audio.transcriptions.create语法),可通过以下命令查看当前版本:
import openai print(openai.__version__)
3. 文件读取与资源释放问题
当前代码未使用上下文管理器处理文件,可能导致文件读取不完整或资源未正确释放。修改为以下写法:
from openai import OpenAI client = OpenAI(api_key="MYAPIKEY") with open("speech.mp3", "rb") as audio_file: transcript = client.audio.transcriptions.create( file=audio_file, model="whisper-1", response_format="verbose_json", timestamp_granularities=["segment"] ) print(transcript)
该写法能确保文件被正确读取和关闭,避免因文件流问题导致API无法处理请求。
4. API密钥权限或额度问题
确认密钥拥有Whisper API访问权限,且账户有足够额度:
- 登录OpenAI后台检查API密钥的权限范围(是否包含音频转录)
- 查看账户使用额度是否已耗尽
5. 参数兼容性问题
timestamp_granularities参数部分旧版本库可能存在解析问题,可暂时移除该参数测试:
transcript = client.audio.transcriptions.create( file=audio_file, model="whisper-1", response_format="verbose_json" )
若移除后能正常返回结果,说明该参数与当前库版本不兼容,需升级到支持该参数的版本。
内容的提问来源于stack exchange,提问作者SHDDSFFDSDSAF
相关产品推荐
相关产品推荐

