tudeplom commited on
Commit
23590ba
·
verified ·
1 Parent(s): 04d9546

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -0
app.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import wave
3
+ import json
4
+ import numpy as np
5
+ from flask import Flask, request, jsonify
6
+ from flask_cors import CORS
7
+ from vosk import Model, KaldiRecognizer
8
+
9
+ # Tạo Flask app
10
+ app = Flask(__name__)
11
+ CORS(app)
12
+
13
+ # Tải model Vosk (dùng model nhỏ để tiết kiệm tài nguyên)
14
+ MODEL_PATH = "model" # Thư mục chứa model Vosk
15
+ if not os.path.exists(MODEL_PATH):
16
+ raise Exception("Model Vosk không tìm thấy!")
17
+
18
+ model = Model(MODEL_PATH)
19
+
20
+ @app.route("/")
21
+ def home():
22
+ return "Vosk STT API đang chạy!"
23
+
24
+ @app.route("/stt", methods=["POST"])
25
+ def stt():
26
+ if "audio" not in request.files:
27
+ return jsonify({"error": "Không tìm thấy file audio!"}), 400
28
+
29
+ audio_file = request.files["audio"]
30
+ file_path = "temp.wav"
31
+ audio_file.save(file_path)
32
+
33
+ # Xử lý file audio
34
+ wf = wave.open(file_path, "rb")
35
+ rec = KaldiRecognizer(model, wf.getframerate())
36
+
37
+ result_text = ""
38
+ while True:
39
+ data = wf.readframes(4000)
40
+ if len(data) == 0:
41
+ break
42
+ if rec.AcceptWaveform(data):
43
+ result_text += json.loads(rec.Result())["text"] + " "
44
+
45
+ # Trả về kết quả STT
46
+ return jsonify({"text": result_text.strip()})
47
+
48
+ if __name__ == "__main__":
49
+ app.run(host="0.0.0.0", port=7860, debug=True)