繁体   English   中英

多语言翻译项目 Python

[英]Multi Language Translator Project In Python

我是 python 编程语言的新手,我目前正在 python 学习编码。目前我正在 python 开发一个名为 Translator(Multi-Lang) 的项目,它将 function 与我们的谷歌翻译器相同。 我已经完成了项目的一半,它将以任何语言编写的文本翻译成另一种语言,前提是 tkinter 出现问题,我无法输入其他语言的任何文本。 现在我正在研究 Speech to Text 模块,它将接受所选语言的语音,然后显示在文本框中。

我正在显示下面的代码。 目前我被困在一个地方,当用户选择要说的语言时,当他说话时,它应该自动转换为所选语言,然后显示在文本框中。 我不知道该怎么做。 如果有人可以通过编写这段代码尽快帮助我,那将非常有帮助。

代码:

import tkinter as tk
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from tkinter import filedialog
from tkinter.messagebox import showinfo
from tkinter.ttk import Combobox
from googletrans import Translator, LANGUAGES
import pyttsx3
import os
import speech_recognition as sr

root=Tk()
root.title("TEXT TO SPEECH")
root.geometry("1280x720")
root.resizable(False,False)
root.configure(bg="#305065")

#Translator_Code

def translate():
    lang_1=sor_txt.get(1.0,END)
    cl=choose_lang.get()

    if lang_1 == '':
        messagebox.showerror("TEXT TO SPEECH","Enter the text to translate!")
    else:
        dest_txt.delete(1.0,END)
        translator=Translator()
        output=translator.translate(lang_1,dest=cl)
        dest_txt.insert('end',output.text)

def clear():
    sor_txt.delete(1.0,'end')
    dest_txt.delete(1.0,'end')



#Frame
frame1=Frame(root,width=1280,height=720,relief=RIDGE,borderwidth=5,bg='#305065')
frame1.place(x=0,y=0)

#Top Text
Label(root,text="TEXT TO SPEECH",font="Helvetica 20 bold",fg="white",bg='#305065').pack(pady=10)

a=tk.StringVar()
auto_select=ttk.Combobox(frame1,width=27,textvariable=a,state='readonly',font=('verdana',10,'bold'))
auto_select['values'] = (

    'Afrikaans',
    'Albanian',
    'Amharic',
    'Arabic',
    'Armenian',
    'Azerbaijani',
    'Basque',
    'Belarusian',
    'Bengali',
    'Bosnian',
    'Bulgarian',
    'Batalan',
    'Cebuano',
    'Chichewa',
    'Chinese (simplified)',
    'Chinese (traditional)',
    'Corsican',
    'Croatian',
    'Czech',
    'Danish',
    'Dutch',
    'English',
    'Esperanto',
    'Estonian',
    'Filipino',
    'Finnish',
    'French',
    'Frisian',
    'Galician',
    'Georgian',
    'German',
    'Greek',
    'Gujarati',
    'Gaitian creole',
    'Hausa',
    'Hawaiian',
    'Hebrew',
    'Hebrew',
    'Hindi',
    'Hmong',
    'Hungarian',
    'Icelandic',
    'Igbo',
    'Indonesian',
    'Irish',
    'Italian',
    'Japanese',
    'Javanese',
    'Kannada',
    'Kazakh',
    'Khmer',
    'Korean',
    'Kurdish (kurmanji)',
    'Kyrgyz',
    'Lao',
    'Latin',
    'Latvian',
    'Lithuanian',
    'Luxembourgish',
    'Macedonian',
    'Malagasy',
    'Malay',
    'Malayalam',
    'Maltese',
    'Maori',
    'Marathi',
    'Mongolian',
    'Myanmar (burmese)',
    'Nepali',
    'Norwegian',
    'Odia',
    'Pashto',
    'Persian',
    'Polish',
    'Portuguese',
    'Punjabi',
    'Romanian',
    'Russian',
    'Samoan',
    'Scots gaelic',
    'Serbian',
    'Sesotho',
    'Shona',
    'Sindhi',
    'Sinhala',
    'Slovak',
    'Slovenian',
    'Somali',
    'Spanish',
    'Sundanese',
    'Swahili',
    'Swedish',
    'Tajik',
    'Tamil',
    'Telugu',
    'Thai',
    'Turkish',
    'Ukrainian',
    'Urdu',
    'Uyghur',
    'Uzbek',
    'Vietnamese',
    'Welsh',
    'Xhosa',
    'Yiddish',
    'Yoruba',
    'Zulu',
    )

auto_select.place(x=150,y=60)
#auto_select.current(0)

l=tk.StringVar()

