File size: 3,547 Bytes
eee6482
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cc84005
 
ead532d
 
 
 
 
cc84005
 
 
 
eee6482
cc84005
eee6482
 
cc84005
 
0dcf377
e544543
 
 
eee6482
 
 
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# from fastapi import FastAPI, File, UploadFile
# import librosa
# import numpy as np
# import shutil
# import uvicorn
# import os
# from funasr import AutoModel
# from starlette.middleware import Middleware
# from starlette.middleware.cors import CORSMiddleware

# import logging

# logging.basicConfig(level=logging.INFO)
# logger = logging.getLogger(__name__)

# app = FastAPI(
#     middleware=[
#         Middleware(
#             CORSMiddleware,
#             allow_origins=["*"],  # Cho phép tất cả các origin
#             allow_credentials=True,
#             allow_methods=["*"],  # Cho phép tất cả các phương thức
#             allow_headers=["*"],  # Cho phép tất cả các header
#         )
#     ]
# )
# # Tạo thư mục temp nếu chưa có
# if not os.path.exists("temp"):
#     os.makedirs("temp")

# # Load mô hình SenseVoiceSmall từ Hugging Face
# model_dir = "FunAudioLLM/SenseVoiceSmall"
# model = AutoModel(
#     model=model_dir,
#     vad_model="fsmn-vad",
#     vad_kwargs={"max_single_segment_time": 30000},
#     device="cuda:0",
#     hub="hf",
# )

# # Hàm tính RMS energy
# def calculate_rms_energy(audio_path):
#     y, sr = librosa.load(audio_path)
#     rms = librosa.feature.rms(y=y)[0]
#     return np.mean(rms)

# # Hàm phát hiện tiếng ồn
# def detect_noise(audio_path):
#     rms_energy = calculate_rms_energy(audio_path)
#     res = model.generate(input=audio_path, language="auto", audio_event_detection=True)
#     audio_events = res[0].get("audio_event_detection", {})

#     if rms_energy > 0.02:
#         return "ồn ào"
#     elif rms_energy > 0.01:
#         for event_label, event_score in audio_events.items():
#             if event_score > 0.7 and event_label in ["laughter", "applause", "crying", "coughing"]:
#                 return f"ồn ào ({event_label})"
#     return "yên tĩnh"

# @app.get("/")
# def read_root():
#     return {"message": "Hello, World!"}

# print(app.routes)

# # API nhận file âm thanh từ Flutter
# @app.post("/detect-noise/")
# async def detect_noise_api(file: UploadFile = File(...)):
#     try:
#         logger.info("Tên file: %s", file.filename)
#         logger.info("Loại file: %s", file.content_type)
#         file_size = len(await file.read())
#         logger.info("Kích thước file: %s bytes", file_size)
#         await file.seek(0)  # Reset lại vị trí đọc file

#         file_path = f"temp/{file.filename}"
#         with open(file_path, "wb") as buffer:
#             shutil.copyfileobj(file.file, buffer)

#         result = detect_noise(file_path)
#         return {"noise_level": result}
#     except Exception as e:
#         logger.exception("Lỗi trong API: %s", e)
#         return {"error": str(e)}

# # Chạy FastAPI trên Hugging Face Spaces
# if __name__ == "__main__":
#     uvicorn.run(app, host="0.0.0.0", port=7860)


from fastapi import FastAPI
from fastapi import File, UploadFile
from starlette.middleware import Middleware
from starlette.middleware.cors import CORSMiddleware
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

app = FastAPI(
    middleware=[
        Middleware(
            CORSMiddleware,
            allow_origins=["*"],
            allow_credentials=True,
            allow_methods=["*"],
            allow_headers=["*"],
        )
    ]
)

@app.post("/detect-noise/")
async def detect_noise_api(file: UploadFile = File(...)):
    logger.info("Đã nhận được yêu cầu!")
    return {"message": "OK"}