【问题标题】:Trying to send an audio file and text to flask api but getting 400 bad request error尝试将音频文件和文本发送到烧瓶 api 但收到 400 错误请求错误
【发布时间】:2021-08-27 00:57:37
【问题描述】:

所以,我正在尝试将音频文件和文本作为参数发送到烧瓶 api,当我通过邮递员发送它们时它工作正常,但是当我通过 python 代码发布它时出现错误的请求错误。 这是我的python代码:

import requests
import json
url= 'http://192.168.100.14:8000/v1/translate'
with open('/home/faizi/ai-chatbot-with-voice-driven-facial-animation/01_smalltalk_bot/game.wav', 'rb') as file:

 files = {'input_file': file}
 d = {"text":"hello, my name is faizan"}    
 req = requests.post(url, files=files, json=d)
 print(req.status_code)
 print(req.text)

这是我的烧瓶 api:

from flask import Flask
from flask_cors import cross_origin
from flask import Blueprint, request, Response
import json
from Voice_Cloning_Module import demo_cli
from flask import send_file

app = Flask("foo")

@app.route('/v1/translate', methods=['POST', 'OPTIONS'])
@cross_origin()
def translate_mbart():
  data = request.get_json()
  audio_file = request.files['input_file']
  audio_file.save("./bufferaudiofile/"+audio_file.filename)
  text = request.form['text']
  returnedfile = demo_cli.clone(text,"./bufferaudiofile/"+audio_file.filename)
  path_to_clonefile = returnedfile
  return send_file(
    path_to_clonefile,
    mimetype="audio/wav",
    as_attachment=True,
    attachment_filename="test.wav")






 if __name__ == '__main__':
   app.run(host='0.0.0.0', port=8000)

我收到 400 错误请求错误,我不明白可能是什么问题,它在邮递员中工作正常

【问题讨论】:

    标签: python flask post audio request


    【解决方案1】:

    我能够使用以下代码成功发送 wav 文件。我建议将其剥离并专注于接收文件,以确保没有其他问题导致问题。

    对于 API:

    from flask import Flask
    from flask import request
    import json
    
    app = Flask(__name__)
    
    @app.route('/main', methods=['POST', 'OPTIONS'])
    def main():
    
        file = request.files['file']
        print(file)
    
        return { "ok": True }
    
    if __name__ == '__main__':
        app.run(host = 'localhost', port = 8000)
    
    

    对于请求:

    import requests
    import json
    
    url = 'http://localhost:8000/main'
    
    with open('test_file.wav', 'rb') as wav:
    
        files = { "file": wav }
        d = { "body" : "Foo Bar" }
    
        req = requests.post(url, files=files, json=d)
    
        print(req.status_code)
        print(req.text)
    

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 2017-06-02
      • 2021-08-09
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多