Whisper模型报错TypeError: expected np.ndarray (got FileStorage)求解决方案
解决Whisper报错:TypeError: expected np.ndarray (got FileStorage)
问题根源
你传给model.transcribe()的getfile是Flask的FileStorage对象,而Whisper的转录方法不支持直接处理这个类型——它只接受文件路径字符串、音频字节数据、或numpy数组作为输入。
可行解决方案
方案1:把FileStorage存成临时文件,传入路径
from flask import request import whisper import tempfile model = whisper.load_model("base.en") # 替换成你前端表单对应的文件字段名 getfile = request.files['audio_file'] # 创建临时文件保存上传的音频 with tempfile.NamedTemporaryFile(delete=False, suffix='.wav') as temp_f: getfile.save(temp_f.name) # 用临时文件路径调用转录方法 text_audio = model.transcribe(temp_f.name, language='en', fp16=False) result = text_audio["text"]
方案2:直接读取FileStorage的字节数据传入
from flask import request import whisper model = whisper.load_model("base.en") getfile = request.files['audio_file'] # 读取文件的字节内容 audio_data = getfile.read() # 传入字节数据完成转录 text_audio = model.transcribe(audio_data, language='en', fp16=False) result = text_audio["text"]
注意点
- 要确保后端
request.files[]里的字段名和前端表单的文件输入框name属性完全一致,比如前端是<input type="file" name="user_audio">,后端就得写request.files['user_audio']。 - Whisper支持mp3、wav、m4a等主流音频格式,无需额外转码,除非你上传的是非常见格式。
内容的提问来源于stack exchange,提问作者Zubair Ali
相关产品推荐
相关产品推荐

