tudeplom commited on
Commit
6432060
·
verified ·
1 Parent(s): 9225a67

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -28
app.py CHANGED
@@ -1,46 +1,38 @@
1
  import os
2
- import wave
3
  import json
4
  import asyncio
5
  import websockets
6
- import uuid
7
  from vosk import Model, KaldiRecognizer
8
 
9
- # Thư mục chứa model
10
  MODEL_PATH = "model/vosk-model"
11
-
12
- # Kiểm tra model đã tải chưa
13
  if not os.path.exists(MODEL_PATH):
14
- raise Exception(f"\u274C Model Vosk không tìm thấy tại {MODEL_PATH}! Kiểm tra lại.")
15
 
16
- # Load model
17
- print("\u2705 Đang tải model Vosk...")
18
  model = Model(MODEL_PATH)
19
 
20
- async def recognize_audio(websocket, path):
21
- print("🔵 Kết nối WebSocket mới...")
 
 
 
22
  rec = KaldiRecognizer(model, 16000)
23
  result_text = ""
24
-
25
  try:
26
- async for message in websocket:
27
- if isinstance(message, bytes): # Kiểm tra nếu dữ liệu là bytes
28
- if rec.AcceptWaveform(message):
29
- result = json.loads(rec.Result())
30
- text = result.get("text", "")
31
- result_text += text + " "
32
- await websocket.send(json.dumps({"text": text}))
33
- else:
34
- await websocket.send(json.dumps({"error": "Dữ liệu không hợp lệ"}))
35
- except websockets.exceptions.ConnectionClosed:
36
- print("🔴 Kết nối WebSocket đã đóng")
37
  finally:
38
  print(f"✅ Văn bản cuối cùng: {result_text.strip()}")
39
 
40
- async def main():
41
- async with websockets.serve(recognize_audio, "0.0.0.0", 7860):
42
- print("🚀 WebSocket STT server đang chạy trên ws://0.0.0.0:7860")
43
- await asyncio.Future() # Giữ server chạy vô thời hạn
44
-
45
  if __name__ == "__main__":
46
- asyncio.run(main())
 
 
1
  import os
 
2
  import json
3
  import asyncio
4
  import websockets
5
+ from fastapi import FastAPI, WebSocket
6
  from vosk import Model, KaldiRecognizer
7
 
 
8
  MODEL_PATH = "model/vosk-model"
 
 
9
  if not os.path.exists(MODEL_PATH):
10
+ raise Exception(" Model Vosk không tìm thấy!")
11
 
12
+ print("✅ Đang tải model Vosk...")
 
13
  model = Model(MODEL_PATH)
14
 
15
+ app = FastAPI()
16
+
17
+ @app.websocket("/ws")
18
+ async def websocket_endpoint(websocket: WebSocket):
19
+ await websocket.accept()
20
  rec = KaldiRecognizer(model, 16000)
21
  result_text = ""
22
+
23
  try:
24
+ while True:
25
+ message = await websocket.receive_bytes()
26
+ if rec.AcceptWaveform(message):
27
+ result = json.loads(rec.Result())
28
+ text = result.get("text", "")
29
+ result_text += text + " "
30
+ await websocket.send_json({"text": text})
31
+ except Exception:
32
+ print("🔴 Kết nối WebSocket đóng")
 
 
33
  finally:
34
  print(f"✅ Văn bản cuối cùng: {result_text.strip()}")
35
 
 
 
 
 
 
36
  if __name__ == "__main__":
37
+ import uvicorn
38
+ uvicorn.run(app, host="0.0.0.0", port=7860)