Spaces:
Sleeping
Sleeping
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 | |
} | |
def index(): | |
return render_template("index.html") | |
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) | |