tempo-cnn / app.py
noblebarkrr's picture
Update app.py
adf5b91 verified
import gradio as gr
from tempocnn.classifier import TempoClassifier
from tempocnn.feature import read_features
# Инициализируем модель один раз
model_name = 'cnn'
classifier = TempoClassifier(model_name)
def estimate_tempo(audio_file):
"""Функция для оценки темпа одного аудиофайла."""
if not audio_file:
return "Ошибка: Файл не загружен!"
features = read_features(audio_file)
tempo = classifier.estimate_tempo(features, interpolate=True)
return f"Estimated global tempo: {tempo} BPM"
def compare_tempos(audio_file1, audio_file2):
"""Функция для оценки темпов двух файлов и вычисления их соотношения."""
if not audio_file1 or not audio_file2:
return "Ошибка: Загрузите оба файла!"
features1 = read_features(audio_file1)
features2 = read_features(audio_file2)
tempo1 = classifier.estimate_tempo(features1, interpolate=True)
tempo2 = classifier.estimate_tempo(features2, interpolate=True)
ratio1 = tempo1 / tempo2
ratio2 = tempo2 / tempo1
return f"Tempo 1: {tempo1} BPM\nTempo 2: {tempo2} BPM\nRatio 1/2: {ratio1}\nRatio 2/1: {ratio2}"
# Создаем вкладки
tab1 = gr.Interface(
fn=estimate_tempo,
inputs=gr.Audio(type="filepath"),
outputs="text",
title="Single Audio Tempo Estimation",
description="Upload an audio file to estimate its tempo."
)
tab2 = gr.Interface(
fn=compare_tempos,
inputs=[gr.Audio(type="filepath"), gr.Audio(type="filepath")],
outputs="text",
title="Two Audio Files Tempo Comparison",
description="Upload two audio files to compare their tempos and calculate ratios."
)
# Запускаем Gradio с двумя вкладками
gr.TabbedInterface([tab1, tab2], ["Single File", "Compare Two Files"]).launch()