speechtotext / main.py
Ansaribinhyder's picture
Updated requirements
7ceef69
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)