Spaces:
Running
Running
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}
|