File size: 1,779 Bytes
69067ae
 
0197ed3
adb5e2a
7467739
a3e60d6
0197ed3
69067ae
 
7467739
7494646
7467739
7494646
7467739
 
69067ae
7467739
 
 
 
 
 
 
 
 
adb5e2a
7467739
 
685e8d2
7467739
 
 
a3e60d6
69067ae
7467739
69067ae
 
7467739
 
69067ae
7467739
8ab530a
69067ae
7467739
69067ae
8ab530a
7494646
7467739
 
 
 
7494646
69067ae
0197ed3
69067ae
7467739
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from flask import Flask, render_template, request, jsonify
import torch
from transformers import pipeline
from gtts import gTTS
import os
import re

app = Flask(__name__)

# Load Whisper Model for English Transcription
device = "cuda" if torch.cuda.is_available() else "cpu"
asr_model = pipeline("automatic-speech-recognition", model="openai/whisper-base", device=0 if device == "cuda" else -1)

# Function to generate audio prompts
def generate_audio_prompt(text, filename):
    tts = gTTS(text=text, lang="en")
    tts.save(os.path.join("static", filename))

# Generate audio prompts
prompts = {
    "welcome": "Welcome to Biryani Hub.",
    "ask_name": "Tell me your name.",
    "ask_email": "Please provide your email address.",
    "thank_you": "Thank you for registration."
}

for key, text in prompts.items():
    generate_audio_prompt(text, f"{key}.mp3")

# Clean transcribed text to allow only English letters, numbers, and basic punctuation
def clean_transcription(text):
    return re.sub(r"[^a-zA-Z0-9@.\s]", "", text)

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/transcribe", methods=["POST"])
def transcribe():
    if "audio" not in request.files:
        return jsonify({"error": "No audio file provided"}), 400

    audio_file = request.files["audio"]
    audio_path = os.path.join("static", "temp.wav")
    audio_file.save(audio_path)

    try:
        # Transcribe audio to text
        result = asr_model(audio_path, generate_kwargs={"language": "en"})
        transcribed_text = clean_transcription(result["text"])
        return jsonify({"text": transcribed_text})
    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug=True)