Spaces:
Running
Running
File size: 2,629 Bytes
d0c2b7c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import requests
from PIL import Image
from io import BytesIO
from image_processor import ImageProcessor
from evaluation_processor import EvaluationProcessor
# Initialize image and evaluation processors
api_key = 'ddc85b14-bd83-4757-9bc4-8a11194da536'
def process_json(url):
#url = "https://test.aitanzou.com/reports/9/c5993371-26b1-4536-af4c-847e43d4c293/result/analysis_report.json"
response = requests.get(url)
bar_regions = response.json()["bar_regions"]
result = []
# 遍历列表
cnt = 1
for item in bar_regions:
# 提取每个元素的字段
data = {
"小节": cnt,
"des_note": item["des_note"],
"des_speed": item["des_speed"],
"des_stable": item["des_stable"],
"des_tempo": item["des_tempo"]
}
# 将提取的数据追加到结果列表中
result.append(data)
cnt = cnt+1
#print(result)
return result
def process_images(images):
image_bytes_list = []
for image in images:
img = Image.open(image.name)
image_bytes = BytesIO()
img.save(image_bytes, format="PNG")
image_bytes.seek(0)
image_bytes_list.append(image_bytes.getvalue())
try:
image_processor = ImageProcessor(api_key)
processed_image_result = image_processor.process_images(image_bytes_list)
return fr"\n乐谱的内容如下: {processed_image_result}"
except Exception as e:
return f"Error processing image: {e}"
def process_audio_video(file, is_video):
path = file.name
print(path)
try:
evaluation_processor = EvaluationProcessor(api_key)
result, title = evaluation_processor.process_evaluation(path, is_video)
print(result)
all_result = process_json(result["analysis_report_path"])
prompt = (
fr"如果有曲名《{title}》,请你根据这首歌的名字和作者,"
fr"先从以下几个总的方面评价一下这首曲子的演奏结果。\n"
fr"1. 综合得分: {result['evaAll']}\n"
fr"2. 完整性: {result['evaCompletion']}\n"
fr"3. 按键: {result['evaNote']}\n"
fr"4. 稳定性: {result['evaStability']}\n"
fr"5. 节奏: {result['evaTempoSync']}\n"
fr"这首曲子共{len(all_result)}小节,请注意如果用户指令问更详细的结果则结合小节进行评价:\n"
fr"{' '.join(map(str, all_result))}"
)
return prompt, result.get('result_path', '')
except Exception as e:
return f"Error processing audio: {e}", None
|