如何解决如何在快速API中上传音频文件以进行预测
当我在fastAPI中上传音频文件时会遇到内部错误
您好,我是FastAPI的新手,我必须为深度学习音频分类模型构建和API。
我试图这样做:
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
y,sr = librosa.load(file.filename)
print(file.filename)
S = librosa.feature.melspectrogram(
y,sr=sr,n_fft=2048,hop_length=512,n_mels=128)
mfccs = librosa.feature.mfcc(S=librosa.power_to_db(S),n_mfcc=40)
# mfccs = librosa.feature.mfcc(y=y,n_mfcc=40)
return mfccs
#return {"filename": file.filename}
if __name__ == "__main__":
# load model
model = load_model("trained_heartbeat_classifier.h5")
classify_file = sys.argv[1]
x_test = []
x_test.append(create_upload_file(classify_file,0.5))
x_test = np.asarray(x_test)
x_test = x_test.reshape(x_test.shape[0],x_test.shape[1],x_test.shape[2],1)
pred = model.predict(x_test,verbose=1)
# print(pred)
pred_class = model.predict_classes(x_test)
if pred_class[0]:
print("\nNormal heartbeat")
print("confidence:",pred[0][1])
else:
print("\nAbnormal heartbeat")
print("confidence:",pred[0][0])
但是上传音频文件时出现错误: Internal Server Error
在终端中,它显示找不到文件。
那么我们是否必须将音频文件保存在任何临时文件夹中?
解决方法
UploadFile具有以下外观:
-
文件名:具有上传的原始文件名的str
-
文件:一个SpooledTemporaryFile(一个类似文件的对象)。这是实际的Python文件,您可以将其直接传递给需要“类文件”对象的其他函数或库。
因此,如果您调用file.file,您将获得文件内容。在路由器功能内进行预测和预处理活动,因为路由器功能不能称为传统功能。该功能在路由器装饰器下实例化(请参见源代码)。
注意:如果您不想等到预测到来,则可以使用后台任务或工作队列,工作队列中的确认(将Celery与redis / rabbitmq配合使用)将通知您任务已完成。如果您可以使用多个工作程序,则工作队列还会并发任务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。