File size: 5,235 Bytes
3356369
 
 
 
dc74557
0e1d7d8
3356369
 
0e1d7d8
3356369
 
 
 
 
 
a1592a0
3356369
 
dc74557
b4c6ab5
3356369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7ceef69
 
 
 
3356369
 
 
 
 
 
 
dc74557
b4c6ab5
 
3356369
dc74557
 
b4c6ab5
dc74557
b4c6ab5
dc74557
 
 
 
 
 
 
 
 
 
 
 
 
 
b4c6ab5
dc74557
 
 
 
 
b4c6ab5
dc74557
 
 
 
 
 
b4c6ab5
dc74557
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b4c6ab5
dc74557
 
 
 
b4c6ab5
dc74557
 
b4c6ab5
dc74557
 
 
 
 
 
b4c6ab5
dc74557
 
0e1d7d8
dc74557
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import speech_recognition as sr
from googletrans import Translator
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)

recognizer = sr.Recognizer()
translator = Translator()

# Language settings mapping
language_mapping = {
    1: ('ta-IN', 'ta', 'en'),  # Tamil: Recognize Tamil and translate to English
    2: ('en-US', 'en', 'en'),  # English: Recognize English and translate to English
    3: ('hi-IN', 'hi', 'en')   # Hindi: Recognize Hindi and translate to English
}

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

@app.route("/translate", methods=["POST"])
def translate():
    # Get user input for language selection (1: Tamil, 2: English, 3: Hindi)
    user_input = int(request.form.get("language"))

    # Check if user input is valid
    if user_input in language_mapping:
        recognition_lang, src_lang, dest_lang = language_mapping[user_input]
        
        # Start speech recognition and process the audio
        with sr.Microphone() as source:
            recognizer.adjust_for_ambient_noise(source)
            audio = recognizer.listen(source)
            
            # Recognize speech in the selected language
            try:
                ori_text = recognizer.recognize_google(audio, language=recognition_lang)
                translated_text = translator.translate(ori_text, src=src_lang, dest=dest_lang)
                print(f"Translated Text: {translated_text.text}")
                return jsonify({"original": ori_text, "translation": translated_text.text})
            except Exception as e:
                return jsonify({"error": str(e)})

    else:
        return jsonify({"error": "Invalid input! Please enter 1, 2, or 3."})

if __name__ == "__main__":
    app.run(debug=True)



# from flask import Flask, request, jsonify
# import speech_recognition as sr

# app = Flask(__name__)

# @app.route('/')
# def index():
#     return '''
#         <!DOCTYPE html>
#         <html lang="en">
#         <head>
#             <meta charset="UTF-8">
#             <meta name="viewport" content="width=device-width, initial-scale=1.0">
#             <title>Speech Recognition with Python</title>
#         </head>
#         <body>
#             <h1>Speech Recognition with Python</h1>
#             <button onclick="startRecording()">Start Recording</button>
#             <div id="transcription"></div>
            
#             <script>
#                 function startRecording() {
#                     const button = document.querySelector('button');
#                     button.disabled = true;
#                     button.textContent = "Recording...";

#                     // Create a new form data object to send audio
#                     let formData = new FormData();
#                     navigator.mediaDevices.getUserMedia({ audio: true })
#                         .then(stream => {
#                             let mediaRecorder = new MediaRecorder(stream);
#                             mediaRecorder.start();

#                             mediaRecorder.ondataavailable = function(event) {
#                                 formData.append('audio', event.data);
#                                 fetch('/recognize', {
#                                     method: 'POST',
#                                     body: formData
#                                 })
#                                 .then(response => response.json())
#                                 .then(data => {
#                                     document.getElementById('transcription').textContent = data.transcript;
#                                     button.disabled = false;
#                                     button.textContent = "Start Recording";
#                                 })
#                                 .catch(err => {
#                                     console.error('Error during recognition:', err);
#                                     button.disabled = false;
#                                     button.textContent = "Start Recording";
#                                 });
#                             };
#                         })
#                         .catch(err => {
#                             console.error('Permission denied:', err);
#                             button.disabled = false;
#                             button.textContent = "Start Recording";
#                         });
#                 }
#             </script>
#         </body>
#         </html>
#     '''

# @app.route('/recognize', methods=['POST'])
# def recognize():
#     if 'audio' not in request.files:
#         return jsonify({'error': 'No audio file found in request'}), 400
    
#     audio_file = request.files['audio']
#     recognizer = sr.Recognizer()
    
#     try:
#         # Use SpeechRecognition to process the audio
#         with sr.AudioFile(audio_file) as source:
#             audio = recognizer.record(source)
#             transcript = recognizer.recognize_google(audio)  # Google Web Speech API
#             return jsonify({'transcript': transcript})
    
#     except Exception as e:
#         return jsonify({'error': str(e)}), 500

# if __name__ == '__main__':
#     app.run(debug=True)