因此,我尝试将音频文件和文本作为参数发送到flask api,当我通过postman发送它们时,它工作得很好,但当我通过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)下面是我的flask 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个错误的请求,我不明白是什么问题,它在邮递员中工作正常
发布于 2021-08-27 02:22:39
我使用下面的代码成功地发送了一个wav文件。我建议将其剥离到最基本的部分,并专注于接收文件,以确保没有其他因素导致问题。
接口:
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)https://stackoverflow.com/questions/68946864
复制相似问题