checkSound / app.py
tuan243's picture
Update app.py
eee6482 verified
raw
history blame
3.55 kB
# 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"}