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

如何解决AttributeError: 'Audio'对象无'transcribe'属性的问题?

解决SpeechRecognition中recognize_whisper_api与OpenAI v1.x版本兼容问题

问题描述

开发语音识别机器人时,调用AudioInterface.listen()方法触发以下错误:

AttributeError: 'Audio' object has no attribute 'transcribe'

使用的OpenAI版本为1.14.1,移除elevenlabs相关代码后错误仍存在。

原因分析

speech_recognition库的recognize_whisper_api方法沿用了旧版OpenAI API调用逻辑(client.audio.transcribe),但OpenAI v1.x版本已调整API结构,Audio对象不再包含transcribe方法,替代接口为audio.transcriptions.create。

解决方案

方案一:降级OpenAI到兼容版本

安装适配旧API的OpenAI版本:

pip install openai==0.28.1

方案二:适配OpenAI v1.x API修改代码

放弃使用speech_recognition提供的recognize_whisper_api,直接基于OpenAI新API实现语音识别逻辑,修改interface.py中的listen方法:

import speech_recognition as sr
import os
from elevenlabs import generate, play, set_api_key
from openai import OpenAI

set_api_key(os.environ['ELEVEN_API_KEY'])
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

class AudioInterface:
    def listen(self)->str:
        recognizer=sr.Recognizer()
        with sr.Microphone() as source:
            print("say something")
            audio=recognizer.listen(source)
        
        # 将音频转为wav格式临时文件
        with open("temp_recording.wav", "wb") as f:
            f.write(audio.get_wav_data())
        
        # 调用OpenAI v1.x转录API
        with open("temp_recording.wav", "rb") as audio_file:
            transcript = client.audio.transcriptions.create(
                model="whisper-1",
                file=audio_file
            )
        return transcript.text
            
    def speak(self, text):
        audio=generate(
            text=text,
            voice='Bella',
            model='eleven_monolingual_v1'
        )
        play(audio)

方案三:修改speech_recognition库源码

找到报错的whisper.py文件(路径示例:venv/lib/python3.12/site-packages/speech_recognition/recognizers/whisper.py),将第43行的旧API调用:

transcript = client.audio.transcribe(model, wav_data, api_key=api_key)

替换为新API调用:

from io import BytesIO
wav_file = BytesIO(wav_data)
wav_file.name = "temp.wav"
transcript = client.audio.transcriptions.create(model=model, file=wav_file, api_key=api_key)

内容的提问来源于stack exchange,提问作者Sevval Kahraman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:07:54