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

使用Whisper AI转录音频时遭遇TypeError错误求助

Whisper AI转录音频TypeError错误解决

问题背景

已配置Python 3.8.16、PyTorch 1.12.1并安装最新版ffmpeg,在Jupyter Notebook运行Whisper转录代码时触发TypeError。

版本验证结果:

3.8.16 | packaged by conda-forge | (default, Feb  1 2023, 15:53:35) [MSC v.1929 64 bit (AMD64)]
1.12.1

运行代码:

import openai
import whisper

openai.api_key = "my open ai key"

audio_file= open(r"C:\Users\Chris\Python scripts\test_audio.mp3", "rb")

model = whisper.load_model("base")
result = model.transcribe(audio_file)

print(result)

报错信息:

TypeError                                 Traceback (most recent call last)
Cell In[28], line 9
      6 audio_file= open(r"C:\Users\Chris\Python scripts\test_audio.mp3", "rb")
      8 model = whisper.load_model("base")
----> 9 result = model.transcribe(audio_file)
     11 print(result)

File ~\anaconda3\lib\site-packages\whisper\transcribe.py:121, in transcribe(model, audio, verbose, temperature, compression_ratio_threshold, logprob_threshold, no_speech_threshold, condition_on_previous_text, initial_prompt, word_timestamps, prepend_punctuations, append_punctuations, **decode_options)
    118     decode_options["fp16"] = False
    120 # Pad 30-seconds of silence to the input audio, for slicing
--> 121 mel = log_mel_spectrogram(audio, padding=N_SAMPLES)
    122 content_frames = mel.shape[-1] - N_FRAMES
    124 if decode_options.get("language", None) is None:

File ~\anaconda3\lib\site-packages\whisper\audio.py:131, in log_mel_spectrogram(audio, n_mels, padding, device)
    129     if isinstance(audio, str):
    130         audio = load_audio(audio)
--> 131     audio = torch.from_numpy(audio)
    133 if device is not None:
    134     audio = audio.to(device)

TypeError: expected np.ndarray (got _io.BufferedReader)

解决方法

错误核心原因:model.transcribe()不接受文件对象作为参数,它仅支持音频文件路径字符串或加载完成的numpy数组作为输入。

方法1:直接传入文件路径(推荐)

删除打开文件的代码,直接将音频路径字符串传入transcribe,同时注意本地Whisper转录无需OpenAI API密钥,可移除相关代码:

import whisper

model = whisper.load_model("base")
# 直接传入音频文件路径
result = model.transcribe(r"C:\Users\Chris\Python scripts\test_audio.mp3")

# 直接输出转录文本更直观
print(result["text"])

方法2:手动加载音频为numpy数组

若需先处理音频数据,可使用Whisper自带的load_audio函数将文件加载为numpy数组后传入:

import whisper
from whisper.audio import load_audio

# 加载音频为numpy数组
audio_data = load_audio(r"C:\Users\Chris\Python scripts\test_audio.mp3")

model = whisper.load_model("base")
result = model.transcribe(audio_data)

print(result["text"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:35:02