Как обработать локальный аудиофайл в среде Python Flask - PullRequest
0 голосов
/ 23 марта 2020

У меня нет опыта в веб-разработке, но я пытаюсь превратить некоторые 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')

Любая помощь приветствуется , Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...