У меня нет опыта в веб-разработке, но я пытаюсь превратить некоторые python в веб-приложение, используя Flask. Основная идея c заключается в том, что мне нужно принимать входящие аудиофайлы, обрабатывать их и сообщать о различных результатах. Я могу принять пользовательский ввод для аудиофайлов и сохранить их в локальной папке в каталоге моего проекта. Я хочу получить доступ к файлу в этой папке после его загрузки и вызвать функцию python для файла, который выполняет некоторую обработку звука. Это прекрасно работает, когда я не вызываю свой сценарий в среде Flask. Когда я пытаюсь вызвать свой сценарий в среде flask, я получаю длинную трассировку, которая приводит к ошибке JSONdecode.
Мой вопрос: Учитывая, что я могу сохранить загруженный аудиофайл локально, как я могу вызвать свой сценарий для этого локального файла в приложении Flask?
Вот сценарий обработки, который я пытаюсь выполнить, который берет локальный аудиофайл, удаляет тишину и экспортирует обработанный звук в другой локальный каталог. Я использую pydub и pyAudioAnalysis для обработки.
def remove_silence(audio_file):
audio_path = "./upload_data/" + audio_file
name = audio_file.split(".")[0]
filetype = audio_file.split(".")[-1]
audio = AudioSegment.from_file(audio_path, format=filetype)
[fs, x] = audioBasicIO.readAudioFile(audio_path)
segments = aS.silenceRemoval(x, fs, .020, .020, smoothWindow=1.0, weight=.3, plot=False)
speech_times = list(segments)
for speech in speech_times:
for i in range(2):
speech[i] *= 1000
speech_clips = [audio[speech_times[i][0]:speech_times[i][1]] for i in range(len(speech_times))]
combined = AudioSegment.empty()
for clip in speech_clips:
combined += clip
combined.export("./processed_audio/processed_" + name + ".mp3", format="mp3")
А вот код, который пытается вызвать функцию в приложении flask:
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
# if user does not select file, browser also
# submit an empty part without filename
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
# now that the file has been saved I need to process it
remove_silence(file.filename)
return render_template('home.html')
Любая помощь приветствуется , Спасибо!