Seicas commited on
Commit
c22ea19
·
verified ·
1 Parent(s): 65827b9

Delete routes.py

Browse files
Files changed (1) hide show
  1. routes.py +0 -86
routes.py DELETED
@@ -1,86 +0,0 @@
1
- from fastapi import APIRouter, UploadFile, File, Depends, HTTPException, Query
2
- from fastapi.responses import JSONResponse
3
- from preprocessing import clean_audio
4
- from asr import transcribe_file, MedicalASR
5
- from diarization import diarize_segments
6
- from privacy import MedicalPrivacyProcessor
7
- from config import settings
8
- from typing import Optional
9
- import tempfile, os, uuid
10
- from fastapi.concurrency import run_in_threadpool
11
-
12
- router = APIRouter()
13
-
14
- # Gizlilik işlemcisi
15
- privacy_processor = MedicalPrivacyProcessor()
16
-
17
- def get_asr_model():
18
- """ASR modelini oluşturur ve döndürür"""
19
- config = {
20
- "language": "tr",
21
- "model": settings.ASR_MODEL,
22
- "domain": "medical"
23
- }
24
- return MedicalASR(config)
25
-
26
- @router.post("/transcribe")
27
- async def transcribe_audio(
28
- file: UploadFile = File(...),
29
- diarize: bool = True,
30
- enhance_audio: bool = True,
31
- anonymize: Optional[bool] = Query(None, description="Kişisel verileri anonimleştir"),
32
- asr_model: MedicalASR = Depends(get_asr_model)
33
- ):
34
- """Ses dosyasını transkribe eder"""
35
- try:
36
- # Geçici dosya oluştur
37
- with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_file:
38
- temp_file.write(await file.read())
39
- temp_file_path = temp_file.name
40
-
41
- # CPU/GPU yoğun işlemi thread pool'da çalıştır
42
- result = await run_in_threadpool(
43
- asr_model.transcribe,
44
- temp_file_path,
45
- speaker_diarization=diarize,
46
- enhance_audio=enhance_audio
47
- )
48
-
49
- # Geçici dosyayı temizle
50
- os.unlink(temp_file_path)
51
-
52
- # Kişisel veri anonimleştirme
53
- # Eğer açıkça belirtilmediyse uygulama konfigürasyonuna göre davran
54
- should_anonymize = anonymize if anonymize is not None else app.state.asr_config.get("anonymize_data", True)
55
-
56
- identified_data = {}
57
- if should_anonymize:
58
- # Ana metni anonimleştir
59
- anonymized_text, main_data = privacy_processor.anonymize_text(result["text"])
60
- result["text"] = anonymized_text
61
- identified_data.update(main_data)
62
-
63
- # Diyarizasyon segmentlerini anonimleştir
64
- if "diarization" in result:
65
- for segment in result["diarization"]:
66
- if segment["text"]:
67
- anonymized_segment, segment_data = privacy_processor.anonymize_text(segment["text"])
68
- segment["text"] = anonymized_segment
69
- # Her segment için tespit edilen verileri güncelle
70
- for key, values in segment_data.items():
71
- identified_data.setdefault(key, []).extend(values)
72
-
73
- # Tespit edilen verileri güvenli şekilde sakla
74
- # NOT: Gerçek uygulamada bu verileri şifreli bir veritabanında saklayın
75
- session_id = str(uuid.uuid4())
76
- # Burada verileri güvenli bir şekilde saklama kodunuz olacak
77
-
78
- # Yanıtta tespit edilen veri tipleri hakkında bilgi ver
79
- result["anonymized"] = True
80
- result["identified_data_types"] = {k: len(v) for k, v in identified_data.items() if v}
81
- result["session_id"] = session_id
82
-
83
- return JSONResponse(content=result)
84
-
85
- except Exception as e:
86
- raise HTTPException(status_code=500, detail=f"Transkripsiyon hatası: {str(e)}")