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