| from flask import Flask, request |
| import json |
| import base64 |
| from faster_whisper import WhisperModel |
| import tempfile |
| import os |
|
|
| def base64_to_wav(base64_data, save_path): |
| wav_data = base64.b64decode(base64_data) |
| with open(save_path, 'wb') as file: |
| file.write(wav_data) |
| |
| app = Flask(__name__) |
|
|
| GPU = True |
| wspr = WhisperModel("small", device="cuda" if GPU else "cpu", compute_type="int8") |
|
|
| @app.route('/api', methods=['GET' ,'POST']) |
| def STT(): |
| if request.method == 'POST': |
| result = {} |
| audio_data = request.data |
| |
| |
| temp_dir = tempfile.gettempdir() |
| temp_file = tempfile.NamedTemporaryFile(suffix='.mp3', dir=temp_dir, delete=False) |
| save_path = temp_file.name |
| |
| |
| |
| base64_to_wav(audio_data, save_path) |
|
|
| segments, info = wspr.transcribe(save_path, beam_size=5, language="fr") |
| texts = [el.text.strip() for el in segments] |
| transcription = texts[0] |
| query = transcription |
| result["transcription"] = query |
| if os.path.exists(save_path): |
| os.remove(save_path) |
| return result |
| elif request.method == 'GET': |
| |
| return "API is working correctly!" |
|
|
| if __name__ == '__main__': |
| app.run(host='0.0.0.0', port=5566, debug=True) |
|
|