Spaces:
Sleeping
Sleeping
| from flask import Flask, request, jsonify | |
| import speech_recognition as sr | |
| from deep_translator import GoogleTranslator | |
| from gtts import gTTS | |
| import pygame | |
| import os | |
| app = Flask(__name__) | |
| recognizer = sr.Recognizer() | |
| microphone = sr.Microphone() | |
| audio_data = None | |
| translated_text_global = "" | |
| def start_recording(): | |
| global audio_data | |
| with microphone as source: | |
| recognizer.adjust_for_ambient_noise(source) | |
| audio_data = recognizer.listen(source) | |
| return "Recording started..." | |
| def stop_recording(): | |
| global audio_data, translated_text_global | |
| if audio_data is None: | |
| return jsonify({"recognizedText": "", "translatedText": "No recording found. Please try again."}) | |
| target_language = request.json.get('targetLanguage') | |
| try: | |
| text = recognizer.recognize_google(audio_data) | |
| translated_text = translate_text(text, target_language) | |
| translated_text_global = translated_text | |
| return jsonify({"recognizedText": text, "translatedText": translated_text}) | |
| except sr.UnknownValueError: | |
| return jsonify({"recognizedText": "", "translatedText": "Sorry, I could not understand your speech."}) | |
| except sr.RequestError as e: | |
| return jsonify({"recognizedText": "", "translatedText": f"Could not request results; {e}"}) | |
| def speak_translation(): | |
| global translated_text_global | |
| target_language = request.json.get('targetLanguage') | |
| if translated_text_global: | |
| tts = gTTS(text=translated_text_global, lang=target_language) | |
| tts.save("translated_audio.mp3") | |
| pygame.mixer.init() | |
| pygame.mixer.music.load("translated_audio.mp3") | |
| pygame.mixer.music.play() | |
| while pygame.mixer.music.get_busy(): | |
| pygame.time.Clock().tick(10) | |
| pygame.mixer.music.unload() | |
| os.remove("translated_audio.mp3") | |
| return "Speaking translated text..." | |
| else: | |
| return "No translated text available to speak." | |
| def get_supported_languages(): | |
| languages = GoogleTranslator().get_supported_languages(as_dict=True) | |
| return jsonify(languages) | |
| def translate_text(input_text, target_language): | |
| translator = GoogleTranslator(source='auto', target=target_language) | |
| translated = translator.translate(text=input_text) | |
| return translated | |
| if __name__ == '__main__': | |
| app.run(debug=True) | |