api-stt / app.py
tudeplom's picture
Update app.py
9346c67 verified
raw
history blame
1.32 kB
import os
import json
import numpy as np
from vosk import Model, KaldiRecognizer
from flask import Flask
from flask_socketio import SocketIO, emit
# Cấu hình Flask & WebSocket
app = Flask(__name__)
socketio = SocketIO(app, cors_allowed_origins="*")
# Kiểm tra và load model Vosk
MODEL_PATH = "model/vosk-model"
if not os.path.exists(MODEL_PATH):
raise Exception("❌ Model Vosk không tìm thấy!")
print("✅ Đang tải model Vosk...")
model = Model(MODEL_PATH)
# Tạo bộ nhận diện giọng nói
rec = KaldiRecognizer(model, 16000)
# Xử lý dữ liệu âm thanh nhận từ client
@socketio.on("audio_chunk")
def handle_audio(audio_data):
print(f"📩 Nhận dữ liệu âm thanh: {len(audio_data)} bytes")
# Chuyển đổi dữ liệu âm thanh thành numpy array
audio_np = np.frombuffer(audio_data, dtype=np.int16)
# Nhận diện giọng nói
if rec.AcceptWaveform(audio_np.tobytes()):
result = json.loads(rec.Result())
text = result.get("text", "")
print(f"📤 Kết quả nhận diện: {text}")
emit("stt_result", {"text": text}) # Gửi kết quả về client theo thời gian thực
# Chạy Flask server
if __name__ == "__main__":
socketio.run(app, host="0.0.0.0", port=5000, debug=True, allow_unsafe_werkzeug=True)