File size: 1,889 Bytes
79616b0
 
 
 
 
6c2978b
79616b0
f96ce38
 
 
 
 
 
 
 
 
528b620
9d49358
 
 
79616b0
 
9d49358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from fastapi import FastAPI, File, UploadFile
import librosa
import numpy as np
import shutil
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess

from funasr.auto.auto_model import AutoModel
import os

model_dir = "FunAudioLLM/SenseVoiceSmall"
try:
    model = AutoModel(model=model_dir, vad_model="fsmn-vad", device="cpu", hub="hf")
    print("✅ Model loaded successfully!")
except Exception as e:
    print("❌ Model loading error:", str(e))




app = FastAPI()

# # Load mô hình SenseVoiceSmall
# 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"

# # API nhận file âm thanh từ Flutter
# @app.post("/detect-noise/")
# async def detect_noise_api(file: UploadFile = 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}