|
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) |
|
|