Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

485
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda