File size: 1,833 Bytes
b9d31ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import speech_recognition as sr
from deep_translator import GoogleTranslator
from gtts import gTTS
import os

# Recognize and translate audio to Chinese
def recognize_and_translate(audio_file_path):
    # Use the file path directly from Gradio input
    recognizer = sr.Recognizer()
    with sr.AudioFile(audio_file_path) as source:
        audio_data = recognizer.record(source)
        try:
            text = recognizer.recognize_google(audio_data)
        except sr.UnknownValueError:
            return "Could not understand the audio."
        except sr.RequestError:
            return "Network error. Please try again."

    # Translate the recognized text to Chinese
    translated_text = GoogleTranslator(source="en", target="zh-CN").translate(text)
    return f"Recognized: {text}\nTranslated to Chinese: {translated_text}"

# Translate Chinese input to English and convert to speech
def translate_to_english(chinese_text):
    # Translate Chinese text to English
    translated_text = GoogleTranslator(source="zh-CN", target="en").translate(chinese_text)

    # Convert the translated text to speech
    tts = gTTS(text=translated_text, lang="en", slow=False)
    tts.save("output.mp3")

    return translated_text, "output.mp3"

# Create Gradio interfaces
interface1 = gr.Interface(
    fn=recognize_and_translate,
    inputs=gr.Audio(type="filepath"),
    outputs="text",
    title="Speech Recognition and Translation to Chinese",
)

interface2 = gr.Interface(
    fn=translate_to_english,
    inputs="text",
    outputs=["text", "audio"],
    title="Translate Chinese to English and Play",
)

# Combine both interfaces into a tabbed layout
app = gr.TabbedInterface([interface1, interface2], ["Speech to Chinese", "Chinese to English"])

# Launch the app
if __name__ == "__main__":
    app.launch()