choose_lang=ttk.Combobox(frame1,width=27,textvariable=l,state='readonly',font=('verdana',10,'bold'))
choose_lang['values'] = (
    'Afrikaans',
    'Albanian',
    'Amharic',
    'Arabic',
    'Armenian',
    'Azerbaijani',
    'Basque',
    'Belarusian',
    'Bengali',
    'Bosnian',
    'Bulgarian',
    'Batalan',
    'Cebuano',
    'Chichewa',
    'Chinese (simplified)',
    'Chinese (traditional)',
    'Corsican',
    'Croatian',
    'Czech',
    'Danish',
    'Dutch',
    'English',
    'Esperanto',
    'Estonian',
    'Filipino',
    'Finnish',
    'French',
    'Frisian',
    'Galician',
    'Georgian',
    'German',
    'Greek',
    'Gujarati',
    'Gaitian creole',
    'Hausa',
    'Hawaiian',
    'Hebrew',
    'Hebrew',
    'Hindi',
    'Hmong',
    'Hungarian',
    'Icelandic',
    'Igbo',
    'Indonesian',
    'Irish',
    'Italian',
    'Japanese',
    'Javanese',
    'Kannada',
    'Kazakh',
    'Khmer',
    'Korean',
    'Kurdish (kurmanji)',
    'Kyrgyz',
    'Lao',
    'Latin',
    'Latvian',
    'Lithuanian',
    'Luxembourgish',
    'Macedonian',
    'Malagasy',
    'Malay',
    'Malayalam',
    'Maltese',
    'Maori',
    'Marathi',
    'Mongolian',
    'Myanmar (burmese)',
    'Nepali',
    'Norwegian',
    'Odia',
    'Pashto',
    'Persian',
    'Polish',
    'Portuguese',
    'Punjabi',
    'Romanian',
    'Russian',
    'Samoan',
    'Scots gaelic',
    'Serbian',
    'Sesotho',
    'Shona',
    'Sindhi',
    'Sinhala',
    'Slovak',
    'Slovenian',
    'Somali',
    'Spanish',
    'Sundanese',
    'Swahili',
    'Swedish',
    'Tajik',
    'Tamil',
    'Telugu',
    'Thai',
    'Turkish',
    'Ukrainian',
    'Urdu',
    'Uyghur',
    'Uzbek',
    'Vietnamese',
    'Welsh',
    'Xhosa',
    'Yiddish',
    'Yoruba',
    'Zulu',

    )

choose_lang.place(x=850,y=60)
#choose_lang.current(0)
               
#icon
image_icon=PhotoImage(file="speak.png")
root.iconphoto(False,image_icon)

#Textboxes & Buttons
sor_txt=Text(frame1,width=40,height=11,borderwidth=5,relief=RIDGE,font=('verdana',15))
sor_txt.place(x=30,y=110)
dest_txt=Text(frame1,width=40,height=11,borderwidth=5,relief=RIDGE,font=('verdana',15))
dest_txt.place(x=710,y=110)

button_change=Button(frame1,text="TRANSLATE",relief=RAISED,borderwidth=2,font=('verdana',10,'bold'),bg='#248aa2',cursor="hand2",command=translate)
button_change.place(x=590,y=430,width=100,height=40)
button_clear=Button(frame1,text="CLEAR",relief=RAISED,borderwidth=2,font=('verdana',10,'bold'),bg='#248aa2',cursor="hand2",command=clear)
button_clear.place(x=590,y=480,width=100,height=40)

#speech to text
def speak():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print('Speak Anything')
        audio=r.listen(source)
        print('Done!')
        try:
            result = r.recognize_google(audio)
            print(result)
        except sr.RequestError:
            exit("API is unreachable")
        except sr.UnknownValueError:
            exit("Unable to recognise speech! Were you speaking?")

if (l.get())==('Hindi'):
    sor_text.insert('end',(r.recognize_google(audio,language='en-hi')))


def lang_change(event):
    showinfo(
        title="Result",
        message=f'You selected {a.get()}!'
    )
auto_select.bind('<<ComboboxSelected>>', lang_change)

  
imageicon=PhotoImage(file="speak.png")
speak=Button(root,text="Speak",compound=LEFT,image=imageicon,width=130,font="arial 14 bold",command=speak)
speak.place(x=230,y=430)


root.mainloop()

我用标题分隔了每个模块 function。 语音转文本模块如下。 在接下来的几天里,我将对这个项目提出更多疑问。

我想你配置的是语言,而不是 lang 编码,你可以找到土地编码并通过以下方式使用它: https://cloud.google.com/translate/docs/languages

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM