[파이썬] Flask에서의 오디오 처리

Flask는 파이썬 웹 프레임워크로서, 오디오 처리와 관련된 기능을 손쉽게 구현할 수 있습니다. 오디오 처리는 음악 스트리밍, 음악 재생, 음성 인식 등 다양한 응용 분야에서 사용될 수 있습니다. 이번 글에서는 Flask를 사용하여 간단한 오디오 처리 애플리케이션을 만드는 방법을 알아보도록 하겠습니다.

1. Flask 애플리케이션 설정

먼저, Flask 애플리케이션을 설정해야 합니다. Flask 애플리케이션을 생성하고 필요한 의존성 패키지를 설치하는 과정을 수행해야 합니다. 아래는 Flask 애플리케이션을 설정하는 예제 코드입니다.

from flask import Flask

app = Flask(__name__)

2. 오디오 파일 업로드

오디오 파일을 업로드하기 위해 Flask에서 제공하는 FileField를 사용할 수 있습니다. FileField는 파일을 업로드하기 위한 필드를 생성하는 Flask-WTF의 확장 기능입니다. 아래는 오디오 파일을 업로드하는 예제 코드입니다.

from flask_wtf import FlaskForm
from wtforms import FileField
from wtforms.validators import DataRequired

class AudioForm(FlaskForm):
    audio_file = FileField('Audio File', validators=[DataRequired()])

3. 오디오 처리

오디오 파일을 업로드하고 나면, 해당 파일을 처리해야 합니다. 여기서는 간단하게 업로드된 오디오 파일의 길이를 계산하는 예제를 보여드리겠습니다. 다양한 오디오 처리 기능을 적용하려면 필요한 라이브러리를 설치하고 해당 기능을 구현해야 합니다.

import os
from pydub import AudioSegment

def calculate_audio_length(file_path):
    audio = AudioSegment.from_file(file_path, format=os.path.splitext(file_path)[1][1:])
    duration = len(audio) / 1000  # 밀리초 단위에서 초 단위로 변환
    return duration

4. 라우팅

Flask 애플리케이션의 라우팅을 정의하여 업로드된 오디오 파일을 처리하고 결과를 반환해야 합니다. 아래는 오디오 파일을 업로드하고 길이를 계산하는 라우팅 예제 코드입니다.

from flask import request, render_template
from werkzeug.utils import secure_filename

@app.route('/upload', methods=['GET', 'POST'])
def upload_audio():
    form = AudioForm()
    
    if request.method == 'POST' and form.validate_on_submit():
        audio_file = form.audio_file.data
        filename = secure_filename(audio_file.filename)
        file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        audio_file.save(file_path)
        
        audio_length = calculate_audio_length(file_path)
        
        return render_template('result.html', audio_length=audio_length)
    
    return render_template('upload.html', form=form)

5. 템플릿

오디오 업로드 폼과 처리 결과를 보여주기 위한 템플릿을 작성해야 합니다. 아래는 오디오 업로드 폼과 처리 결과를 보여주는 템플릿 예제 코드입니다.


<!-- upload.html -->
<form method="POST" action="/upload" enctype="multipart/form-data">
  {{ form.hidden_tag() }}
  <input type="file" name="audio_file">
  <input type="submit" value="Upload">
</form>

<!-- result.html -->
<p>Audio length: {{ audio_length }} seconds</p>

마무리

위의 예제 코드를 참고하여 간단한 Flask 기반 오디오 처리 애플리케이션을 만들 수 있습니다. Flask를 이용하면 강력하고 유연한 웹 애플리케이션을 구현할 수 있으며, 오디오 처리와 같은 기능도 쉽게 추가할 수 있습니다. Flask를 통해 오디오 처리 애플리케이션을 구현해보세요!