簡體   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