Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

484
Views
Cómo cargar un archivo de audio en una API rápida para la predicción

Se enfrenta un error interno cuando subo un archivo de audio en fastAPI

Hola, soy nuevo en FastAPI. Tengo que compilar una API para mi modelo de clasificación de audio de aprendizaje profundo.

He intentado hacer esto:

 @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, sr=sr, 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])

pero me sale el error cuando subo un archivo de audio: Error interno del servidor

y en la terminal, muestra el archivo no encontrado.

Entonces, ¿tenemos que guardar un archivo de audio en alguna carpeta temporal?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

UploadFile tiene los siguientes atributos:

  • filename: Una cadena con el nombre del archivo original que se cargó

  • archivo: un SpooledTemporaryFile (un objeto similar a un archivo). Este es el archivo Python real que puede pasar directamente a otras funciones o bibliotecas que esperan un objeto "similar a un archivo".

Entonces, si llama a file.file, obtendrá el contenido del archivo. Realice sus actividades de predicción y preprocesamiento dentro de la función del enrutador porque la función del enrutador no se puede llamar funciones tradicionales. La función se instancia en el decorador del enrutador (consulte el código fuente).

NB: Puede usar la tarea en segundo plano o la cola de trabajo si no desea esperar hasta que llegue la predicción, el reconocimiento de la cola de trabajo (Usar apio con redis/rabbitmq) le notificará sobre la finalización de la tarea. La cola de trabajo también empareja la tarea si puede usar varios trabajadores.

over 4 years ago · Santiago Trujillo Report

0

Puede ser que este enfoque no funcione para cada formato (dicen que no funciona con mp3, aunque no lo he comprobado) , pero para mi tarea con .wav se me ocurrió esta solución, envolviendo el archivo en BytesIO y trabajó:

 def deal_with_sound_file(sound: bytes = File(...)): ... = librosa.load(io.BytesIO(sound)) ...
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!